2026-09-14 — "캐릭터 획득·계정 레벨업 시 자동 판정"은 폐기됐다. 산업 레벨은 해금 시스템의 대상 하나가 되어 유저의 해금 행동으로 열리고, 조건은 계정 레벨만이다. 골격은 T-038이 슬롯으로 세웠다(2026-09-16 ·
UnlockCatalog·User.Unlock·t_user_unlock). ⏸ 계정 레벨이 서버에 생긴 뒤 착수한다. 아래 배경·조건 절은 옛 서술이다.
배경
산업 레벨의 그릇은 다 만들어졌는데 레벨을 올려 주는 사람이 없다.
T-017에서 드롭 롤·판정 비용·DB·패킷·배치 검증까지 끝났지만,
t_user_industry_level의 unlocked_level을 갱신하는 코드가 어디에도 없다.
그래서 지금은:
- 모든 유저의 모든 산업이 Lv1에 머문다 (행이 없으면 Lv1로 본다).
- Lv2 이상 배치 요청은 전부
EResultCode.IndustryLevelLocked로 거절된다. - Lv2~5의 드롭 시트·판정 비용·아이템 120종이 전부 도달 불가 상태로 놀고 있다.
이건 오동작이 아니라 미구현이다 — 검증은 정상 작동하고, 열린 것이 Lv1뿐일 뿐이다.
해금 조건 (T-016에서 확정 · 2026-08-01)
두 조건을 모두 충족해야 다음 레벨이 열린다.
| # | 조건 | 대상 | 엑셀 컬럼 |
|---|---|---|---|
| ① | 보유 캐릭터 중 그 산업 적성의 최댓값 ≥ N | 산업별 | IndustryLevelTable.RequiredAptitude |
| ② | 계정(섬주인) 레벨 ≥ M | 전역 | IndustryLevelTable.RequiredAccountLevel |
- 배치 여부와 무관하다 — 갖고 있기만 하면 된다.
- 해금은 영구다. 캐릭터를 방출·교체해도 이미 열린 레벨은 유지되고 재검사하지 않는다.
- 분기 로직이 없다 — 정수 두 개를 비교하면 끝이다.
→ 산업 레벨 3장
할 일
- [x]
IndustryLevelTable에UnlockTID컬럼(대역2xxx) 추가 ·RequiredAptitude·RequiredAccountLevel제거 ·UnlockTable에 산업 5 × Lv2~5 = 20행(AccountLevel=M테스트값 5·15·30·50, 선행 = 이전 레벨) - [x] 배치 검증(
AssignWorkStation)을IsIndustryLevelUnlocked→IsUnlocked(IndustryLevelTable.UnlockTID)로 교체 - [x]
t_user_industry_level·LoadIndustryLevels제거 (행 0건이라 옮길 것 없음 — 실DB에서 DROP) - [x] 테스트 — 선행 레벨 미해금 거절 · 계정 레벨 미달 거절 · 정상 해금 후 그 레벨로 배치 가능 · 재로그인 후 유지
- [x] 실측 (2026-09-19 · 더미 클라 + 실서버) — 계정 경험치 5000 → Lv15·포인트 3 · 2202 찍기 성공 · 선행 없는 2203 거절 ·
일반 해금 요청
TraitOnlyUnlock· 재로그인 후 계정·해금 복원 · 낚시 Lv3 배치 거절 / Lv2 배치 성공 · 판정 2회 → Lv2 드롭(10011 · 10014)·경험치 6(캐릭터 = 계정) · 속도 특성 3201 → 슬롯 속도 +10% (6600 = 1000 × 1.1 × 전역 6배). 클라 화면은 T-068
결과 (2026-09-19)
"계정 레벨이 서버에 생긴 뒤"라는 선행을 이 일감에서 함께 풀었다 — 사용자 결정으로 해금 방식도 바뀌었다.
- 계정 레벨 — 캐릭터가 얻은 경험치 전량이 계정 경험치.
AccountLevelTable(User.xlsx, 캐릭터 곡선 × 8, 100레벨, 5레벨마다 특성 포인트 1) ·t_user_account·S_AccountLevelResponse - 산업 레벨은 특성 노드로 연다 —
UserTraitTable(User.xlsx) 노드 TID =UnlockTID. 조건은UnlockTable, 비용은 특성 포인트.C_UserTraitLearnRequest. 일반 해금 요청으로는 막힌다(TraitOnlyUnlock) - 산업별 속도 특성 — 산업마다 5단(+10%씩),
3000 + 산업×100 + 단. 슬롯 속도 가산(GetTraitSpeedAdd) - 치트
GiveAccountExp = 9 - 곁가지:
PacketId27·28,EResultCode600 중복을 고치고 중복 방지 테스트를 넣었다
완료 조건
조건을 채우면 상위 레벨이 실제로 열리고, 그 레벨로 배치하면 판정 주기와 나오는 아이템이 Lv1과 눈에 띄게 다른 상태. 캐릭터를 방출해도 열린 레벨이 유지된다.
T-017의 완료 조건 중 "레벨마다 판정 주기와 나오는 아이템이 실제로 다르다"의 실물 확인이 여기로 넘어왔다. T-017 시점에는 상위 레벨을 열 수단이 없어 구조까지만 확인했다.
막고 있는 것 / 선행 일감
- T-016의 남은 것 — 요구치
N·M값. 엑셀은 임시값(Lv23/5· Lv35/15· Lv47/30· Lv59/50)이다. ⚠️ 구조는 지금 만들 수 있지만 밸런스 검증은 못 한다 — 값이 확정되면 엑셀만 고치면 된다. - 계정 레벨 곡선이 미정이라
M을 못 잡는다 → T-003 · 캐릭터 3.1 - ⚠️ 계정 레벨 자체가 서버에 구현돼 있는지 확인이 먼저다. 없으면 T-003이 진짜 선행이 된다.
- 이 일감이 T-009(회당 산출)의 레벨별 실측을 막고 있다. 상위 레벨을 돌려 볼 수 없기 때문이다.
관련 커밋
6a8bc84— 계정 레벨 · 특성 트리 · 산업 레벨 해금 이관 (실측 2026-09-19) · 클라 화면은 T-068 · 이슈 #29