최종 갱신 (KST)

GameDesign/design/trade/README.md

05. 거래 (Trade)

상위 문서: 게임기획코어.md 상태: 경제 골격 확정 · 즉시 판매 구현 완료 · 거래소(자원 수량 구매)·경매장(장비·캐릭터 즉시구매) 서버 구현 · 캐릭터·장비 즉시 판매(#47) (T-094 · T-091) · 수치는 테스트값 바뀌면 갱신: 게임UI · 게임기획코어 · 기획평가 · 아이템 · 우편 · 자원채취 · 작업슬롯 진행 및 성장 · 캐릭터 · 퀘스트 · 해금

이 게임의 유일한 경쟁 축이자, 승패 조건이 없는 게임에서 장기 목표를 대신하는 시스템이다.

⚠️ 2026-08-01 대폭 갱신. 비어 있던 화폐 순환(faucet ↔ sink)이 확정됐다. 이전 상태는 "버는 길만 있고 쓰는 길이 없다"(R2 🔴)였다.


1. 확정 사항

# 항목 확정 내용
1 faucet은 채취 하나뿐 재화가 새로 생기는 지점은 자원채취뿐이다. 예외는 운영 우편의 골드 첨부 하나 — 운영 판단으로 가끔 나가는 지급이라 상시 faucet이 아니다
2 골드화 경로 = 즉시 판매 · 거래소 판매 → 3.1
3 거래 방식 = D안 (자유 거래 + 가격 밴드) → 2장
4 sink 3종 거래 수수료 · 슬롯 해금(골드) · 가챠 비용(골드) → 3.2
5 상점은 골드 상점 현금 상품을 두지 않는다. 유료 재화도 없다(다이아 폐지 2026-09-28) — 과금은 게임 밖(DLC · 스팀 마켓 수수료)
6 퀘스트는 골드를 직접 주지 않는다 두 번째 faucet을 만들지 않는다 → 퀘스트 4장
7 슬롯 확장 = 골드 단독 계정 레벨 게이트는 폐기(2026-09-30 · #43) → 3.3
8 모든 아이템은 거래소 등록이 가능하다 예외를 두려면 Tradable 컬럼이 필요하다
9 자원은 거래소, 장비는 경매장 거래소는 원하는 수량을 최저가부터 산다(로스트아크식). 경매장은 매물 하나를 통째로 산다. 입찰은 두지 않는다 (2026-09-24) → 4장
10 등록비는 만료면 환급, 취소면 미환급 방치하다 만료돼도 손해가 없다(P3). 등록·취소를 반복하는 시세 교란만 비용을 문다 (2026-09-23)
11 거래소에서 나오는 물건·대금은 전부 우편 구매한 물건 · 판매 대금 · 취소·만료 반환 → 우편 1장

골드 잔액(User.Gold)은 이미 구현돼 있다. 없던 것은 화폐가 아니라 버는 길과 쓰는 길이었다.


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장.
  • 캐릭터·장비 개체도 즉시 판매된다 (2026-10-01 · #47). 판매가는 CharacterTable·EquipTable의 BasePrice × 같은 비율. 착용 중인 장비 · 배치됐거나 장비를 낀 캐릭터 · 마지막 남은 캐릭터는 팔 수 없다.
  • 즉시 판매가 = BasePrice의 100%다 (2026-09-02 확정). 값은 Constants.xlsx의 SellRatePermille(천분율, 1000 = 100%) 한 곳에 있다.
  • 즉시 판매가가 거래소 가격의 바닥이 된다. 누구도 즉시 판매가보다 싸게 올리지 않으므로 가격 하한이 자동으로 생긴다. 시세 조작 방어에 유리하다.
  • ✅ 서버 구현 완료 (2026-09-02, T-028) — C_ItemSellRequest/S_ItemSellResponse. 종류 목록을 한 번에 받고, 한 종류라도 모자라면 전부 거절한다. 인벤토리 차감과 골드 지급은 한 트랜잭션이다 — 갈라지면 아이템만 사라진다.

3.2 sink 3종 (확정)

즉시 판매는 골드 faucet이다. 버는 길을 열면서 쓰는 길을 안 열면 골드만 무한 누적된다.

# sink 강도 성격
① 거래 수수료 (등록비 + 판매 수수료) 상시·완만 자전거래가 손해가 되도록 설계한다
② 슬롯 해금(골드) — 잠긴 칸에서 직접 연다, 상점 품목이 아니다 (2026-09-16) 강함 슬롯은 곧 재화 생성량의 배수다 → 3.3 · 해금 4.1
③ 가챠 비용 — 골드 직접 지속 캐릭터 획득 경로 (2026-09-02 확정) → 캐릭터 5.1 · 장비 뽑기 3풀(2026-09-19) → 5.1.1

sink 없는 경제는 예외 없이 인플레로 붕괴한다. 게다가 방치형이라 띄워 둔 내내 faucet이 돈다. 세 개 중 어느 하나도 "나중에 붙이는 것"으로 미루지 않는다.

3.3 슬롯 확장 = 골드 단독 (2026-08-01 확정 · 2026-09-30 개정)

칸마다 골드로 산다. 처음에는 계정 레벨(상한) × 골드(구매)의 이중 게이트였으나, 2026-09-30 계정 레벨 게이트를 뺐다(#43).

항목 값 비고
시작 슬롯 2개 1개면 첫날에 "여러 개를 굴린다"는 이 게임의 질문이 보이지 않는다
상한 8개 UI 목업이 8개를 상정
해금 칸마다 UnlockTable 행 — 골드 + 선행 칸. AccountLevel은 0(조건 없음)으로 확정 → 해금 4.1 유저의 해금 행동으로 연다
골드 값 ✅ 8칸까지 약 한 달 곡선(3,000 → 10,000,000, 9cd5611) 하루 8시간 가동 · 번 골드의 절반을 슬롯에 쓴다는 가정. 수치는 테스트값이다

왜 골드 단독인가 (2026-09-30):

이중 게이트를 둔 이유 다시 보니
골드만이면 골드 → 슬롯 → 골드 자기가속이 폭주한다 계정 레벨도 슬롯이 버는 경험치로 오른다 — 레벨 게이트는 자기가속을 끊지 못하고 늦출 뿐이다
  • 속도 조절은 골드 곡선 하나로 한다 — 칸마다 약 10배씩 비싸진다.
  • 외부 골드 유입(부계정)은 거래 최소 계정 레벨로 막는다 (일감 T-012).

⚠️ 슬롯 해금 골드 곡선은 경제 총량과 함께 잡는다 → 캐릭터 3.2 자기가속 루프.

3.4 봇·다계정 대응

방치형 + 거래소는 봇에게 이상적인 환경이다(조작 없이 재화가 생성된다).

위험 대응
다계정 파밍 계정당 채취 상한, 계정 생성 제한
시세 조작 가격 밴드(D안), 1인 판매 중 매물 상한(4장) · 검색 빈도 제한
RMT 거래 로그 감사, 이상 거래 탐지
자전거래 수수료를 자전거래가 손해가 되도록 설계 (3.2 ①)

4. 거래소 · 경매장 (경매장 서버)

둘 다 메인 서버와 다른 프로세스(경매장 서버) 로 돈다. 메인이 재시작해도 매물은 그대로다. 서버 구조·장애 복구는 Server/docs/경매장.md — 여기는 플레이어가 겪는 규칙만 적는다.

4.1 거래소 — 자원 (로스트아크식 수량 구매)

동작 규칙
목록 자원 종류마다 한 줄 — 최저가 · 판매 중 수량 · 최근 거래가 · 전일 평균가. 분류(ItemType)·이름(클라가 TID로 바꾼다)으로 거른다
가격대 한 종류를 고르면 단가별 판매 중 수량(싼 순 10칸)을 본다
구매 "N개, 개당 최대 P골드" — 여러 판매자의 매물을 최저가부터 채운다. 실제 낸 금액은 N×P보다 적을 수 있다. N개를 다 못 채우면 아무것도 사지 않는다(누가 먼저 샀거나 가격이 올랐다). 산 자원은 우편 한 통으로 온다
판매 매물은 일부씩 팔린다. 팔릴 때마다 그만큼의 대금(수수료 제외)이 우편으로 온다. 남은 수량은 계속 팔린다
취소·만료 누가 구매 중이면 취소할 수 없다. 남은 수량만 돌아온다. 만료면 등록비도 팔리지 않은 비율만큼 돌려준다
전일 평균가 한국 시간 자정 기준 어제 체결의 수량 가중 평균

4.2 경매장 — 장비 · 캐릭터 (즉시구매)

동작 규칙
검색 장비: 분류(EquipKind) · 이름 · 희귀도 · 인챈트 등급 · 인챈트 옵션 포함 · 단가 상한. 캐릭터: 이름 · 희귀도 · 단가 상한(분류 없음). 단가가 싼 순
판매자 매물 줄에 등록 순간의 닉네임이 보인다(2026-10-01 · #47)
구매 매물 하나를 통째로 산다. 먼저 경매장에 닿은 요청이 이긴다. 장비는 인챈트까지, 캐릭터는 레벨·경험치까지 그대로 우편으로 온다
입찰 없다 (2026-09-24 결정)

4.3 공통

동작 규칙
등록 자원은 종류·수량, 장비·캐릭터는 개체 하나. 등록하는 순간 인벤토리에서 빠지고 등록비가 나간다. 착용 중인 장비 · 슬롯에 배치됐거나 장비를 낀 캐릭터 · 마지막 남은 캐릭터는 올릴 수 없다
가격 단가로 정한다. 하한 = BasePrice(즉시 판매가 — 캐릭터는 CharacterTable.BasePrice), 상한 = 1조(절대값 — 2026-10-06 10조에서 낮춤, 그 전에는 하한 × 10)
수량 자원은 한 번에 9,999개까지 올린다(2026-10-06). 보유량이 더 많으면 나눠 올린다 — 단가 상한과 한 쌍으로 총액을 묶는다
판매 대금 판매액 − 판매 수수료가 우편으로 온다. 판매자가 접속 중이 아니어도 된다
취소 물건은 우편으로 돌아오고 등록비는 돌아오지 않는다
만료 기간이 지나면 물건과 등록비가 우편으로 돌아온다

수치 (테스트값 — Constants.xlsx의 Auction* 행에서 바꾼다):

항목 값
단가 상한 1조 절대값(AuctionMaxUnitPrice — 2026-10-05 × 10 폐지 · 2026-10-06 10조 → 1조)
한 번에 올리는 수량 상한 9,999개(AuctionMaxListingCount — 2026-10-06)
등록비 총액의 1% (최소 1)
판매 수수료 총액의 5%
1인 판매 중 매물 상한 20건
등록 기간 48시간
검색 빈도 순간 5회 · 2초마다 1회 회복

위 수치와 즉시 판매가 비율(SellRatePermille)은 Constants.xlsx 에 있다 — 기획이 빌드 없이 바꾼다. 슬롯 확장 비용은 UnlockTable.


5. 서버 / 클라이언트 책임

책임 주체
등록·취소·구매 전 과정 서버 (전부)
즉시 판매 정산 서버
잔액·재고 검증 서버
동시 구매 경합 처리 서버 (트랜잭션 필수)
시세 계산 서버
목록·시세 차트 표시 클라이언트

거래는 실질 가치가 오가는 지점이다. 클라이언트 계산 결과를 어떤 경우에도 신뢰하지 않는다. 동시 구매(같은 매물을 두 명이 동시에)는 반드시 트랜잭션으로 막는다.


6. 결정 필요 (Open Questions)

  1. 거래 수수료율은? (등록비 / 판매 수수료 각각) — 테스트값 1% / 5%로 돌고 있다(4장)
  2. 가격 밴드의 상한 배수는? — 배수 폐지, 절대 상한 1조(2026-10-05 태웅 10조 → 2026-10-06 진우 1조 · 한 번에 9,999개). x10은 희귀품의 값을 막았다. 하한(즉시 판매가)만 남는다 — 시세 조작 대응은 매물 상한·검색 빈도 제한이 맡는다
  3. 1인 판매 중 매물 상한 · 등록 기간은? — 테스트값 20건 · 48시간
  4. 시세를 유저에게 공개하는가? (차트 제공 여부) — 체결 기록은 메인 t_auction_trade에 남아 있어 나중에 뽑을 수 있다
  5. 상점에서 파는 물건은? 골드 상점 방향은 잡혔으나 지금 살 수 있는 것이 하나도 없다 — 슬롯 해금은 T-038, 가챠는 티켓 대신 골드 직접 결제(T-027)로 바뀌었다. 상점의 구매 쪽은 팔 물건이 생길 때 만든다
  6. 거래 불가 아이템이 있는가? → Tradable 컬럼 · 아이템
  7. 수익화(BM)와 거래소가 연결되는가? 연결 시 확률형 아이템 고지 의무 검토 필요

해소됨 (2026-09-24):

  • 로스트아크식 거래소 — ✅ 자원은 수량 구매(최저가부터 · 전부 아니면 없음) + 시세(최근가·전일 평균). 입찰은 두지 않는다 (T-091)

해소됨 (2026-09-23):

  • 거래소 구현 — ✅ 경매장 서버 · 즉시구매 · 매물 통째 구매 · 등록비 만료 환급/취소 미환급 (T-094)

해소됨 (2026-09-02):

  • 즉시 판매가 비율 — ✅ BasePrice의 100% (3.1). 서버 상수 한 곳에 둔다
  • 즉시 판매 구현 — ✅ 서버 완료 (T-028). 클라 UI는 T-032

해소됨 (2026-08-01):

  • 거래 방식 — ✅ D안(자유 거래 + 가격 밴드)
  • 화폐 sink — ✅ 3종 확정 (거래 수수료 · 슬롯 해금 · 가챠 비용)
  • 골드 획득 경로 — ✅ 즉시 판매 + 거래소 판매. 채취가 유일한 faucet
  • 상점의 정체 — ✅ 골드 상점 (현금 상품 없음)
  • 슬롯 확장 수단 — ✅ 골드 단독 (2026-09-30 · #43 — 이전: 레벨 × 골드 이중 게이트)