파일
project/docs/GAME_DESIGN.md
T
kjs그리고Claude Fable 5 8ef59a8215 채팅 UI 개편: 한 줄 티커 + 우측 사이드패널 채팅창
- 티커: 반투명 검은 가로 박스, 새 채팅을 한 줄씩 7초간 순차 표시,
  길면 말줄임(…) 처리. 접속 이후 도착한 메시지만 흘림
- 💬 버튼 → 기존 메뉴와 같은 우측 사이드패널로 전체 채팅창
  (히스토리 스크롤 + 말풍선 + 입력창, 내 메시지는 오른쪽 초록)
- SSE 연결은 chatClient 싱글톤(useSyncExternalStore)으로 티커·패널 공유
- 1:1 친구 채팅 로드맵을 docs/GAME_DESIGN.md 12절에 기록

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 16:47:10 +09:00

11 KiB
Raw 고유링크 Blame 히스토리

고양이 마을 — 게임 설계서 v1

초안(방치형 경영 게임 설계)을 현재 구현 상태에 맞춰 구체화한 문서. 원칙: 개체 애착 / 슬롯 압박 / 병목은 항상 하나 / 자동화는 보상 / 초기화 없음


0. 현재 구현 상태 (2026-08-13)

영역 상태
자원 생선·목재 ✅ / 돌·약초·털뭉치 ⬜
건물 부두·벌목장·부엌·회관(Lv2) ✅ / 채석장·약초밭·창고 등 ⬜
고양이 8품종 스프라이트(6포즈)·적성·근면/체력/식욕·경험치/레벨 ✅
식사 물고기 구이, 포만도, 자동 식사, 배고픔 페널티 ✅
패시브 속도·식사량 계열 실효과 ✅ / 체력·행복도 계열 ⬜ (효과 대기)
입양 후보 3마리 모달 (무료) ✅ / 비용·재추첨 ⬜
시간 낮/밤 ⬜ / 행복도 ⬜ / 냥코인·상점 ⬜
저장 localStorage(version 1) ✅ / 오프라인 보상·서버 저장 ⬜

1. 핵심 루프

[초반 5분]   고양이 배치 → 자원 회수 → 부엌 건설 → 식사 안정화
[초중반]     회관 증축 ← 자원+고양이 레벨 게이트 → 슬롯·건물 해금
[중반]       특산품 생산 → 판매(냥코인) → 입양·편의시설 → "먹일까 팔까" 선택
[중후반]     야간 라인 구성, 행복도 관리, 좋은 개체 뽑기(입양 비용↑)
[장기]       마을 확장 / 원로 시스템 (초기화 없는 목표, §8)

체크인 리듬(방치형): 3~5분마다 회수 → 운반 수레(회관 Lv5) 해금 시 자동화.


2. 재화·경제

2.1 자원 흐름 (병목 설계)

생선 ──┬─→ 부엌: 구이(2)/훈제(3) → 식사 (개체 수에 비례해 소모 증가)
       └─→ [상점] 판매 → 냥코인          ← "먹일까 팔까"

목재 ──┬─→ 건물 건설·증축
       └─→ 목공소: 목재4 → 목판1 → 상위 건물   ← 중반 병목

돌   ───→ 회관 Lv3+·중급 건물             ← 채석장 (다음 구현)
약초 ───→ 회복·행복도 아이템, 요리 재료      ← 약초밭
털뭉치 ─→ 방직소: 2 → 실타래1 → 가구·판매    ← 후반 병목
  • 병목 이동 계획: 초반 생선(식사) → 중반 목재/목판(건설) → 중후반 냥코인(입양·편의) → 후반 실타래·행복도
  • 판매가(기준): 생선 1 = 1냥코인, 구이 = 4, 훈제 = 10, 실타래 = 25 (특산품일수록 마진↑ → 가공 유도)

2.2 특수 재화

재화 획득 용도
냥코인 특산품 판매, 복덩이 패시브 입양 비용, 재추첨, 상점 아이템, 패시브 교체
인연 증표 업적·특별 이벤트 특별 고양이, 마을 확장(§8), 슬롯 확장
  • 골골 포인트(프레스티지)는 폐기 — 초기화 없음 원칙에 따라 §8의 장기 구조로 대체.

3. 건물 로드맵

3.1 확정 수치 (구현 완료)

건물 슬롯 기능 비용
부두 3 생선 (낚시 적성) 시작 제공
벌목장 3 목재 (벌목) 시작 제공
부엌 2 요리 (요리) · 선반 10 목재 60

3.2 다음 구현 (Phase A~C 순)

