GameDesign/design/gathering/fishing/README.md 최종 업데이트 2026-08-08

1차 산업 — 낚시 (Fishing)

상위: 자원채취 · 게임기획코어.md 최종 업데이트: 2026-08-08 · 상태: 루프 확정 · 드롭 시트 실데이터 · 확률값 임시 바뀌면 갱신: 게임기획코어 · 기획평가 · 산업레벨 · 자원채취 enum: ItemType.Fishing = 2 ✅ 존재


1. 확정 사항

# 항목 확정 내용
0 심리 정의 확실한 도파민 — 자주, 즉각적으로 만족을 준다
1 가동 방식 낚시를 지정한 슬롯마다 독립적으로 돌아간다 (2026-07-29 슬롯 구조)
2 채취주기 30초. 전 산업 공통 · Lv1 기준 (2026-08-01)
3 실패(허탕) 없다. 30초마다 반드시 무언가 나온다 (전 산업 폐기)
4 낚시터 ⚠️ 산업 레벨로 대체 (2026-08-01). FishingSpotTable을 만들지 않는다
5 보상 구조 한 층 (2026-07-30). 희귀도 롤 한 번 + 공통 보상 별도 롤
6 채취 보상 가중치·아이템 모두 낚시 것 (2026-07-31). 분포 통일이 폐지됐다
7 특별보상 층 폐지 (2026-07-30). 대물의 경로 미정
8 티켓·고유템 전 산업 공통. 채취 보상과 무관한 별도 롤
9 개체 변량 없다. 크기 수치 롤 없음. 등급은 별도 ItemTID
10 오프라인 폐지 (2026-07-29). 접속 중에만 자란다. 감쇠·상한 논의 자체가 없어졌다
11 요일 폐지 (2026-07-29). 요일 로테이션 전체가 없어졌다

2. 낚시 루프

2.1 판정 루프 (30초) — 실패 없음

판정 ── 반드시 보상
  │
  ├─ ① 채취 보상 (분기 없음)
  │        └─ 가중치 롤 한 번 ← FishingBasicTable (가중치·어종 모두 낚시 것) ✅
  │             예) 붕어 6590 / 잉어 2000 / 월척 붕어 1000 …
  │
  └─ ② CommonRewardTable 롤 (①과 별개, 매 판정)
          └─ 티켓 · 고유 아이템

① 기본 / 특별 분기 (9 : 1) 폐지 (2026-07-30). 층 분기가 없어졌다. 희귀도 롤 → 아이템 매핑 2단계 폐지 (2026-07-31). 한 단계로 되돌렸다.

채취 속도는 적성 × (1 + Σ가산) × Π승산으로 정해진다 (→ 작업슬롯 3.4). 서버가 굴리는 롤은 판정당 2회(채취 → 공통보상).

2.2 체감 루프

접속 중 (위젯 상주) 30초마다 찌 → 반드시 무언가 올라온다. 헛치는 일이 없다. 슬롯마다 독립적으로 돌고, 완성된 판정은 서버가 실시간으로 밀어 준다.

실패가 없다는 것이 "확실한 도파민"의 핵심 근거다. 위젯을 볼 때마다 뭔가 잡혀 있고, 기다림에 배신이 없다.

오프라인 (접속 시 일괄 정산) — 폐지 (2026-07-29)

0~24h는 ×1.0, 이후 ×0.5로 감쇠해 접속 시 일괄 지급오프라인 진행 자체가 없어졌다. 접속하면 진행도 0에서 시작하고, 접속이 끊기면 완성된 판정만 지급하고 진행 조각은 버린다.자원채취 2.2 · 작업슬롯 3장

2.3 하루 기준 실측 (24시간 연속 접속 · 실패 없음)

구분
총 판정 2,880
채취 보상 2,880 (전량)

9 : 1 / 8 : 2 비교 폐지 (2026-07-30). 층 분기가 없어져 전량이 채취 보상이다. 기준 속도(1.0배) 슬롯 1개 기준이며, 속도·슬롯 수만큼 곱해진다.


3. 산업 정체성

