05. 거래 (Trade)
상위 문서:
게임기획코어.md최종 업데이트: 2026-08-01 · 상태: 경제 골격 확정 · 수치 미정 바뀌면 갱신:게임UI·게임기획코어·기획평가·아이템·자원채취·작업슬롯진행 및 성장·캐릭터·퀘스트·특성
이 게임의 유일한 경쟁 축이자, 승패 조건이 없는 게임에서 장기 목표를 대신하는 시스템이다.
⚠️ 2026-08-01 대폭 갱신. 비어 있던 화폐 순환(faucet ↔ sink)이 확정됐다. 이전 상태는 "버는 길만 있고 쓰는 길이 없다"(R2 🔴)였다.
1. 확정 사항
| # | 항목 | 확정 내용 |
|---|---|---|
| 1 | faucet은 채취 하나뿐 | 재화가 새로 생기는 지점은 자원채취뿐이다 |
| 2 | 골드화 경로 = 즉시 판매 · 거래소 판매 | → 3.1 |
| 3 | 거래 방식 = D안 (자유 거래 + 가격 밴드) | → 2장 |
| 4 | sink 3종 | 거래 수수료 · 슬롯 확장권 · 가챠 티켓 → 3.2 |
| 5 | 상점은 골드 상점 | 현금 상품을 두지 않는다. BM은 여전히 미정 |
| 6 | 퀘스트는 골드를 직접 주지 않는다 | 두 번째 faucet을 만들지 않는다 → 퀘스트 4장 |
| 7 | 슬롯 확장 = 레벨(상한) × 골드(구매) | 이중 게이트 → 3.3 |
| 8 | 모든 아이템은 거래소 등록이 가능하다 | 예외를 두려면 Tradable 컬럼이 필요하다 |
CurrencyType.Gold = 1은 이미 구현돼 있다. 없던 것은 화폐가 아니라 버는 길과 쓰는 길이었다.
2. 거래 방식 — D안 확정
| 방식 | 설명 | 판정 |
|---|---|---|
| A. 자유 거래소 | 유저가 가격 지정, 최저가 매칭 | 봇·시세 조작·인플레 전부 발생 |
| B. 주문서(오더북) | 매수/매도 호가 매칭 | 방치형 규모에 과하다 |
| C. NPC 고정가 | 유저 간 직접 거래 없음 | "유저 간 경쟁"이 사라져 확정 기획 위반 |
| D. A + 가격 상하한 | 자유 거래 + 기준가 대비 밴드 제한 | ✅ 채택 |
D를 고른 이유: 확정 기획이 요구하는 "유저 간 경쟁"을 지키면서 조작을 구조적으로 억제한다. 게다가 하한은 즉시 판매가가 공짜로 만들어 준다(3.1) — 밴드 설계의 절반이 이미 풀린다.
3. 경제 구조
3.1 재화 흐름 (확정)
[faucet] 채취 ──→ 아이템 ──┬─→ 즉시 판매 ──────→ 골드 ──┐
├─→ 거래소 판매 ────→ 골드 ──┤
└─→ 캐릭터 먹이기 (자원 sink) │
↓
[sink] 거래 수수료 · 슬롯 확장권 · 가챠 티켓
즉시 판매 — 낮은 등급의 출구
거래소 등록밖에 출구가 없으면 낮은 등급이 갈 곳이 없다. 아무도 사지 않아 인벤토리만 찬다.
| 가치 | 처분 |
|---|---|
| 낮음 (Common·Uncommon) | 즉시 판매 → 골드. 거래소에 올려도 팔리지 않는다 |
| 높음 (Rare~Mythic) | 즉시 판매 또는 거래소 등록 — 유저 간 경쟁의 대상 |
- 기준가는
Item.xlsx의BasePrice컬럼이다 → 아이템 5장. - 즉시 판매가가 거래소 가격의 바닥이 된다. 누구도 즉시 판매가보다 싸게 올리지 않으므로 가격 하한이 자동으로 생긴다. 시세 조작 방어에 유리하다.
3.2 sink 3종 (확정)
즉시 판매는 골드 faucet이다. 버는 길을 열면서 쓰는 길을 안 열면 골드만 무한 누적된다.
| # | sink | 강도 | 성격 |
|---|---|---|---|
| ① | 거래 수수료 (등록비 + 판매 수수료) | 상시·완만 | 자전거래가 손해가 되도록 설계한다 |
| ② | 상점 — 작업슬롯 확장권 | 강함 | 슬롯은 곧 재화 생성량의 배수다 → 3.3 |
| ③ | 상점 — 가챠 티켓 | 지속 | 캐릭터 획득과 연결 (⚠️ 획득 경로 자체는 미정) |
sink 없는 경제는 예외 없이 인플레로 붕괴한다. 게다가 방치형이라 띄워 둔 내내 faucet이 돈다. 세 개 중 어느 하나도 "나중에 붙이는 것"으로 미루지 않는다.
3.3 슬롯 확장 = 이중 게이트 (2026-08-01 확정)
계정 레벨이 상한을 열고, 골드로 실제 구매한다.
| 항목 | 값 | 비고 |
|---|---|---|
| 시작 슬롯 | 2개 | 1개면 첫날에 "여러 개를 굴린다"는 이 게임의 질문이 보이지 않는다 |
| 상한 | 8개 | UI 목업이 8개를 상정 |
| 해금 | 계정 레벨 = 자물쇠 / 골드 = 열쇠 | 둘 다 충족해야 늘어난다 |
| 레벨별 상한 곡선 · 구매 비용 곡선 | ❌ 미정 (일감 T-012) | 수치는 테스트용 출발점이며 구조는 바꾸지 않는다 |
왜 둘 다인가:
| 한쪽만 쓰면 | 문제 |
|---|---|
| 레벨만 | 슬롯 확장이 sink가 아니게 된다. 골드가 갈 곳이 하나 줄어든다 |
| 골드만 | 골드 → 슬롯 → 골드 자기가속이 폭주한다. 상위권이 기하급수로 벌어진다 |
⚠️ 계정 레벨 곡선과 슬롯 해금 곡선은 함께 잡는다 → 캐릭터 3.2 자기가속 루프.
3.4 봇·다계정 대응
방치형 + 거래소는 봇에게 이상적인 환경이다(조작 없이 재화가 생성된다).
| 위험 | 대응 |
|---|---|
| 다계정 파밍 | 계정당 채취 상한, 계정 생성 제한 |
| 시세 조작 | 가격 밴드(D안), 1인 등록 수량 제한 |
| RMT | 거래 로그 감사, 이상 거래 탐지 |
| 자전거래 | 수수료를 자전거래가 손해가 되도록 설계 (3.2 ①) |
4. 데이터 설계
거래소는 테이블(정적 데이터)이 아니라 DB(동적 데이터) 다.
| DB 테이블(제안) | 용도 | 비고 |
|---|---|---|
t_trade_listing |
등록된 판매 건 | 판매자, ItemTID, 수량, 단가, 등록시각, 상태 |
t_trade_history |
체결 내역 | 시세 산출·감사 로그 겸용 |
t_user_wallet |
화폐 잔액 |
Server/Shared/game.sqlite3에 STRICT 테이블로 만들고 모든 컬럼에 주석을 단다
(sqlite-sql-creator 스킬). 소유를 이름에 드러낸다 — 유저 소유는 t_user_*.
엑셀로 갈 것: 수수료율 · 가격 밴드 배수 · 등록 수량 상한 · 즉시 판매가 비율 · 슬롯 확장 비용. 전부 밸런스 상수다.
Item.xlsx에 BasePrice 추가가 선행 조건이다 → 아이템 5장.
5. 서버 / 클라이언트 책임
| 책임 | 주체 |
|---|---|
| 등록·취소·구매 전 과정 | 서버 (전부) |
| 즉시 판매 정산 | 서버 |
| 잔액·재고 검증 | 서버 |
| 동시 구매 경합 처리 | 서버 (트랜잭션 필수) |
| 시세 계산 | 서버 |
| 목록·시세 차트 표시 | 클라이언트 |
거래는 실질 가치가 오가는 지점이다. 클라이언트 계산 결과를 어떤 경우에도 신뢰하지 않는다. 동시 구매(같은 매물을 두 명이 동시에)는 반드시 트랜잭션으로 막는다.
6. 결정 필요 (Open Questions)
- 즉시 판매가는
BasePrice의 몇 %인가? (거래소 하한과의 관계) - 거래 수수료율은? (등록비 / 판매 수수료 각각)
- 가격 밴드의 상한 배수는? (하한은 즉시 판매가가 정한다)
- 1인 등록 수량·건수 상한은?
- 시세를 유저에게 공개하는가? (차트 제공 여부)
- 상점 품목·가격은? (골드 상점 방향은 잡혔으나 수치가 전부 미정)
- 거래 불가 아이템이 있는가? →
Tradable컬럼 · 아이템 - 수익화(BM)와 거래소가 연결되는가? 연결 시 확률형 아이템 고지 의무 검토 필요
해소됨 (2026-08-01):
- 거래 방식 — ✅ D안(자유 거래 + 가격 밴드)
- 화폐 sink — ✅ 3종 확정 (거래 수수료 · 슬롯 확장권 · 가챠 티켓)
- 골드 획득 경로 — ✅ 즉시 판매 + 거래소 판매. 채취가 유일한 faucet
- 상점의 정체 — ✅ 골드 상점 (현금 상품 없음)
- 슬롯 확장 수단 — ✅ 레벨(상한) × 골드(구매) 이중 게이트