건물 슬롯 기능 건설 비용(안) 해금
채석장 3 돌 (채굴) 목재 120 회관 Lv2
약초밭 2 약초 (채집) 목재 80, 돌 40 회관 Lv3
고양이 집 - 행복도 하락 방지 (수용 4/채) 목재 100, 돌 20 회관 Lv3
상점 1 특산품 판매 → 냥코인 (자동 판매 큐) 목재 150, 돌 80 회관 Lv3
목공소 2 목재4→목판1 (제작) 목재 200, 돌 100 회관 Lv4
햇볕 데크 - 행복도 자연 회복 +50% 목재 120, 약초 30 회관 Lv4
빗질터 2 털뭉치 (손질) 목재 150, 목판 10 회관 Lv4
방직소 2 털뭉치2→실타래1 (제작) 목판 30, 돌 150 회관 Lv5
훈련소 2 경험치 획득 2배 (배치만으로 성장) 목판 20, 돌 100 회관 Lv4
온천 - 행복도 즉시 회복(쿨타임), 야간 페널티 완화 목판 40, 실타래 20 회관 Lv5
운반 수레 - 자원 자동 회수 (클릭 제거 — 자동화 보상) 목판 60, 실타래 30 회관 Lv5
창고 - 자원 보관 상한 (미구현 상한 도입 시) 보류 보류
  • 부엌 증축: Lv2 = 목재 150, 돌 60 → 훈제 생선 해금(회관 Lv3 필요), 선반 15.
  • 건물 레벨업(부두 등): Lv2 = 슬롯 +1, 산출 +25% (비용: 기본 건설비 × 2).

4. 고양이

4.1 능력치 (확정)

  • 근면 50~150: 작업 속도 배율 (구현됨)
  • 체력 50~150: 연속 작업 게이지. 소진 → 강제 휴식(고양이 집으로 이동, 5분). 튼튼함 패시브 연결 (Phase B)
  • 식욕 1~5: 포만도 감소 속도 (구현됨)
  • 적성 비선형 테이블 [1, 2.2, 4.8, 10, 21, 45] × BASE_RATE 0.2 (구현됨)

4.2 성장 (확정 + 조정)

  • 배치 중 경험치 1/초, 필요치 = 레벨 × 60 → 레벨 × 90으로 상향 (Phase A에서 조정, 훈련소 가치 확보)
  • 레벨업: 근면 +1~3 (구현됨) + 3레벨마다 적성 포인트 1 지급, 플레이어가 원하는 적성에 투자 (상한: 품종 캡)
  • 이름: 랜덤 부여 + 언제든 변경 가능 (카드에서 연필 아이콘)

4.3 패시브 로드맵

단계 패시브 효과 연결
구현됨 부지런함/게으름뱅이/일중독/소식가/대식가 속도·식사량
Phase B 튼튼함, 낮잠꾸러기 체력 게이지
Phase B 낙천적, 까다로움, 인기쟁이 행복도
폐기 야행성, 겁쟁이 낮/밤 없음으로 제외. 스핑크스 특성은 "잠이 없음(휴식 50% 단축)"
Phase C 복덩이, 손끝 야무짐, 장인 기질, 미식가, 외골수 냥코인·가공·식사
Phase C 패시브 교체권 (상점, 냥코인 500) 후반 개체 커스텀

5. 마을 회관 게이트 (조정판)

Lv 수용 자원 건물 조건 고양이 조건 기타
1 3 — — — ✅
2 5 목재100 생선80 — Lv3↑ 1마리 ✅
3 8 목재250 돌150 채석장, 부엌Lv2 Lv5↑ 2마리 평균 행복도 60↑*
4 12 돌400 목판40 목공소, 고양이집 Lv8↑ 3마리 평균 행복도 70↑
5 16 목판120 실타래60 방직소, 상점 Lv12↑ 4마리 품종 4종↑
6 20 실타래300 냥코인5000 훈련소, 온천 Lv15↑ 5마리 평균 행복도 80↑

* 행복도 조건은 행복도 시스템(Phase B) 이후부터 적용.


6. 시간·체력·행복도 (Phase B)

6.1 시간 — 낮/밤 없음 (확정)

  • 날짜·밤 개념 없이 항상 낮. 시간 압박 대신 체력·행복도가 페이스를 만든다.
  • 잠자는 포즈는 체력 소진 휴식에 사용.
  • 야행성·겁쟁이 패시브는 폐기. 스핑크스 고정 특성은 "잠이 없음 — 휴식 시간 50% 단축"으로 교체.
  • 오프라인 진행: Date.now() 차이로 최대 8시간 정산 (생산·소모·휴식 동일 로직).

6.2 체력 게이지

  • 배치 중 분당 -2 (튼튼함 -30%, 일중독 +40%). 0이 되면 강제 휴식: 배치 해제 후 고양이 집(없으면 아무 데서나)에서 sleep 포즈로 회복, 분당 +20 (고양이 집 +30, 온천 즉시 완충).
  • 낮잠꾸러기 패시브: 체력과 무관하게 3분마다 30초 낮잠.