항목
심리 정의 확실한 도파민
투자 비유 소액 잦은 당첨
한 줄 기다리면 반드시, 자주 나온다
회당 산출 적음 (소액을 자주)
실패율 없음
특별보상 ❌ 층 폐지 (2026-07-30) — 대물의 경로 미정
역할 접속 동기 담당 — "오늘 뭐 잡혔나 볼까"
플레이어 개입 없음 (낚시터 1개인 동안)

도파민 정의가 요구하는 것

"확실한 도파민"이 되려면 자주 · 즉각 · 배신 없이 보상이 와야 한다.

조건 현재 상태
배신 없음 ✅ 실패 폐기로 충족
자주 ✅ 30초 주기
즉각 ✅ 위젯에서 바로 보임
특별한 게 자주 ⚠️ 수단이 생겼다 — 수치는 미정 (2026-07-31)

✅ 분포 통일 폐지로 수단이 돌아왔다 (2026-07-31)

낚시의 특별보상 비율을 20%로 올린다 (층 폐지로 무산) → 희귀도 분포를 낚시만 상위로 기울인다.

희귀도 분포가 전 산업 동일이라는 확정이 폐지되면서, 낚시의 FishingBasicTable이 자기 가중치를 직접 갖게 됐다. 다른 산업보다 상위 등급 비중을 높이면 "특별한 게 흔한 산업"이라는 체감이 수치로 만들어진다.

다른 산업 낚시
회당 산출 중간~많음 적음
상위 등급 비중 기준 높임 ← 도파민의 근거

"적게 자주, 대신 좋은 게 잘 나온다" 가 낚시의 수치 정의가 된다. 회당 산출이 적은 것과 맞물려 총 기대값은 다른 산업과 균형을 잡는다.

⚠️ 얼마나 기울일지는 미정이다. 너무 기울이면 낚시가 최적해가 되어 다른 산업이 죽고, 조금 기울이면 체감이 안 난다. → 자원채취 5장 결정 필요 4번

낚시에는 고유 메커니즘이 없다 — 대신 수치로 가른다

낚시는 5종 중 유일하게 "고르고 지켜보기만 하는" 산업이다.

산업 개입 지점 고유 메커니즘 수치 차별화
농사 파종 작물 선택 있음 회당 산출 최다
벌목 벌목 강도 조절 자원 고갈·재생 산출이 자원량 비례
채굴 하강 ↔ 채굴 배분 깊이 누적 깊이가 분포를 올린다
사냥 사냥터 선택 사냥터 분리 + 보스 사냥터별 드랍
낚시 없음 없음 상위 등급 비중을 높인다

심리 정의상 개입이 없는 게 맞다. "확실한 도파민"은 조작을 요구하지 않는 게 자연스럽고, P1(주의를 뺏지 않는다)과 가장 잘 맞는 산업이 된다.

2026-07-31 기준 낚시의 차별화는 수치 두 개로 선다 — 회당 산출(적음) + 희귀도 분포(상위 편중). 메커니즘이 없다는 사실은 그대로지만, 차별화 수단이 통째로 비어 있던 상태는 해소됐다.

낚시터 확장은 여전히 열린 선택지다. / 낚시터를 계속 1개로 둘지 "조작 없는 산업"으로 확정할지를 정해야 한다.

✅ 산업 레벨이 낚시터를 대신한다 (2026-08-01)

낚시터를 따로 만들지 않는다. 산업 레벨이 도입되면서 "어디서 낚을지"는 낚시 레벨이 담당한다 — 5종 전부가 같은 구조를 쓴다.

이전 현재
개입 지점 없음 (5종 중 유일) 배치할 때 레벨 선택
데이터 FishingSpotTable (미생성) FishingBasicTable.IndustryLevel 컬럼
차별화 회당 산출 + 희귀도 분포 위 둘 + 레벨별 어종 구성

"고유 메커니즘이 없는 유일한 산업"이라는 상태가 해소된다. 다만 레벨 선택은 배치할 때 한 번이라 상시 조작이 아니므로, "조작 없는 산업"이라는 P1 정합성은 그대로 유지된다.


4. 산출물

채취 보상 — 희귀도별 어종

