01. 자원 채취 (Gathering)
상위 문서:
게임기획코어.md· 전제:작업슬롯최종 업데이트: 2026-08-08 · 상태: 산업 5종 확정 · 산업 레벨 5단계 데이터 생성 완료 · 확률값 미정 · ⚠️ 서버 미구현 바뀌면 갱신:거래·게임UI·게임기획코어·기획평가·낚시·농사벌목·사냥·산업레벨·아이템·작업슬롯·진행 및 성장채굴·특성
코어 루프의 시작점이자, 게임에서 유일하게 재화가 새로 생성되는 지점(faucet)이다. 여기서 나오는 총량이 경제 전체의 상한을 정하므로, 이 문서의 수치는 거래와 반드시 함께 결정한다.
⚠️ 2026-07-29 구조 전환. "산업 택 1"과 "요일 로테이션"이 폐지되고 작업슬롯 구조로 바뀌었다. 채취는 슬롯마다 독립적으로 돈다. 이 문서의 2.0·2.3은 폐지된 내용이며 이력으로 남겨 둔다.
1. 확정 사항
- 1차 산업은 5종이다: 농사 · 벌목 · 낚시 · 채굴 · 사냥.
- 채취는 작업슬롯마다 독립적으로 돈다. 슬롯당 산업 1개 · 캐릭터 1명.
산업 택 1폐지. 슬롯 수만큼 동시에 가동된다.
- 기준 채취주기는 전 산업 공통 30초다. 산업별로 다르게 두지 않는다. 단 캐릭터 속도로 실효 주기가 슬롯마다 갈린다. (2.1)
오프라인 누적에 감쇠가 없다❌ 폐지 (2026-07-29). 오프라인 진행 자체가 없다. (2.2)요일 효율 보너스 · 주말 택1 ×2폐지. (2.3)- 진행은 방치형. 플레이어의 조작 없이 자동으로 흐른다.
- 실패(허탕)는 없다. 판정하면 반드시 무언가 나온다. 전 산업 공통.
- 보상은 한 층이다. 판정 1회 = 드롭 롤 한 번. (2.4)
기본 9 : 특별 1 두 층폐지 (2026-07-30).희귀도 분포는 전 산업 동일폐지 (2026-07-31). 가중치는 각 산업의 드롭 시트가 직접 갖는다 — 분포도 아이템도 산업별이다.
- 아이템에 개체 변량이 없다. 개체별 수치 롤(크기 등)을 두지 않는다.
등급 차이는 희귀도(
GlobalRarity)와 별도ItemTID로 표현한다. → 모든 아이템이 정상 스택된다. - 티켓·고유 아이템은 전 산업 공통이며, 채취 보상과 별개의 롤로 나온다. (특별보상 층이 폐지돼 롤은 판정당 2번이다 — 채취 보상 1 + 공통 보상 1)
- 산업마다 레벨이 있다 (2026-08-01). 슬롯에 배치할 때 산업과 레벨을 함께 고른다. 레벨이 오르면 드롭 목록이 확장된다. 경험치는 없다 — 조건 충족이 곧 해금이다. → 산업 레벨
1-1. 1차 산업 5종
산업은 수치가 아니라 플레이어가 느끼는 심리로 구분한다. "무엇이 나오는가"가 아니라 "왜 이걸 고르는가" 가 산업의 정의다.
| 산업 | enum | 심리 정의 | 투자 비유 | 고유 메커니즘 | 상세 |
|---|---|---|---|---|---|
| 낚시 | Fishing ✅ |
확실한 도파민 | 소액 잦은 당첨 | 없음 ⚠️ | 낚시 |
| 농사 | Farming ✅ |
안정적인 수익 | 적금 | 파종 선택 | 농사 |
| 채굴 | Mining ✅ |
확실한 스노우볼 | 복리 장기투자 | 깊이 누적 | 채굴 |
| 벌목 | Logging ✅ |
절제하면 지속되는 수익 | 배당주 (원금 보존) | 자원 고갈·재생 | 벌목 |
| 사냥 | Hunting ✅ |
도전 · 목표 지향 ⚠️ | 적립식 목표 투자 | 사냥터 선택 + 보스 | 사냥 |
이렇게 놓으면 5개 산업이 투자 성향 스펙트럼이 된다. 산업 택1 + 자유 변경(2.0)과 맞물려 "오늘 어디에 넣을까"가 게임의 질문이 된다.
- 농사와 벌목이 둘 다 "안정"이지만 갈린다 — 농사는 그냥 안정적이고, 벌목은 내가 조절해야 안정적이다.
- 낚시와 사냥은 반대다 — 낚시는 지금 당장의 만족, 사냥은 나중을 위한 축적.
- ⚠️ 사냥의 심리 정의는 제안이다. 보스 시스템이 구체화되면 확정한다.
✅
ItemType.Hunting은 값5로 추가돼 있다 (2026-07-28).아직 enum에 없다 · 값— 둘 다 낡은 서술이었다 (2026-08-02 정정).7로 추가한다Hunting이 중간에 삽입되면서Misc·Special이 한 칸씩 밀렸고, 되돌리지 않는다 (t_user_workstation_slot.industry에 이미 저장된 값이 어긋난다). → 아이템 1.2
수치 차별화 수단 — 하나까지 줄었다가 둘로 돌아왔다
산업을 가르던 수치 축이 결정을 거치며 계속 깎였다가, 분포 통일 폐지로 하나를 되찾았다.
| 시점 | 남은 수치 축 |
|---|---|
| 초기 | 채취주기 · 회당 산출 · 희귀도 분포 · 실패율 |
| 주기 통일 후 | 회당 산출 · 희귀도 분포 · 실패율 |
| 분포 통일 후 | 회당 산출 · 실패율 |
| 실패 폐기 후 | 회당 산출 (+ 특별보상 내용) |
| 특별보상 폐기 후 (2026-07-30) | 회당 산출 ← 최저점 |
| 분포 통일 폐지 후 (2026-07-31) | 회당 산출 · 희귀도 분포 |
| 산업 레벨 도입 후 (2026-08-01) | 회당 산출 · 희귀도 분포 · 판정 필요 점수 |
수치 축 셋에 고유 메커니즘이 더해진다.
⚠️ 세 번째 축(필요 점수)은 아직 안 쓰고 있다. 5개 산업이 같은 값을 쓴다. 벌리는 데 구조 변경이 필요 없으므로 회당 산출량이 정해진 뒤에 함께 조정한다 (T-009).
| 산업 | 회당 산출 | 희귀도 분포 | 고유 메커니즘 |
|---|---|---|---|
| 농사 | 가장 많음 | 미정 | 파종 선택 |
| 벌목 | 중간 (자원량 비례) | 미정 | 고갈·재생 |
| 채굴 | 중간 (깊이 비례) | 미정 — 깊이로 올릴 수 있다 | 깊이 누적 |
| 낚시 | 적음 | 미정 — 상위로 기울일 수 있다 | 없음 |
| 사냥 | 중간 | 미정 | 사냥터 선택 |
결론: 밸런스 시트로도 산업을 구분할 수 있게 됐다.
- ✅ 낚시의 차별화 수단이 생겼다. 고유 메커니즘은 여전히 없지만, 상위 등급 비중을 높여 "확실한 도파민"을 수치로 만들 수 있다. → 낚시 3장
- ✅ 채굴의 "깊이가 희귀도를 올린다"가 다시 가능하다. 분포 통일 때문에 폐기했던 원래 설계가 되살아난다. → 채굴 1장
- ⚠️ 대가는 밸런싱 비용이다. 확률을 손볼 때 5개 시트를 함께 봐야 하고, 의도치 않게 어긋나기 쉽다. 다르게 두는 것은 의도가 있을 때만 한다 — 기본은 같은 값으로 시작한다.
산업 간 역할 분담 (제안)
| 축 | 담당 산업 |
|---|---|
| 기반 물량 | 농사 |
| 총량 제어 | 벌목 |
| 즉각적 만족 | 낚시 |
| 장기 성장 재료 | 채굴 |
| 후반 콘텐츠(보스) 진입권 | 사냥 |
이 분담이 유지되면 5개 산업이 서로를 대체하지 않는다. 새 산업을 추가할 때도 비어 있는 축을 찾아 배정한다.
낚시의 축은 "잔재미·티켓" → (티켓 공통화) → "개체 변량(크기)" → (변량 폐기) → "희귀도 분포" → (분포 공통화) → "실패율" → (실패 폐기) → "즉각적 만족" 으로 네 번 바뀌었다. 현재 5종 중 고유 메커니즘이 없는 유일한 산업이다. →
기획평가.md✅ 산업 레벨이 들어오면 낚시에도 개입 지점이 생긴다 (2026-08-01). 레벨이 낚시터를 대신하므로 "고유 메커니즘이 없는 유일한 산업"이라는 상태가 해소된다. → 산업 레벨 4.1
1-2. 산업 레벨 (2026-08-01 신설)
산업마다 레벨이 있고, 슬롯에 배치할 때 산업과 레벨을 함께 고른다. 상세는 산업 레벨에 있고, 여기서는 채취 루프에 미치는 영향만 적는다.
| 항목 | 내용 |
|---|---|
| 해금 | 계정 단위 — 유저가 산업별로 어디까지 열었는지를 갖는다. 한 번 열리면 영구 |
| 선택 | 슬롯 단위 — 해금된 레벨 중 아무거나 고른다. 하위도 계속 고를 수 있다 |
| 레벨 수 | 산업당 5개 |
| 효과 | ① 판정 1회 필요 점수 ② 드롭 테이블 — 둘이 함께 바뀐다 |
| 경험치 | 없다. 조건을 채우면 해금되고 선택지에 추가된다 |
| 해금 조건 | 캐릭터 적성 N + 계정 레벨 M (요구치는 미정) |
🔴 서버가 아직 레벨을 모른다 (2026-08-02 확인 · 일감 T-017). 엑셀은 레벨별로 갈라졌는데
DropTableCatalog가IndustryLevel컬럼을 읽지 않아 산업당 38행이 한 테이블에 뭉쳐 있다 — 지금 개발 서버는 Lv1 슬롯에서 Lv5 아이템이 나오고, 희귀도 분포도 5개 레벨이 뒤섞인 값이다.WorkStationSlot에 레벨 필드가 없어 필터를 걸 축 자체가 없는 상태다. 아래 서술은 구현 후의 목표 동작이다.
채취 루프에 대한 영향:
- 판정 1회 비용이 전역 상수가 아니라
(산업, 레벨)의 값이 된다 — 2.1의 공식이 바뀐다. - 드롭 롤의 대상이
<산업>BasicTable전체가 아니라(산업, 레벨)으로 걸러진 행 목록이 된다. <산업>BasicTable5종에IndustryLevel컬럼이 붙는다 (3장).- 레벨 변경은 슬롯 변경이므로 변경 직전에 정산한다 — 산업 변경과 같은 규칙이다.
레벨별 필요 점수 (전 산업 공통 · 적성 1 캐릭터가 1초에 1000점)
| 레벨 | 필요 점수 | 적성 1 | 적성 10 |
|---|---|---|---|
| Lv1 | 30,000 | 30초 | 7.5초 |
| Lv2 | 90,000 | 1분 30초 | 22.5초 |
| Lv3 | 270,000 | 4분 30초 | 1분 7.5초 |
| Lv4 | 810,000 | 13분 30초 | 3분 22.5초 |
| Lv5 | 2,430,000 | 40분 30초 | 10분 7.5초 |
✅ "상위 레벨이 더 좋기만 하면 선택이 죽는다"는 문제가 이걸로 풀렸다. 상위 레벨은 시간당 판정 횟수가 1/3씩 줄어드니 하위는 박리다매, 상위는 저빈도 고가치로 갈린다. 사냥 3.1이 사냥터에 대해 지적한 것과 같은 문제였다. → 산업 레벨 4.2
필요 점수는 지금 전 산업 공통이다. 행이
(산업, 레벨)이라 나중에 산업별로 벌릴 수 있고, 그때는 세 번째 수치 차별화 축이 된다 (1-1 참조).
낚시터·사냥터·수종이 산업 레벨로 통합된다. 5개 산업이 각자 다른 이름으로 갖고 있던 "구간 선택"이 하나의 축으로 모인다. 농사(파종)와 채굴(깊이)만 성격이 달라 결정이 필요하다. → 산업 레벨 4장
2. 채취 모델
⚠️ 표기가 붙은 항목만 제안이다. 나머지는 확정.
2.0 산업 선택 — 한 번에 1개 ❌ 폐지 (2026-07-29)
작업슬롯 구조로 대체됐다. 슬롯마다 산업 1개를 지정하며, 슬롯 수만큼 동시에 돈다. 아래는 폐지된 내용의 이력이다.
플레이어는 5개 산업 중 하나를 골라 임한다. 나머지 4종은 돌지 않는다. 선택은 언제든 자유롭게 바꿀 수 있다.
| 항목 | 내용 |
|---|---|
| 동시 가동 | 1개 |
| 변경 제약 | 없음 (자유) |
| 변경 시 진행도 | 벌목 자원량·채굴 깊이 등 산업별 상태는 유지된다 (리셋 없음) |
이 구조가 갖는 의미:
- 오프라인 정산이 1개 산업만 계산하면 된다. 5종 동시 가동 대비 부담이 1/5로 줄었다.
- 하루 판정은 2,880회다 (5종 합산 14,400회가 아니다).
- 요일 보너스는 강제가 아니라 유인이 된다. → 2.3
⚠️ 자유 변경 + 요일 보너스의 상호작용을 주의할 것. 보너스 배수
N이 크면 "보너스 산업을 안 고르면 손해"가 되어 선택이 형식화된다.N이 작아야 "오늘은 낚시가 이득이지만 광석이 급하니 채굴"이 실제 선택으로 성립한다. 자유 변경을 택한 이상N을 크게 잡으면 안 된다.
산업을 오갈 때 상태를 잃지 않는 것이 중요하다. 채굴 깊이가 리셋되면 플레이어는 산업을 바꾸지 못하고 묶인다 — 자유 변경의 의미가 사라진다.
2.1 기본 공식 · 기준 채취주기 30초 (확정)
누적작업량 += 경과시간 × 속도 ← 슬롯마다 계산한다
판정 횟수 = floor(누적작업량 / 1판정비용)
채취 산출량 = 판정 횟수 × 회당산출
속도 = 적성기본값 × (1 + Σ가산) × Π승산 ← 가산이 기본, 승산은 예외
⚠️ 2026-08-01 —
1판정비용이 전역 상수가 아니게 됐다.(산업, 레벨)의IndustryLevelTable.RequiredScore를 쓴다. 누적하는 값이 곧 "점수" 이며, 적성 1 캐릭터가 1초 일하면 1000점이다. 아래 표의 30초는 Lv1 기준값이다. → 1-2
| 항목 | 출처 | 비고 |
|---|---|---|
| 기준 채취주기 | Lv1 = 30,000점 ✅ | 적성 1일 때 30초. IndustryLevelTable |
| 실효 주기 | 기준주기 ÷ 속도 | 슬롯마다 다르다 (배치된 캐릭터가 다르므로) |
| 회당산출 | 산업별 테이블 | 기준주기가 같으므로 산업 물량 차이는 전부 여기서 난다 |
| 적성기본값 | 캐릭터 2장 | ✅ 확정. 적성 → WorkSpeedTable → 속도. 적성 0은 배치 불가 |
| 특성 패시브 (가산) | 특성 | 상시 적용. 전역 특성만 있다 (산업별 폐지) |
| 액티브 부스트 (가산) | 특성 | 하루 2회 · 1시간 |
| 장비 (가산) | 일감 T-002 | 무기1·장신구2·보석1 |
| 캐릭터 레벨 | 캐릭터 5장 | ❌ 미정 — 레벨이 무엇을 올리는지 정해지지 않았다 |
곱셈이 아니라 가산이다. 보정을 전부 곱하면 보정원의 개수가 밸런스를 흔든다 → 작업슬롯 3.4.
경과시간은 슬롯의
LastTickAt기준이다. 슬롯마다 배치 시각과 속도가 다르므로 판정 횟수도 슬롯마다 따로 구한다. → 작업슬롯 3장
진행도를 작업량으로 누적하는 이유는 작업슬롯 2장 참조. 요약하면 속도는 구간별로 쪼갤 수 있지만 주기는 그렇지 않기 때문이다.
기준 속도에서 30초 = 하루 2,880회 판정. 속도 배수가 그대로 곱해진다.
| 구분 | 판정 횟수 (속도 1.0배) |
|---|---|
| 1분 | 2회 |
| 1시간 | 120회 |
| 24시간 | 2,880회 |
⚠️ 이 문서를 포함해 기획 곳곳의 "하루 2,880회"는 전부 기준 속도 기준이다. 실제 총량에는 슬롯 수 × 속도 배수 × 접속 시간 비율이 곱해진다.
주기 통일 + 산업 택1로 얻은 것:
- 정산할 산업이 1개다. 판정 횟수를 한 번만 구하면 된다.
- 개체 변량도 없으므로 정산 결과가
Dictionary<ItemTID, count>단순 집계로 끝난다. - 밸런싱 변수가 줄었다. 초기 개발에서는 이득이 크다.
- 위젯도 한 산업만 표시하면 되므로 화면이 단순해진다 (P1에 유리).
부스트는 주기를 줄이지 않는다. 요일 보너스·특성이 30초를 단축하면 판정 수가 배로 늘고 구간 분할 계산도 꼬인다. 산출량 배수로만 적용한다.❌ 폐지 (2026-07-29). 캐릭터 스탯·버프는 주기에 작용한다. "구간 분할 계산이 꼬인다"는 우려는 실재했지만, 진행도를 시간이 아니라 작업량으로 누적하면 해소된다 — 속도는 구간별로 더할 수 있기 때문이다. → 작업슬롯 2장
2.2 오프라인 진행 — 폐지 (2026-07-29)
접속 중에만 자란다. 오프라인 진행도, 접속 보상도 없다.
| 시점 | 동작 |
|---|---|
| 접속 | 모든 슬롯이 진행도 0에서 시작 |
| 접속 중 | 슬롯마다 독립적으로 진행 |
| 접속 종료 | 완성된 판정은 지급, 진행 조각은 폐기 |
| 비접속 | 아무 일도 일어나지 않는다 |
경과 시간 전체가 100%로 쌓인다/24시간 이후 -50%둘 다 폐지. 오프라인 구간이 사라지면서 감쇠·상한·총 누적 상한 논의가 전부 없어졌다.
해소된 리스크:
무한 누적 → 복귀 시 대량 재화 유입— 총량이 접속 시간에 정비례한다.오프라인 정산이 슬롯 수에 비례해 무거워진다— 정산 구간이 세션 길이로 묶인다.버프가 오프라인 구간에 소급 적용— 모든 속도 변경 구간을 서버가 관측한다.
⚠️ 대신 "접속 중" 판정이 곧 재화 생성 조건이 됐다. 하트비트가 없으면 끊김을 늦게 감지해 그만큼 공짜 진행이 생긴다. 무응답 15초로 확정됐다 (2026-08-04) — 기준 주기 30초보다 짧아 그 구간이 판정 1회를 채우지 못하므로 산출이 새지 않는다. → 작업슬롯 3.3
정산 결과가 ItemTID + 개수뿐이라 집계로 끝난다.
2.3 요일 로테이션 ❌ 폐지 (2026-07-29)
요일 시스템 전체가 없어졌다. 슬롯 구조에서는 플레이어가 여러 산업을 동시에 돌리므로 "오늘 무엇을 고를까"라는 질문이 성립하지 않는다. 효율배수에서 요일 항이 빠진다(2.1). 이 폐지로 설계 원칙 P3가 근거를 잃었다 → 게임기획코어 1장. 아래는 폐지된 내용의 이력이다.
산업 택1(2.0)과 결합되면서, 요일의 역할이 "오늘은 이걸 하면 이득"이라는 유인으로 정리됐다. 플레이어는 보너스를 따를 수도, 무시하고 필요한 자원을 캘 수도 있다.
| 요일 | 보너스 산업 | 그 산업을 골랐을 때 | 다른 산업을 골랐을 때 |
|---|---|---|---|
| 월 | 농사 | ×N | ×1.0 |
| 화 | 벌목 | ×N | ×1.0 |
| 수 | 낚시 | ×N | ×1.0 |
| 목 | 채굴 | ×N | ×1.0 |
| 금 | 사냥 | ×N | ×1.0 |
| 토·일 | 플레이어가 택 1 | ×2.0 | — |
- 배정 순서(월=농사…금=사냥)는 제안이다. 산업 수(5)와 평일 수(5)가 맞으므로 1:1이 자연스럽다.
- 평일 보너스 배수
N은 미정. - 주말은 플레이어가 고른 산업에 ×2.0이 붙는다. 요일 배정이 없는 날이다.
P3("하루 단위로 달라진다")는 어느 산업이 열리는가가 아니라 오늘 무엇을 하면 이득인가로 유지된다. 강제하지 않으므로 P1과도 충돌하지 않는다.
⚠️ N이 이 시스템의 성패를 가른다
자유 변경(2.0)과 결합되면 N의 크기가 곧 선택의 유무다.
N |
결과 |
|---|---|
| 너무 큼 (×3 이상) | 보너스를 안 따르면 손해가 커서 사실상 강제 로테이션. 선택이 사라짐 |
| 적정 (×1.3~1.5) | "오늘은 낚시가 이득이지만 광석이 급하니 채굴" 이 실제 고민이 됨 |
| 너무 작음 (×1.1) | 요일을 신경 쓸 이유가 없어져 P3가 죽음 |
×1.5 안팎을 권장한다. 주말 ×2.0보다 확실히 낮아야 "주말에 뭘 고를까"가 주간 최대 의사결정으로 남는다.
| 논점 | 내용 | 권장 |
|---|---|---|
평일 보너스 배수 N |
위 표 참조 | ×1.5 안팎 |
| 주말 택1 시점 | 토요일 1회 선택 → 일요일까지 고정 | 고정 (변경 남용 방지) |
| 보너스 대상 | 산출량만? 희귀도 확률도? | 산출량만 (분포까지 흔들면 드랍 설계가 복잡해짐) |
❓ 주말은 산업 선택이 자유 변경(2.0)인데 주말 택1만 고정이면 규칙이 어긋난다. 주말 ×2를 "선택 고정 대가"로 둘지, 주말도 자유 변경으로 통일할지 결정 필요.
여전히 미결: 요일 경계 기준 시각 (예: KST 05:00). 퀘스트 리셋과 같아야 한다.
2.4 보상 구조 — 한 층 (2026-07-30 변경)
판정하면 반드시 보상이 나온다. 실패(허탕)는 전 산업에서 폐기됐다.
판정 1회 — 실패 없음
│
├─ ① 채취 보상 (분기 없음)
│ └─ 가중치 롤 한 번 ← <산업>BasicTable (가중치·아이템 모두 산업별) ✅
│ 예) 낚시 → 붕어 6590 / 잉어 2000 / 월척 붕어 1000 …
│
└─ ② CommonRewardTable 롤 (①과 별개)
└─ 티켓·고유 아이템 (전 산업 동일 확률)
기본 9 : 특별 1 — 폐지 (2026-07-30)
90% 기본보상 / 10% 특별보상으로 분기한다 — 층 분기를 없앤다.
| 함께 사라진 것 | 처리 |
|---|---|
<산업>SpecialTable |
만들지 않는다 (낚시 것도 미작성이라 실제 피해 없음) |
SpecialRate 컬럼·상수 |
두지 않는다 |
| 특별보상 내부 등급 · 낚시 비율 인상 논점 | 질문 자체가 사라졌다 |
| 보스 티켓 경로 | ⚠️ 미정으로 남는다 (아래) |
실패를 없앤 이유: 방치형에서 허탕은 "자리를 비운 대가"로 체감된다.
30초마다 반드시 무언가 들어와야 P2("꺼져 있어도 자란다")가 온전해진다.
FailRate 컬럼은 어느 테이블에도 두지 않는다.
채취 보상 — 가중치도 아이템도 산업별 (2026-07-31 변경)
산업마다 자기 드롭 시트를 하나씩 갖고, 그 시트가 가중치까지 직접 갖는다.
| 산업 | 시트 | 예 |
|---|---|---|
| 낚시 | FishingBasicTable |
붕어 6590 / 잉어 2000 / 월척 붕어 1000 … |
| 채굴 | MiningBasicTable |
돌덩어리 · 구리 광석 · 은광석 … |
- 드롭 테이블의 가중치가 곧 그 산업의 희귀도 분포다. 롤은 판정당 한 번이다.
- 산업마다 분포를 다르게 둘 수 있다 — 이것이 남은 두 개의 수치 차별화 축 중 하나다.
희귀도 분포 = 전 산업 동일 · RarityWeightTable 단일 원본 — 폐지 (2026-07-31)
RarityWeightTable 단일 원본희귀도를 먼저 뽑고 그 희귀도의 아이템을 고르는 2단계 롤 — 한 단계로 되돌린다.
| 함께 사라진 것 | 처리 |
|---|---|
RarityWeightTable |
만들지 않는다 (미작성 상태라 실제 피해 없음) |
(Rarity → ItemTID) 매핑 구조 |
<산업>BasicTable이 ItemTID + Weight를 직접 갖는다 |
| "한 곳만 고치면 5개에 반영" | ⚠️ 없어졌다. 확률 조정 시 5개 시트를 함께 본다 |
얻은 것 / 잃은 것
| 내용 | |
|---|---|
| ✅ 얻음 | 산업별 분포 차별화. 낚시를 상위로 기울이거나 채굴을 깊이로 올릴 수 있다 |
| ✅ 얻음 | 롤이 판정당 2회 → 1회. 서버 계산이 줄었다 |
| ⚠️ 잃음 | 단일 원본. 5개 분포가 조용히 어긋날 수 있다 |
기본은 5개를 같은 값으로 시작한다. 다르게 두는 것은 산업 정체성을 표현할 의도가 있을 때만 한다. "그냥 다르게"는 밸런싱 사고의 원인이다.
❓ 보스 티켓 경로 — 미정
보스 티켓은 사냥 특별보상 전용이었다. 그 층이 없어져 획득 경로가 비었다. 보스는 채취 루프 바깥으로 나가는 유일한 통로라 경로가 없으면 콘텐츠가 닫힌다.
| 후보 | 성격 |
|---|---|
| 사냥 아이템 목록에 티켓을 섞는다 | 희귀도 롤에 편입 — 구조 변경 없음 |
CommonRewardTable에 넣는다 |
전 산업 공통이 되어 "사냥 전용"이 깨진다 |
| 퀘스트·상점 보상으로 옮긴다 | 채취와 분리 |
→ 사냥
공통 보상 (②)
티켓·고유 아이템. 채취 보상과 무관하게 매 판정마다 별도로 롤한다.
전 산업 동일 확률이며 CommonRewardTable 한 곳에서 관리한다.
특성이 확률에 개입하는지 여부 미정 → 특성와 함께 결정. 개입시킨다면 희귀도 가중치 보정이 가장 깔끔하다 (롤 추가 금지).
3. 데이터 설계 (제안)
밸런스 수치는 코드가 아니라 엑셀 테이블로 간다 (게임기획코어 6장 규칙).
보상이 한 층이므로 산업당 테이블 하나로 끝난다.
엑셀은 산업당 파일 하나(Drop농사.xlsx ~ Drop사냥.xlsx)이고, 파일 안은 레벨별 시트
(FishingBasicTable.Lv1 ~)다 — ExcelGenerator가 . 앞 이름이 같은 시트를 한 테이블로 병합한다
(2026-08-08 개편 · 레벨 30~40 확장 대비).
| 테이블 | 범위 | 주요 컬럼 | 상태 |
|---|---|---|---|
<산업>BasicTable |
산업별 5종 | DropTID(키) · IndustryLevel(Ref) · ItemTID(Ref) · Weight · Description |
✅ 레벨 5단계 확장 완료 (2026-08-01 · 산업당 38행 · 2026-08-08 산업별 파일 분리) |
IndustryLevelTable |
산업 × 레벨 | IndustryLevelTID(키) · IndustryType · Level · Name · RequiredScore · RequiredAptitude · RequiredAccountLevel |
✅ 생성됨 (2026-08-01 · 25행 · Industry.xlsx · 2026-08-08 산업별 시트 분리) |
GatheringTable |
산업별 | IndustryType(=ItemType), YieldPerCycle, UnlockCondition |
❌ 미작성 |
CommonRewardTable |
전 산업 공통 | ItemTID, Weight — 티켓·고유 아이템 |
❌ 미작성 |
RarityWeightTable |
— | ❌ 폐지 (2026-07-31). 가중치는 산업 시트가 직접 갖는다 | — |
<산업>SpecialTable |
— | ❌ 폐지 (2026-07-30). 특별보상 층이 없어졌다 | — |
WeekdayRotationTable |
— | ❌ 폐지 (2026-07-29). 요일 로테이션이 없어졌다 | — |
기존 ItemTable(ItemTID/Name/ItemType/GlobalRarity/MaxStack/Description)을 그대로 참조한다.
아이템 TID는 산업별 10000 단위 대역이고, 그 안에서 레벨마다 10칸씩 쓴다
(2026-07-31 대역 확정 · 2026-08-01 레벨 구획 추가) —
낚시 10001~ · 농사 20001~ · 벌목 30001~ · 채굴 40001~ · 사냥 50001~.
| 레벨 | 낚시 | 규칙 |
|---|---|---|
| Lv1 | 10001~10006 |
대역 + 0 |
| Lv2 | 10011~10016 |
대역 + 10 |
| Lv3 | 10021~10026 |
대역 + 20 |
| Lv4 | 10031~10036 |
대역 + 30 |
| Lv5 | 10041~10046 |
대역 + 40 |
레벨당 10칸 중 6칸(희귀도 6단계)만 쓰므로 희귀도가 늘어도 대역이 밀리지 않는다. 산업당 9,950여 개가 남아 있어 레벨이 늘어도 자기 대역 뒤로 이어 붙인다. 현재 총 150종(산업 5 × 레벨 5 × 희귀도 6)이다.
DropTID는 6자리 대역(산업 × 100000 + 레벨 × 100 + 순번 — 농사 100101~ · 낚시 200101~)이라
아이템 TID와 숫자가 겹치지 않고, 레벨 999까지 버틴다 (2026-08-08 재채번 — 구식 ×1000은 레벨 10부터 붕괴).
산업 자리는 ItemType enum 값(농사 1 · 낚시 2 · 채굴 3 · 벌목 4 · 사냥 5)을 따른다 —
⚠️ ItemTID 대역(낚시 1 · 농사 2 …)과는 다르다. DropTID는 DB에 저장되지 않으므로 재배치해도 안전하다.
CycleSec컬럼은 두지 않는다.채취주기가 전 산업 공통 30초로 확정됐으므로판정 비용은IndustryLevelTable.RequiredScore가 갖는다(2026-08-01). 드롭 시트에 주기·비용 컬럼을 두면 같은 값이 두 곳에 생겨 조용히 어긋난다.
산업 고유 축은 <산업>BasicTable에 컬럼으로 붙인다
특별 테이블 층이 없어졌으므로, 산업마다 하나씩 있는 축은 자기 Basic 시트에 컬럼을 더한다.
⚠️ 2026-08-01 — 아래 축 대부분이
IndustryLevel하나로 통합된다. 사냥터·낚시터·수종은 곧 산업 레벨이다. 산업마다 다른 컬럼을 두는 대신 5종 전부에 같은IndustryLevel컬럼을 붙인다. → 산업 레벨 4장
| 산업 | 붙을 축 | 산업 레벨 도입 후 |
|---|---|---|
| 채굴 | 깊이 구간(DepthLevel) — 행 수가 깊이 구간 × 6이 된다 |
⚠️ 레벨(갱도)과 두 층으로 공존 — 결정 필요 |
| 사냥 | 사냥터(FieldTID) — 사냥터별로 드랍이 갈린다 → 사냥 |
IndustryLevel로 대체 |
| 낚시 | 낚시터(SpotTID) — 지금은 1개라 컬럼이 없다 |
IndustryLevel로 대체 |
| 벌목 | 잔여 자원량 (유저 상태라 시트가 아니라 DB) | 레벨(수종)과 직교 — 그대로 유지 |
| 농사 | 파종 작물 | ⚠️ 레벨과 겹친다 — 결정 필요 |
DropTID를 첫 컬럼에 두는 이유가 여기 있다. 축이 붙으면 (축, 희귀도) 조합마다 행이
생기므로 키가 될 수 있는 컬럼이 없어진다. DropTID가 그 자리를 미리 잡아 둔다.
Rarity 컬럼을 드롭 시트에 두지 않는다 — ItemTable.GlobalRarity가 원본이고,
드롭 시트는 ItemTID와 Weight만 갖는다.
⚠️ 제너레이터 제약 — 키는 단일 컬럼, 중복 불가
ExcelGenerator는 Type = ID 컬럼(없으면 첫 비배열 컬럼)을 자동으로 키로 잡고,
값이 중복되면 로드 시점에 예외를 던진다. 복합키가 없다.
가중치 롤처럼 "그룹 1개 : 행 N개"인 시트는 첫 컬럼에 고유 DropTID(ID)를 두고,
그룹 축(SpotTID·FieldTID·깊이 구간)은 일반 컬럼으로 둔 뒤
서버가 로드 후 (그룹 → 행 목록) 인덱스를 만든다.
<산업>BasicTable은 (희귀도 → 아이템) 1:1 매핑이라 Rarity가 그대로 키가 된다.
ItemTID 컬럼에는 Ref 마커(ItemTable.ItemTID)를 반드시 붙인다.
끊어진 TID를 .bytes 생성 전에 잡아 파이프라인을 멈춘다.
→ 낚시 5장
티켓·고유 아이템은 기본/특별과 무관한 3번째 롤이므로 산업별 테이블에 넣지 않는다. 산업 테이블에 중복 정의하면 확률 조정 시 5곳을 고쳐야 하고 산업 간 편차가 생긴다.
ItemType을 "아이템 분류"와 "산업 종류" 양쪽으로 쓰는 중이다. 의미가 갈리기 시작하면IndustryTypeenum을 분리한다. 자세한 우려는기획평가.md참조.
4. 서버 / 클라이언트 책임
| 책임 | 주체 | 이유 |
|---|---|---|
| 경과 시간 산정 | 서버 | 클라 시계 조작 방지 |
| 산출량·드랍 롤 | 서버 | 재화 생성 지점이므로 권위 필요 (P4) |
| 인벤토리 반영 | 서버 (DB) | |
| 진행 상황 표시·연출 | 클라이언트 | 서버 값의 시각화일 뿐 |
필요 패킷(제안): 채취 상태 조회 / 정산 요청·응답 / 산업 선택 변경.
패킷 추가는 Server/.claude/skills/packet-creator 규칙을 따른다.
산업 선택이 자유 변경(2.0)이므로 변경 패킷이 자주 온다. 변경 시점을 서버가 기록해야 그 이전 구간을 이전 산업으로 정산할 수 있다. 산업을 바꾸는 순간 일단 정산하고 타이머를 리셋하는 편이 계산이 단순하다.
5. 결정 필요 (Open Questions)
- 산업별 희귀도 분포 확률값은? 산업마다 두므로 5개 시트를 정해야 한다.
현재 5종 모두 낚시 기존값(
6590/2000/1000/300/100/10)을 공유하는 임시 상태다 - 산업별 회당 산출량은? 희귀도 분포와 함께 두 개 남은 수치 차별화 수단
- 보스 티켓을 어디서 얻는가? 특별보상 폐지로 경로가 비었다 (2.4)
- 낚시의 분포를 실제로 상위로 기울이는가? 수단은 생겼고(2026-07-31) 수치가 미정이다
- 캐릭터 스탯이 산출량에 어떻게 곱해지는가? (2.1 — 폐지된 요일배수의 자리) → 작업슬롯 5장
- 무한 누적을 방치하는가? (2.2 — 감쇠를 없앴으므로 상한이 유일한 제동 장치다. 슬롯 수만큼 곱해진다)
- 슬롯 변경(산업·캐릭터) 시 즉시 정산하는가? → 작업슬롯 3.1
- 채취에 재료·도구 소모가 있는가? (사냥은 소모품 전제 — 사냥)
- 산업별 해금 조건이 있는가? (처음부터 5개 전부 열려 있는가)
- 산업 레벨 해금 요구치(
N·M)는 얼마인가? ❌ 미정 — 조건의 형태는 확정됐고 (캐릭터 적성 + 계정 레벨) 값만 남았다. 엑셀은 현재 임시값 → 산업 레벨 3.3 - 회당 산출량이 레벨에 따라 달라지는가? 지금은 레벨과 무관이라, 상위 레벨은 시간당 총량이 1/3씩 줄고 아이템 가치로만 벌충한다 → 산업 레벨 7장 8번
해소됨:
- 산업 레벨의 해금 조건 — 캐릭터 적성 N + 계정 레벨 M 으로 확정(2026-08-01).
UnlockCondition범용 컬럼 대신 정수 2개로 끝났다.- 하위 레벨이 죽는 문제 — 상위 레벨이 느려진 것만으로 해결(2026-08-01). 하위 아이템 수요처가 없어도 "같은 시간에 더 많이 나온다"가 이유가 된다 → 산업 레벨 4.2
- "+α 산업"은 사냥으로 확정. 1차 산업은 5종으로 고정.
- 실패(허탕) — 전 산업 폐기. 판정하면 반드시 보상이 나온다.
- 산업 정체성 — 수치가 아니라 심리 정의로 확정 (1-1).
- 동시 가동 산업 수 —
택 1→ 슬롯 수만큼으로 변경(2026-07-29).- 요일 로테이션 — 폐지(2026-07-29). 배정 순서·배수
N·경계 시각 논점이 함께 사라졌다.- 오프라인 상한 — 24시간 100%, 이후 -50% 감쇠로 확정.
- 보상 구조 —
기본 9 : 특별 1→ 한 층으로 통합(2026-07-30). 공통 보상은 여전히 별도 롤.- 특별보상 비율·특별보상 내부 등급 — 특별보상 폐기로 질문이 사라졌다(2026-07-30).
- 희귀도 분포의 산업별/공통 —
전 산업 공통→ 산업별로 변경(2026-07-31). 가중치는 각 산업의<산업>BasicTable이 직접 갖는다.RarityWeightTable은 만들지 않는다.- 채취주기 — 전 산업 공통 30초로 확정.
- 개체 변량 — 폐기. 희귀도 + 별도
ItemTID로 등급을 표현한다."+β"(주말 추가 요소)는 여전히 미정 — 필요 없으면 삭제를 권장한다.
⚠️ 1~3번은 주기 통일로 남은 유일한 차별화 수단이다. 이 셋을 산업마다 다르게 잡지 않으면 5개 산업이 이름만 다른 같은 채취가 된다.