6.3 행복도

요인 변화량(분당)
포만도 80↑ 유지 +1
굶음(포만도 0) -4
고양이 집 부족(수용 초과분) -2
휴식 중 +3
햇볕 데크 자연 회복 ×1.5
온천 사용 즉시 +30 (쿨타임 20분)

구간 효과: 80↑ 속도+10% / 5079 정상 / 2049 -30% / 0~19 파업(배치 해제 후 배회).


7. 냥코인·상점 (Phase C)

  • 상점 건물: 판매 큐에 자원 올리면 자동 판매 (분당 5개, 상점 레벨로 증가).
  • 입양 비용 도입: 1회 100냥코인 (마릿수마다 +50). 재추첨 30냥코인.
  • 상점 판매 아이템: 패시브 교체권, 이름표(고급 이름 변경 연출), 장식품(마을 데코, 행복도 소폭↑), 고급 사료(포만도 최대치 임시 +20).
  • 복덩이 패시브: 자원 획득 시 1% 확률 냥코인 +1 (이때부터 실효과).

8. 장기 구조 — 마을 확장 (확정)

  • 강 건너 새 부지: 인연 증표로 다리 건설 → 두 번째 마을 구역 해금.
  • 새 구역: 추가 건물 부지 + 수용 인원 +α + 신규 장식. 기존 마을은 그대로 유지 (순수 추가, 초기화 없음).
  • 고양이 은퇴·세대교체는 없음 — 한 번 입양한 고양이는 끝까지 마을 구성원.
  • 슬롯 압박은 회관 증축·마을 확장으로만 해소 → "누구를 어디에"의 고민은 유지하되 이별은 없음.

9. 기술 설계

  • 엔진: 모듈 싱글턴 + rAF 델타 타임, UI 300ms 동기화 (구현됨, 유지)
  • 저장: localStorage version 필드 → 스키마 변경 시 마이그레이션 함수 체인 (v1→v2→…)
  • 서버 저장(확정, Phase D): PostgreSQL(pg-jskim) + Next.js API route로 세이브 동기화. 브라우저 UUID 기준(계정 없음), 테이블 saves(uuid PK, data JSONB, updated_at). 충돌 시 updated_at 최신 우선
  • 수치 밸런스는 data.ts에 전부 상수화 (이미 준수) — 밸런스 패치는 데이터만 수정

10. 구현 로드맵

Phase 내용 규모
A 채석장+돌, 회관 Lv3, 부엌 Lv2+훈제 생선, 건물 건설 공통화, 적성 포인트 투자, 경험치 조정 중
B 체력 게이지·강제 휴식(수면 포즈)·행복도·고양이 집·햇볕 데크·관련 패시브, 오프라인 정산 대
C 냥코인·상점·판매·입양 비용/재추첨·약초밭·목공소·회관 Lv4 대
D 빗질터·방직소·훈련소·온천·운반 수레(자동화)·회관 Lv5~6, 서버 세이브 동기화 대
E 마을 확장(강 건너 부지)·인연 증표·업적, 폴리싱 중

각 Phase 완료 시 배포 가능한 상태 유지 (독립 배포 단위).


11. 확정된 결정 사항 (2026-08-13)

  1. 장기 구조: 마을 확장만. 고양이 은퇴·세대교체 없음
  2. 서버 연동: DB 세이브 동기화 (Phase D). 친구 방문은 보류
  3. 시간: 날짜·낮/밤 없음, 항상 낮. 페이스는 체력·행복도로 조절
  4. 이름: 랜덤+변경 가능 / 외형: 일러스트 확정 / 수용 초과: 입양 제한 유지

12. 소셜 기능 로드맵 (2026-08-14 추가)

현재 구현: 전체 채팅 — 우측 상단 반투명 검은 티커(새 채팅 한 줄씩, 말줄임 처리) + 💬 버튼으로 우측 사이드패널 채팅창. SSE 실시간, 닉네임+토큰 인증, 1.5초 쿨다운, 120자 제한.

친구 기능 구현 후 추가할 것 (예정)

  1. 친구 시스템 선행 필요: 친구 요청/수락, 친구 목록 (villages 테이블 기반)
  2. 1:1 채팅: 친구끼리만 가능
    • 채팅 패널 상단에 탭 추가: [전체] [친구1] [친구2] … — 현재 ChatPanel은 이 확장을 염두에 둔 구조
    • DB: chat_messages에 recipient 컬럼(NULL=전체 채팅) 추가하는 방향
    • SSE 스트림에서 수신자 필터링 (본인 대상 메시지만 푸시)
    • 안 읽은 메시지 뱃지 (티커/💬 버튼에 표시)
  3. 연계 후보: 친구 마을 방문(읽기 전용)과 함께 구현하면 시너지