희귀도 예시 비고
Common 붕어 · 낡은 장화 잡템도 여기
Uncommon 잉어
Rare 월척 붕어 같은 어종의 상위 등급 = 별도 ItemTID
Epic 향어
Legendary 대물 잉어
Mythic 전설의 잉어

희귀도가 나올 확률은 채굴·농사와 완전히 동일하다 — ❌ 폐지 (2026-07-31). 가중치를 FishingBasicTable이 직접 갖게 되면서 낚시만 다른 분포를 쓸 수 있다 (3장). 지금은 5종이 같은 임시값을 쓰고 있을 뿐이다.

특별보상 (10%) — 대물폐지 (2026-07-30)

층이 없어졌다. 대물을 희귀도 롤의 상위 등급(Legendary·Mythic)으로 흡수할지, 버릴지 결정이 필요하다. 위 표에 이미 대물 잉어·전설의 잉어가 있어 흡수가 자연스럽다.

공통 보상 (별도 롤)

티켓 · 고유 아이템. 전 산업 동일 확률.


5. 데이터 설계

FishingBasicTableGameDesign/Excel/Drop낚시.xlsx의 레벨별 시트(FishingBasicTable.Lv1~.Lv5)로 존재하고, 제너레이터가 한 테이블로 병합한다 (2026-08-08 파일 분리). 더미는 2026-07-31에 실제 어종으로 교체됐고, 2026-08-01에 레벨 5단계로 확장됐다. FishingSpecialTable만들지 않는다 — 특별보상 층이 폐지됐다 (2026-07-30).

테이블 컬럼 범위
FishingBasicTable DropTID, IndustryLevel, ItemTID, Weight, Description DropTID 어종 + 가중치.38행 (Lv1 6행 + Lv2~5 각 8행)
FishingSpecialTable 폐지 (2026-07-30)
FishingSpotTable 폐지 (2026-08-01). 산업 레벨이 대신한다

Lv1 현재 값 (2026-07-31 · 가중치는 5종 공통 임시값):

DropTID ItemTID 어종 Weight
200101 10001 붕어 6590
200102 10002 잉어 2000
200103 10003 월척 붕어 1000
200104 10004 향어 300
200105 10005 대물 잉어 100
200106 10006 전설의 잉어 10
  • DropTID는 6자리로 재배치됐다 (2026-08-08): 산업 × 100000 + 레벨 × 100 + 순번. 산업 자리는 ItemType enum 값이라 낚시는 2200101~200508이다. 1101~1508(구식 ×1000 — 레벨 10부터 붕괴)은 낡은 번호다.
  • Lv2~5는 자기 어종 6종 + Lv1 하위 2종 혼입으로 8행씩이다 → 산업 레벨 4.3
  • 레벨 이름(개울 · 저수지 · 강 하류 · 호수 · 심해)은 IndustryLevelTable.Name에 있다.

🔴 서버는 아직 IndustryLevel을 읽지 않는다 (일감 T-017). 38행이 한 테이블에 뭉쳐 있어 어떤 레벨을 돌리든 심해 어종까지 섞여 나온다.

⚠️ 드롭 시트는 첫 컬럼에 고유 DropTID를 둔다

ExcelGenerator는 단일 컬럼 키만 지원한다 — Type = ID인 컬럼이 있으면 그것을, 없으면 첫 비배열 컬럼을 자동으로 키로 잡고, 값이 중복되면 로드 시점에 예외를 던진다.

예를 들어 (SpotTID, ItemTID, Weight) 형태로 만들면 SpotTID가 키가 되어 같은 낚시터의 행이 2개 이상인 순간 깨진다. 가중치 롤 성격의 시트는 첫 컬럼에 ID 타입 DropTID를 두고, SpotTID 같은 그룹 축은 일반 컬럼으로 둔 뒤 서버가 로드 후 그룹 인덱스를 만든다. (이 규칙은 특별 테이블 때문에 생겼지만, 그룹 축이 붙는 모든 시트에 그대로 적용된다.)

FishingBasicTable(희귀도 → 아이템) 1:1 매핑이라 Rarity가 그대로 키가 된다. 채굴처럼 축이 하나 더 붙는 산업(깊이 구간)은 Basic도 DropTID 방식이 필요하다.

