미션 / NPC / 상인 작성완료구현밸런싱미완료
본 문서는 로비의 메타 콘텐츠 — NPC 운영, 미션 시스템, 상인 거래 — 를 정의한다. 모두 로비에서 일어나는 행동이며 런 전후의 자산 흐름을 만든다.
플레이 흐름
섹션 제목: “플레이 흐름”flowchart LR
subgraph LOBBY [로비]
NPC[NPC 상호작용]
MENU{메뉴 선택}
TALK[대화]
TRADE[상인 거래]
MISSION[미션]
end
subgraph RUN [런]
PROGRESS[미션 카운트 누적<br/>Kill · Item 수집]
end
subgraph COMPLETE [완료]
HAND[미션 반납 · 보상 수령]
end
NPC --> MENU
MENU --> TALK & TRADE & MISSION
MISSION --> PROGRESS
PROGRESS -->|탈출 성공| HAND
PROGRESS -->|사망 · 실패| ITEMLOSS[Item 미션 아이템 손실<br/>Kill 카운트 유지]
HAND --> NPC
classDef lobby fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#075985
classDef run fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#78350f
classDef ok fill:#bbf7d0,stroke:#16a34a,stroke-width:2.5px,color:#14532d
classDef bad fill:#fecaca,stroke:#dc2626,stroke-width:2.5px,color:#7f1d1d
classDef decide fill:#e9d5ff,stroke:#9333ea,stroke-width:2.5px,color:#581c87
class NPC,TALK,TRADE,MISSION lobby
class MENU decide
class PROGRESS run
class HAND ok
class ITEMLOSS bad 핵심 원칙
섹션 제목: “핵심 원칙”| 원칙 | 규칙 | 의미 |
|---|---|---|
| NPC = 다기능 컨테이너 | 한 NPC가 대화·상인·미션 중 여러 기능을 동시에 가진다 | 복합 NPC가 자유롭게 정의된다 |
| 데이터 주도형 NPC | ID/태그 기반 시트 행으로 NPC를 정의한다 | 코드 수정 없이 기획자가 NPC를 추가 가능 |
| 미션 = 카운트 누적 | Kill 카운트는 사망해도 유지, Item은 탈출 실패 시 손실 | 미션 종류에 따라 손실 규칙이 다르다 |
| 거래 = 양방향 정산 | 양측 제안 칸 + 차액 버튼 방식 | 매매 조건을 동시에 협상하는 구조 |
| 평판이 가격을 결정 | 매입·판매 모두 평판 5단계 보정 | 관계 투자가 장기 경제 이득으로 이어진다 |
1. NPC
섹션 제목: “1. NPC”1.1 운영 방식
섹션 제목: “1.1 운영 방식”NPC는 ID/태그 기반 데이터 주도형으로 운영한다.
- NPC 마스터 시트에 행 단위로 NPC 정의 (
npc_blacksmith_01같은 문자열 ID). - 기능(상인·미션·대화·수리·크래프팅)은 시트 컬럼 또는 태그로 표현.
- 코드의
NPCTypeenum은 마이그레이션 후 폐기 또는 카테고리 분류 보조 용도로만 유지.
1.2 현재 운영 NPC 4명
섹션 제목: “1.2 현재 운영 NPC 4명”| ID (가칭) | 이름 | 시설 | 핵심 기능 |
|---|---|---|---|
npc_blacksmith | 대장장이 | 대장간 | 수리·크래프팅·모루(파츠) |
npc_peddler | 보부상 | 잡화상 | 잡템 매매 |
npc_herbalist | 약초상 | 약초방 | 치료·회복 거래 |
npc_innkeeper | 주막 아줌마 | 주막(아지트) | 창고·휴식·도깨비 복귀 |
추가 NPC(미션 전용, 진영별)는 시트에 행을 추가하는 방식으로 자유롭게 확장된다.
1.3 NPC 데이터 컬럼
섹션 제목: “1.3 NPC 데이터 컬럼”| 컬럼 | 의미 |
|---|---|
npcID | NPC 고유 식별자 (예: npc_blacksmith_01) |
displayName | 표시명 (현지화 키) |
sprite | UI 일러스트 자산 키 |
tags[] | 기능 태그 (merchant, mission_giver, repair, craft, storage 등) |
merchantBuyCategories[] | 매입 가능 카테고리 |
merchantSellPoolID | 판매 후보 풀 ID |
reputationCurveID | 평판 곡선 ID |
lines[] | 인사·기본 대사 텍스트 풀 |
1.4 NPC 화면 흐름
섹션 제목: “1.4 NPC 화면 흐름”상호작용 시 메뉴 등장. NPC 보유 기능에 따라 선택적으로 표시.
대화 / 상인 / 미션 / 떠나기2. 미션
섹션 제목: “2. 미션”2.1 미션 종류
섹션 제목: “2.1 미션 종류”| 코드 | 의미 | 카운트 유지 규칙 |
|---|---|---|
Kill | 특정 몬스터 처치 | 사망·탈출 실패해도 누적 유지 |
Item | 특정 아이템 수집·반납 | 탈출 실패 시 아이템과 함께 손실 |
2.2 미션 데이터 컬럼
섹션 제목: “2.2 미션 데이터 컬럼”| 컬럼 | 의미 |
|---|---|
id | 미션 식별자 |
npcID | 제공 NPC ID |
missionType | Kill / Item |
missionTargetIDs[] | 클리어 대상 ID 배열 |
missionCounts[] | 대상별 요구 수치 배열 |
rewardType | 보상 종류 (Item만 현재 코드에 정의) |
rewardTargetIDs[], rewardCounts[], rewardItemGrades[] | 보상 상세 |
2.3 미션 등장 조건
섹션 제목: “2.3 미션 등장 조건”조건 그룹 3개 (condition1~condition3). 결합 규칙은 그룹 안은 AND, 그룹끼리는 OR.
예: condition1 = [1001, 1002], condition2 = [1005] → (1001 AND 1002) OR 1005.
2.4 미션 상태
섹션 제목: “2.4 미션 상태”| 상태 | 표시 | 의미 |
|---|---|---|
| 미등장 | 리스트에 없음 | 조건 미충족 |
| 미수령 | 미션명 | 조건 충족, 미수락 |
| 진행중 | 미션명 (진행중) | 수락 후 완료 전 |
| 완료 | 미션명 (완료) | 클리어 후 보상 수령 가능 |
2.5 미션 진행 흐름
섹션 제목: “2.5 미션 진행 흐름”조건 충족 → 미수령 → NPC 상호작용 수락 → 진행중런 중 카운트 누적 → 완료 조건 충족NPC 상호작용 → 보상 수령 → 완료- Kill 카운트는 런 종료 후에도 누적으로 유지된다.
- Item 미션은 탈출 성공 시 NPC에 반납 가능한 인벤토리 상태가 된다.
3. 상인 (거래)
섹션 제목: “3. 상인 (거래)”3.1 화폐
섹션 제목: “3.1 화폐”- 단위: 단일 통화 “푼”. 다단위 환산 미운영.
- 인벤토리 점유: 1칸 스택형 (
MoneyTableData.stack). - 거래 사용 범위: 휴대 내 화폐만 사용. 창고 화폐는 로비에서 휴대로 이동 후 사용.
3.2 매입 가격 산식
섹션 제목: “3.2 매입 가격 산식”매입가 = 기준가(Price) × 상태 × 평판| 항 | 의미 |
|---|---|
Price | 아이템 테이블 기준가 |
상태 | 0.5 + (0.5 × 내구도%) |
평판 | 5단계 0.8~1.2 |
Price가 없는 아이템(퀘스트 아이템 등)은 거래 불가.
3.3 판매 가격 산식
섹션 제목: “3.3 판매 가격 산식”판매가 = Price × 이윤(기본 1.5) × 평판3.4 상점 진열 — 런 단위 재추첨
섹션 제목: “3.4 상점 진열 — 런 단위 재추첨”- 상인별 판매 가능 후보 풀을 시트에 정의 (카테고리·태그·등급 필터).
- 플레이어가 런 종료 후 로비로 복귀할 때마다 상인 보유 아이템 재추첨.
- 평판 단계에 따른 상위 등급 노출 확률 보정.
3.5 거래 UI
섹션 제목: “3.5 거래 UI”상인 앞에서 [F] 키 → 거래 UI 오픈.
| 영역 | 내용 |
|---|---|
| 상인 보유 리스트 | 좌측 — 상인이 팔 수 있는 아이템 |
| 구매 칸 | 좌측 하단 — 플레이어가 사려는 아이템 |
| 캐릭터 보유 리스트 | 우측 — 플레이어 휴대 + 창고 |
| 판매 칸 | 우측 하단 — 플레이어가 팔 아이템 |
| 보관함 탭 | 창고 인벤토리 (참조 전용, 거래 직접 사용 불가) |
| 거래하기 버튼 | 양측 차액 정산 |
차액 표시: 구매가 > 판매가 → “N푼 주기”, 구매가 < 판매가 → “N푼 받기”.
입력: 우클릭으로 보유 ↔ 거래 칸 이동. X키로 취소 (변경 전 상태로 복귀).
3.6 수리
섹션 제목: “3.6 수리”- 수리 전담: 대장장이만 수리 가능.
- 수리 비용: 미정 — 내구도·고장 시스템과 함께 기획 필요.
- 크래프팅(파츠 조립)은 모루(
Anvil)에서 운영 — 파츠 시스템 참조.
연결 시스템
섹션 제목: “연결 시스템”| 시스템 | 연결 지점 |
|---|---|
| 런 구조 | 출정 전 준비 단계에서 NPC 상호작용. |
| 인벤토리·창고 | 거래·모루·미션이 같은 InventoryInfo 구조 재사용. |
| 아이템·루팅·드랍 | Item 미션 대상 아이템 ID 매칭. |
| 몬스터 AI | Kill 미션 대상 몬스터 ID 매칭. |
| 파츠 | 모루 크래프팅이 상인 시스템과 분리 운영. |
데이터 시트 매핑
섹션 제목: “데이터 시트 매핑”| 영역 | 시트 / DTO |
|---|---|
| NPC 마스터 | (추후 ID/태그 기반 시트 추가 예정) |
| 미션 정보 | MissionInfoTableSheet |
| 미션 등장 조건 | MissionConditionTableSheet |
| 상인 판매 리스트 | 상인별 시트 (예정) |
열린 질문
섹션 제목: “열린 질문”- 보상
Trigger(맵/NPC/콘텐츠 해금) 도입 시점. - 수리 비용 산식.
- 평판 컨텐츠 자체 미존재 — 평판 전이 조건은 평판 컨텐츠 추가 시 함께 정의.