03. 특성 (Trait)
상위 문서:
게임기획코어.md상태: 레벨형 특성 4종(개척 · 속도 · 공통/산업 산출량) 서버 구현 완료 · 수치는 테스트값 · 클라 ❌ 미구현(T-108) · 액티브 미착수 바뀌면 갱신:게임기획코어·기획평가·산업레벨·아이템·자원채취·작업슬롯진행 및 성장·채굴·캐릭터·퀘스트·해금
섬주인(계정) 본인의 성장 축이다. 캐릭터가 아니라 플레이어 자신이 강해지는 자리이며, 효과는 계정 단위로 모든 슬롯에 적용된다 — 대상 산업을 지정한 특성은 그 산업 슬롯에만 붙는다.
1. 확정 사항
| # | 항목 | 확정 내용 |
|---|---|---|
| 1 | 특성은 레벨형이다 (2026-10-02 · T-108) | 특성 하나가 기본 레벨에서 최대 레벨까지 1씩 오른다. 레벨마다 계정 레벨 조건이 붙는다 → 2.1 |
| 2 | 소속 | 캐릭터가 아니라 계정(섬주인) 이 갖는다 → 캐릭터 3장 |
| 3 | 비용 = 특성 포인트 | 계정 레벨마다 1점(AccountLevelTable.TraitPoint) · 레벨당 비용은 특성마다 같다 → 3장 |
| 4 | 특성 4종 | 산업 개척 · 산업 속도 · 공통 산출량 · 산업 산출량 → 2.2 |
| 5 | 산업 레벨은 개척 특성으로 연다 | 특성 레벨 = 열린 산업 레벨. 5개 산업 Lv1은 처음부터 열려 있다(기본 레벨 1) → 산업 레벨 3장 |
| 6 | 산출량 = 100% + 공통 + 그 산업 | 정수부만큼 같은 아이템, 소수부는 확률로 1개 더. 자원에만 붙는다 → 2.3 |
| 7 | 속도·산출량 효과는 가산 항 | 승산으로 두지 않는다 → 2.5 |
| 8 | 기록 = t_user_trait |
특성마다 레벨 하나. 기본 레벨보다 올린 특성만 행이 있다. 남은 포인트는 t_user_account |
| 9 | 액티브 | 계정 레벨 조건의 해금 + 1회 발동 = 1시간 지속 · 하루 2회 · 이월 없음 · 발동 조건 없음 (미착수) |
| 10 | 자원은 특성에 쓰이지 않는다 | 비용은 특성 포인트 하나다 |
1.1 산업별 특성을 다시 둔 이유 (2026-09-19)
2026-08-01에는 "산업별 강화는 캐릭터 적성·장비가 맡는다"며 산업별 특성을 뺐다. 산업 레벨 해금이 특성으로 들어오면서 특성 자체가 산업별로 갈라졌고, 같은 산업에 속도·산출량을 두는 것이 자연스러워졌다. 세 축의 역할은 이렇게 나뉜다.
| 축 | 산업별 차이를 만드는 방식 | 성격 |
|---|---|---|
| 캐릭터 적성 | 적성이 곧 기본 작업속도 | 캐릭터마다 다르다 — 배치 퍼즐 |
| 장비 | 무기1·장신구2·보석1 가산 + 개체마다 인챈트 속도 칸 | 캐릭터에 붙는다 — 교체 가능 |
| 특성 | 산업 레벨 해금 · 산업별 속도 · 산업별 산출량 | 계정에 붙는다 — 영구, 포인트로 고른다 |
포인트는 계정 Lv100까지 99점, 특성을 전부 올리려면 130점이라 전부 찍을 수 없다 — 어느 산업을 키울지가 선택이 된다.
2. 구조
2.1 레벨형 — 정의 · 레벨 조건 · 기록 (2026-10-02 · T-108)
| 층 | 어디에 | 내용 |
|---|---|---|
| 특성 정의 | UserTraitTable (User.xlsx) |
UserTraitTID · Name · TraitPoint(레벨당 비용) · EffectType · Industry · EffectValue(레벨당 효과 ‰) · BaseLevel · MaxLevel |
| 레벨 조건 | UserTraitLevelTable (User.xlsx) |
UserTraitLevelTID(= 특성 × 100 + 레벨) · UserTraitTID · Level · AccountLevel — 기본 레벨 다음부터 최대 레벨까지 빠짐없이 |
| 기록 | t_user_trait |
(user_id, user_trait_tid, level) — 기본 레벨보다 올린 특성만 행이 있다. 영구 |
효과 = 레벨당 효과 × (지금 레벨 − 기본 레벨). 비용과 효과는 레벨마다 같고, 레벨마다 다른 것은 계정 레벨 조건뿐이다.
올리는 순서(서버): 없는 특성 → 최대 레벨 → 다음 레벨의 계정 레벨 → 포인트 차감(맨 뒤) → 정산(속도·산출량이면) → 레벨 기록 → 효과. 조건을 전부 통과해야 포인트가 빠진다 — 거절 경로에서 포인트가 움직이지 않는다.
특성은 해금(
UnlockTable)을 쓰지 않는다. 산업 레벨도 해금 행이 아니라 개척 특성의 레벨로 판정한다.
효과(UserTraitEffect) |
동작 |
|---|---|
IndustryUnlock |
산업 개척 — 특성 레벨 N이면 그 산업 Lv N까지 열린다. 기본 레벨 1 |
SpeedAdd |
작업속도 가산(‰). Industry가 None이면 전 산업 |
YieldAdd |
산출량 가산(‰). Industry가 None이면 전 산업(공통) → 2.3 |
| 패킷 · 결과 코드 | 내용 |
|---|---|
C_UserTraitLearnRequest { UserTraitTID } |
1레벨 올리기 |
S_UserTraitLearnResponse { Result, UserTraitTID, Level } |
성공이면 올린 뒤 레벨, 실패면 지금 레벨. 앞에 S_AccountLevelResponse(남은 포인트) |
S_UserTraitListResponse { Traits: [UserTraitTID, Level] } |
로그인 직후 스냅샷(S_UnlockListResponse 다음). 없는 특성은 기본 레벨이다 |
| 결과 코드 | InvalidUserTraitTID · TraitMaxLevel(803) · UnlockLocked(계정 레벨 미달) · NotEnoughTraitPoint. TraitOnlyUnlock(802)은 쓰지 않는 결번 |
2.2 특성 구성 (테스트값)
| 특성 | TID | 범위 | 레벨당 효과 | 기본 → 최대 Lv | 계정 레벨 조건 | 포인트 |
|---|---|---|---|---|---|---|
| 산업 개척 | 101~105 | 산업별 | 산업 레벨 하나 해금 | 1 → 5 | Lv2~5 = 5 · 15 · 30 · 50 | 20 |
| 산업 속도 | 201~205 | 산업별 | 속도 +5% | 0 → 10 | Lv L = (L − 1) × 5 | 50 |
| 공통 산출량 | 300 | 전 산업 | 산출량 +2% | 0 → 10 | Lv L = (L − 1) × 5 | 10 |
| 산업 산출량 | 301~305 | 산업별 | 산출량 +5% | 0 → 10 | Lv L = (L − 1) × 5 | 50 |
| 합계 | 16개 | 130 |
TID 끝자리는
IndustryType— 농사 1 · 낚시 2 · 채굴 3 · 벌목 4 · 사냥 5. 레벨당 비용은 전부 1점. 옛 노드 번호(UnlockTable2102~2505 · 3101~3505)는 결번이다.
2.3 산출량 — 같은 아이템을 더 준다 (2026-10-02)
산출량 = 100% + 공통 산출량 + 그 산업 산출량 (가산). 판정마다 자원을 뽑은 뒤
같은 아이템을 정수부만큼, 소수부는 확률로 1개 더 준다(서버 User.ApplyYield).
| 산출량 | 판정 1회 |
|---|---|
| 100% | 1개 |
| 120% | 1개 + 20% 확률로 1개 더 (평균 1.2개) |
| 250% | 2개 + 50% 확률로 1개 더 (평균 2.5개) |
- 자원에만 붙는다. 상자(별도 롤)와 캐릭터·계정 경험치는 늘지 않는다 — 속도와 갈리는 점이다.
- 다시 굴리지 않고 같은 아이템을 준다 — 희귀도 확률은 그대로다.
- 산출량을 올리기 직전에 정산한다 — 이전 구간에 소급되지 않는다.
2.4 액티브 — 하루 2회 · 1시간 (R4 해소)
이전 기획의 액티브는 이 게임에서 가장 위험한 요소였다. "채취 시 발동하는 부스트"는 발동하려면 게임을 지켜봐야 해서 P1(주의를 뺏지 않는다)과 정면 충돌했고, 제때 쓰는 유저와 안 쓰는 유저의 격차가 최적 플레이를 강요했다.
해소 방식:
| 항목 | 값 | 왜 |
|---|---|---|
| 해금 | 계정 레벨 조건 + 해금 행동 (5 · 10 · 20 · 40 — ⚠️ 레벨값 미정) → 해금 | 해금 규칙이 하나여야 클라가 한 화면으로 처리한다 |
| 지속 | 1시간 | 켜 놓고 잊어도 된다. 초 단위 타이밍이 의미 없어진다 |
| 횟수 | 하루 2회 · 일일 리셋 | 하루 리듬 장치를 겸한다 → 2.6 |
| 발동 조건 | 없음 | 광고 시청 같은 조건을 두지 않는다 |
| 이월 | 없음 |
효과 4종 후보 (⚠️ 확정 아님):
| 후보 | 대상 |
|---|---|
| 골드 획득 증가 | 즉시 판매·거래 수익 |
| 경험치 획득 증가 | 캐릭터 → 계정 경험치 |
| 아이템 드랍률 증가 | 희귀도 롤 또는 회당 산출 |
| 작업속도 증가 | 채취 주기 |
2.5 ⚠️ 속도·산출량 효과는 반드시 가산으로 넣는다
작업슬롯 3.4의 속도 = 적성 × (1 + Σ가산) × Π승산에서
승산으로 두면 가산 전체를 함께 부풀려 후반 밸런스가 무너진다.
곱연산(×1.2 × ×1.2 …)은 후반에 반드시 폭주한다. 합연산 기반이 원칙이며, "총 작업속도 증가" 같은 의도적 예외만 승산으로 간다.
2.6 액티브의 일일 리셋이 P3를 대신한다 (2026-08-01 확정)
요일 로테이션이 폐지되면서 P3("하루 단위로 달라진다")가 근거를 잃었고, 게임에 하루 주기 장치가 하나도 없었다.
액티브의 일일 2회가 그 자리를 맡는다 — "오늘 몫의 부스트를 언제 쓸까"가 하루 단위 판단이 된다. P3는 이에 맞춰 재정의됐다 → 게임기획코어 1장.
⚠️ 방어선: 보상은 "가속"이지 "총량"이 아니다. 안 써도 잃는 것이 없고, 쓰면 그날이 빨라질 뿐이다. 미사용분 이월 금지 · 연속 사용 보너스 금지 · 위젯에 배지/타이머 표시 금지. 이 선을 넘는 순간 "안 쓰면 손해"가 되어 P1을 어긴다.
3. 획득 · 성장 경로
캐릭터가 작업 → 캐릭터 경험치 ─(그대로)→ 계정 경험치 → 계정 레벨 ↑ → 레벨마다 특성 포인트 1
| 항목 | 확정 내용 |
|---|---|
| 계정 경험치 | 캐릭터가 얻은 경험치 전량 — 비율을 두지 않는다. 캐릭터가 만렙이어도 계정은 자란다 |
| 계정 레벨 곡선 | AccountLevelTable — 캐릭터 곡선(레벨당 ×1.2)의 8배(슬롯 8칸이 동시에 번다). 100레벨. 테스트값 |
| 특성 포인트 | 레벨마다 1점(2026-10-02) — Lv2~100 = 총 99점. 특성 전부는 130점이라 다 찍지 못한다 |
| 저장 · 통지 | t_user_account(레벨 · 경험치 · 남은 포인트) · S_AccountLevelResponse |
자원은 특성에 쓰이지 않는다. 자원의 출구는 즉시 판매·거래소·캐릭터 먹이기다.
| 논점 | 상태 |
|---|---|
| 리셋(초기화) 가능 여부·비용 | ❌ 미정 — 리셋하면 t_user_trait 행을 지우고 쓴 포인트를 돌려준다 |
| 특성 레벨을 주는 치트 | ❌ 없음 — 옛 해금 치트로는 더 이상 특성을 열 수 없다. 테스트용 경로가 필요하다(T-108 후속) |
4. 서버 / 클라이언트 책임
| 책임 | 주체 |
|---|---|
| 효과 합성 · 채취 정산 반영 | 서버 (User.GetTraitSpeedAdd → 슬롯 속도 가산 · User.GetTraitYieldAdd → ApplyYield) |
| 포인트 차감 · 조건 검증 · 레벨 기록 | 서버 (User.TryLearnTrait · C_UserTraitLearnRequest · t_user_trait) |
| 액티브 발동 시각 · 지속 판정 · 일일 리셋 | 서버 (서버 시각 기준) |
| 특성 레벨 표시·미리보기 | 클라이언트 — ❌ 미구현(T-108). 지금 화면은 옛 노드 구조다 |
액티브 발동 직전에 반드시 정산한다. 속도가 바뀌는 지점이므로, 정산하지 않으면 이전 구간까지 새 속도로 계산된다 → 작업슬롯 3.1.
5. 결정 필요 (Open Questions)
- 액티브 해금 레벨(5·10·20·40)을 확정하는가?
- 액티브 효과 4종을 확정하는가? 각 효과의 배수는?
- 4종 외에 어떤 특성을 더 두는가? 최대 레벨을 늘리는 것만으로 업데이트할 수 있다
- 특성이 희귀도 확률에 개입하는가? → 자원채취 2.4와 함께 (산출량은 개입하지 않는다)
- 일일 리셋 기준 시각은? → 퀘스트 리셋과 같아야 한다
해소됨 (2026-08-01):
- 액티브 유지 여부 — ✅ 유지. 하루 2회 · 1시간 · 발동 조건 없음 (R4 해소)
- 효과 중첩 — ✅ 가산이 기본, 승산은 의도적 예외
- 해금 재화 — ✅ 자원이 아니라 특성 포인트(계정 레벨마다 1)
해소됨 (2026-09-19):
- 특성 슬롯(장착 제한) — 두지 않는다. 포인트가 모자라 전부 찍을 수 없는 것이 선택을 만든다
- 특성 거래 가능 여부 — 계정에 귀속되므로 거래 불가