ItemTID 참조 검사 (Ref 마커)

드롭 시트의 ItemTID는 오타나 삭제된 아이템이어도 타입(int)은 멀쩡해서 .bytes까지 그대로 만들어지고, 실제 드랍이 일어나는 런타임에야 터진다. 이를 막기 위해 엑셀 마커 행에 Ref를 추가했다.

마커 의미
Ref ItemTable.ItemTID 이 컬럼 값이 대상 시트·컬럼에 실재해야 한다
Ref ItemTable.ItemTID? ?를 붙이면 빈 셀·0(참조 없음)을 허용

GameDesign/generate-tables.ps1 실행 시 코드 생성 전에 검사하고, 위반이 있으면 전부 모아 출력한 뒤 파이프라인을 중단한다.

낚시 테이블에 두지 않는 것:

항목 어디에 있나
CycleSec (30초) 전역 상수
티켓·고유 아이템 CommonRewardTable
Rarity 중복 컬럼 ItemTable.GlobalRarity가 원본

희귀도 가중치는 여기 있다. FishingBasicTable.Weight가 낚시의 분포다 (2026-07-31 — RarityWeightTable 폐지).

낚시터를 늘릴 때 SpotTID 행만 추가하면 되도록 처음부터 키에 넣어 둔다SpotTID는 만들지 않는다 (2026-08-01). 그 자리를 IndustryLevel이 차지했다. 밸런스 수치는 GameDesign/Excel/*.xlsx가 원본. 수정 후 GameDesign/generate-tables.ps1 실행.


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

책임 주체 이유
판정 횟수 산정 (누적 작업량 / 필요 점수) 서버 클라 시계 조작 방지
24h 감쇠 구간 분할 ❌ 오프라인 구간이 없어졌다 (2026-07-29)
희귀도 롤 서버 재화 생성 지점 (P4)
슬롯 배치 변경 기록 서버 변경 전 구간을 이전 설정으로 정산해야 함
낚시 연출 · 물고기 표시 클라이언트 서버 값의 시각화

판정당 서버 롤은 2회(채취 → 공통보상). 실패 롤·개체 변량·특별 분기·희귀도 선행 롤이 모두 없어져 이 이상 늘지 않는다.


7. 결정 필요 (Open Questions)

  1. 낚시의 희귀도 분포를 얼마나 상위로 기울이는가? 수단은 생겼다(2026-07-31 분포 통일 폐지). 너무 기울이면 낚시가 최적해가 되고, 조금이면 체감이 안 난다 — 수치 미정
  2. 대물을 희귀도 상위 등급으로 흡수하는가, 버리는가? (4장)
  3. 회당 산출은 1개 고정인가, 1~2개인가? (1 고정이 가장 단순)
  4. 어종을 희귀도 6단계에 몇 개씩 배치하는가? (FishingBasicTable이 6행이면 어종 6개)
  5. 잡템(낡은 장화)을 Common에 섞는가, 아예 빼는가? (실패가 없어진 지금 "꽝 느낌" 아이템을 넣으면 도파민 정의와 어긋난다)
  6. 낚시를 "조작 없는 산업"으로 확정하는가, 낚시터를 늘려 개입 지점을 만드는가?해소 (2026-08-01) — 산업 레벨이 개입 지점이 된다. 낚시터는 만들지 않는다 (3장)
  7. 낚시 레벨은 몇 개이고, 레벨마다 어종을 몇 개씩 두는가?산업 레벨

낚시 단독으로 정할 수 없는 것 (전 산업 공통): 희귀도 분포 확률값(T-008) · 회당 산출(T-009) → 자원채취 5장

해소됨: 심리 정의 ✅ / 가동 방식 ✅ / 주기 30초 ✅ / 실패 폐기 ✅ / 보상 9:1한 층 통합(2026-07-30) / 티켓 별도 롤 ✅ / 개체 변량 폐기 ✅ / 낚시터 → 산업 레벨로 통합 ✅ (2026-08-01)

오프라인 24h -50% / 평일 보너스 배수 N / 희귀도 분포 공통셋 다 폐지된 질문이다 (2026-07-29 · 07-31).