커밋 그래프
19 커밋
작성자 SHA1 메시지 날짜
kjs그리고Claude Fable 5 ad6dbdbe97 튜토리얼 졸업 시 정착 지원금 냥코인 200 (경제 소프트락 수정)
- 장터(회관 Lv2 건설) 전까지 코인 수입이 없어 3마리째 입양(100코인)이
  불가능하던 문제 — 부엌 인력을 못 뽑아 굶는 소프트락
- 작별 단계 진입 시 촌장 냥이가 🪙200 지급 + 작별 대사에 안내
- 이미 튜토리얼을 마친 기존 마을도 접속 시 1회 소급 지급 (중복 방지 플래그)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 11:11:44 +09:00
kjs그리고Claude Fable 5 d5ce9be5f4 닉네임 타이틀·마을 불러오기·동기화 비교 버그 수정
- HUD 타이틀: 닉네임 설정 시 "{닉네임}의 마을 · 회관 LvN"
- 닉네임 모달에 "마을 불러오기" 모드: 기존 마을 이름 입력 →
  1초 디바운스로 존재 확인("마을을 찾았어!") → 서버 세이브 복원
  (/api/village/recover — 토큰 포함 반환, 비밀코드 보호는 추후)
- pull 비교 버그 수정: 오프라인 정산이 로컬 updatedAt을 항상 현재로
  만들어 다른 기기 세이브를 절대 못 받던 문제 → 디스크에서 읽은
  시점(loadedUpdatedAt) 기준으로 비교
- 모달 UX: Enter로 결정(한글 조합 중 제외), IME 간섭 제거(trim 시점 이동),
  모드 전환 시 자동 재체크

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 10:44:50 +09:00
kjs그리고Claude Fable 5 5dd74babe8 Phase D: 닉네임 기반 DB 세이브 동기화
- villages 테이블(pg-jskim): nickname PK + 보호 토큰 + JSONB 세이브
- API: /api/village/check(중복)·register(선점)·save(토큰 검증 업서트)·load
- 닉네임 모달: 촌장 냥이 인사 직후 게임 차단, 입력 멈춘 1초 후 자동
  중복 체크(디바운스), 사용 가능할 때만 결정 버튼 활성화
  한글·영문·숫자 2~12자 검증, 서버 불가 시 로컬 시작 후 재시도
- 동기화: 30초마다 자동 push + 종료 시 push, 부팅 시 서버가 더 최신이면
  교체(replaceState → 마이그레이션·오프라인 정산 재수행)
- 기존 세이브도 닉네임 미설정이면 모달 표시

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 10:36:22 +09:00
kjs그리고Claude Fable 5 3cbad820a3 행복도 시스템 해금제: 회관 Lv3 + 햇볕 데크 설치 시 개방 (소프트락 수정)
- 해금 전: 행복도 증감·파업 로직 완전 비활성, 속도 배율 중립, UI에서 💗 숨김
  → 초반에 행복도를 올릴 수단이 없어 파업 소프트락에 걸리던 문제 해결
- 해금 조건 달성 시 촌장 냥이가 재등장해 행복도 시스템 안내 (1회)
- 해금 순간 전원 행복도 80으로 초기화
- 기존 세이브 마이그레이션: 조건 미충족이면 파업 해제 + 행복도 리셋,
  이미 충족한 마을은 안내 생략
- 햇볕 데크 설명에 해금 역할 명시

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 09:49:29 +09:00
kjs그리고Claude Fable 5 ec71624a29 Phase C: 냥코인 경제 — 장터·창고 상한·입양 비용·즉시 완공
- 냥코인(🪙) 재화 + HUD 표시, 복덩이 패시브 실효과(일하는 중 평균 100초당 1)
- 장터 건물(목재 120, 회관 Lv2): 판매 품목 선택 → 분당 5개 자동 판매
  가격: 생선 1·목재 2·돌 3·구이 4·훈제 10 — 가공할수록 이득
- 창고 상한: 자원별 기본 500, 창고 건물(+500)로 확장. 가득 차면 회수 차단
  (부분 회수·"창고 가득" 피드백), 건물 적재도 150 한도로 생산 정지
- 입양 비용: 3마리째부터 100+(n-2)×50, 모달에 비용 표시. 재추첨 🎲 30코인
- 즉시 완공: 건설 중 패널에서 남은 10초당 1코인
- 요리 판매는 부엌 선반에서 차감 — "먹일까 팔까" 선택 완성

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 09:42:29 +09:00
kjs그리고Claude Fable 5 9a534b0f06 마을 초기화 기능 제거
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 18:21:18 +09:00
kjs그리고Claude Fable 5 8138284d7e 튜토리얼 페이스 개선: 촌장 냥이가 건설 자원 지원
- 단계 진입 시 자동 지급: 벌목장(생선 30)·부엌(목재 60)·회관 증축(목재 100+생선 80)
- 회관 단계에선 '특훈'으로 최고 레벨 친구를 Lv3으로 — 대기 없이 증축 가능
- 대사에 지원 멘트 반영 ("내가 미리 준비해뒀어!", "마을 발전 기금에서 내가 쏠게")

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 18:19:50 +09:00
kjs그리고Claude Fable 5 dd49dd8c6d 마을 초기화 버튼 (회관 패널)
- engine.reset(): 세이브 삭제 + 새 게임 상태로 즉시 전환 (튜토리얼부터)
- 회관 패널 하단에 확인 창 포함 초기화 버튼
- 콘솔에서 localStorage만 지우면 5초 자동 저장이 되살리는 문제의 정식 해법

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 18:12:05 +09:00
kjs그리고Claude Fable 5 6225403290 튜토리얼: 촌장 냥이가 안내하는 10단계 온보딩
- 새 게임: 회관만 있는 빈 마을(고양이 0·자원 0)에서 시작
- 촌장 냥이(코숏 스프라이트) + 말풍선 가이드 오버레이 (진행도 n/10, 태스크 칩)
- 라인: 인사 → 첫 입양 → 부두 건설(무료·강물 위)·배치 → 둘째 입양 →
  벌목장 건설(생선 30)·배치 → 부엌 건설(목재 60) → 회관 Lv2 증축 → 작별
- 조건 충족 시 자동 진행, 인사·작별은 버튼. 완료 후 자유 운영(step 99)
- 부두·벌목장을 상점 구매 건물로 이동 (기존 세이브는 "보유 중"+튜토리얼 생략)
- 튜토리얼 입양 후보는 필요 적성(낚시→벌목) 보장

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 17:58:58 +09:00
kjs그리고Claude Fable 5 a90d9b217f 꾸미기 시스템: 바닥 장식 타일 9종 (deco.png)
- deco 시트 9분할 (흙마당·바위 터·돌바닥·나무 데크·자갈길·그루터기 쉼터·
  꽃잔디·돌광장·나무길), 원본은 assets-src 보관
- 상점에 🌿 꾸미기 섹션 (3열 그리드, 여러 개 배치 가능)
- 구매 → 배치 모드: 연속 배치 지원 (클릭마다 비용 차감, ESC로 종료),
  같은 타일 재배치 시 교체, 건물·나무·물 타일 차단
- 정사각 탑뷰 아트를 아핀 변환으로 아이소 다이아몬드에 매핑해 바닥에 밀착
- 배치된 장식 클릭 → 패널에서 🗑 치우기 (건물 히트가 우선)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 17:44:47 +09:00
kjs그리고Claude Fable 5 1ff8d0b8ca Phase B: 체력·강제 휴식·행복도·파업·고양이 집·햇볕 데크·오프라인 정산
- 체력(energy): 작업 중 분당 -2(튼튼함 -30%), 소진 시 강제 휴식 —
  배치 해제 후 수면 포즈로 회복(분당 +20, 고양이 집 +30), 완충 시 자동 복귀
- 행복도: 포만 80↑ +1/분, 굶주림 -4/분, 고양이 집 부족 -2/분(바닥 25),
  휴식 +3/분, 햇볕 데크 회복 1.5배, 인기쟁이 동료 버프
  효과: 80↑ 속도 +10%, 50 미만 -30%, 20 미만 파업(배치 해제·재배치 불가)
- 파업: 💢 배회, 행복도 40 회복 시 이전 일터로 자동 복귀
- 새 패시브: 낙천적(-40%)·까다로움(+50%)·인기쟁이 / 튼튼함·일중독 실효과화
- 새 건물: 고양이 집(정원 4, 목재100+돌20)·햇볕 데크(목재120+돌40) —
  배치 없는 패시브 건물(전용 패널), 회관 Lv3 해금, 이모지 렌더(일러스트 대기)
- 오프라인 정산: 최대 8시간을 60초 단위 시뮬레이션, 복귀 시 토스트
- UI: 고양이 카드에 체력(⚡)·행복도(💗) 바, 휴식/파업 상태 표시
- 뷰: 휴식 시 고양이 집으로 이동 후 수면 포즈+💤, 파업 시 💢

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 16:20:37 +09:00
kjs그리고Claude Fable 5 c50e12400b 건설 시간 시스템: 배치 후 공사장 표시 → 시간 경과 시 완공
- BuildDef.buildTime 추가 (부엌 60초, 채석장 120초), 상점에 ⏱ 표시
- 배치 확정 시 constructionUntil 타임스탬프 설정 (오프라인에도 진행)
- 건설 중: 공사장 일러스트 + 🔨 카운트다운 판자 배지 + "건설 중" 라벨,
  생산·배치 불가, 회관 증축 요건에도 미인정
- 패널: 공사장 이미지 + 진행 바 + 남은 시간 표시
- 완공 시 tick에서 자동 전환

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 16:08:28 +09:00
kjs그리고Claude Fable 5 1f858352a0 보드 확장 15×15 + 건물 풋프린트 + 부두 물 위 배치
- 보드 11×11 → 15×15, 강을 동쪽 2열로 확장 (흐름·반짝임도 2열)
- 건물 풋프린트: 회관 3×3, 부두·벌목장·채석장·부엌 2×2 (pos=좌상단 앵커)
  렌더·클릭 영역·작업 위치(반경)·산책 충돌 전부 풋프린트 기반
- 배치: canPlaceAt이 풋프린트 전 타일 검사 + 사각 겹침, 호버 시 풋프린트
  전체 하이라이트 + 실제 크기 고스트
- 부두: onWater 규칙(물 타일 위에만), 이미지 좌우 반전(강 방향)
- 보드 버전(v2) 마이그레이션: 기존 세이브 건물을 새 기본 위치로 재배치

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 16:01:32 +09:00
kjs그리고Claude Fable 5 ecfccfbe70 건설 방식 개편: 상점 구매 + 자유 배치 (클래시 오브 클랜 방식)
- 건물 위치가 게임 상태(building.pos)로 이동, 구세이브 자동 마이그레이션
- 🛒 상점 패널: 건물 목록·비용·해금 조건, 구매 → 배치 모드 진입
- 배치 모드: 배치 가능 타일 하이라이트, 호버 타일 초록/빨강 + 고스트,
  클릭 확정(비용은 확정 시 차감), ESC/취소 버튼
- 배치 규칙: 물·나무·회관·기존 건물 차단, 부두는 물가 열 전용
- 기존 건물 📍 이동 기능 (건물 패널), 이동 시 배치된 고양이가 새 일터로 걸어감
- 공터(🚧) 방식 제거

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 15:21:44 +09:00
kjs그리고Claude Fable 5 9de2abfd85 Phase A: 채석장·돌 자원·회관 Lv3·부엌 증축·훈제 생선·적성 포인트
- 돌 자원 + 채석장(목재 120, 회관 Lv2 해금, 채굴 3슬롯)
- 건설 시스템 공통화 (BUILD_DEFS): 공터 표시·건설 패널 데이터 기반
- 부엌 Lv2 증축 (목재 150+돌 60): 선반 15, 회관 Lv3와 함께 훈제 생선 해금
- 회관 Lv3: 목재 250+돌 150, 채석장·부엌 Lv2·Lv5↑ 2마리 → 수용 8
  (Lv4는 목공소 대기 잠금 예고)
- 적성 포인트: 3레벨마다 1 지급, 카드에서 원하는 적성에 투자 (품종 상한)
- 경험치 필요량 레벨×60 → ×90, 세이브 마이그레이션(stone·aptitudePoints)
- HUD 돌 칩, 자원 이모지/라벨 공통화

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 15:01:12 +09:00
kjs그리고Claude Fable 5 ef7f702402 입양 모달: 랜덤 후보 3마리 중 선택
- 입양하기 → 모달에 후보 3마리 (능력치·품종 희귀도·적성·패시브 전부 랜덤)
- 패시브 배지 마우스오버 시 상세 툴팁 (이름·긍정/부정/복합 구분·효과)
- PassiveBadge 컴포넌트로 통합, 고양이 카드에서도 동일 툴팁 사용
- 모달 밖 클릭/✕로 취소 가능

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 13:46:33 +09:00
kjs그리고Claude Fable 5 59e337ab90 2단계: 부엌·요리·포만도·자동 식사·회관 증축
- 부엌 건설(목재 60), 요리 적성 배치, 물고기 구이(생선 2→구이 1, 포만도 +40)
- 레시피 해금 구조: 회관/부엌 레벨 조건 (훈제 생선은 회관 Lv3 예고)
- 포만도: 식욕×0.03/초 감소(소식가/대식가 반영), 배고프면 부엌에서 자동 식사
- 배고픔 페널티: 포만도 25 미만 0.7배, 0이면 0.3배
- 회관 증축 Lv2(목재100+생선80+Lv3 고양이) → 수용 5마리, Lv3은 채석장 대기
- UI: 증축 버튼·요건 표시, 부엌 카드(레시피·선반), 고양이 포만도 바
- 마을 뷰: 부엌 타일(냄비), 🍖 배지, 식사 🍽️ 버블, 재배치 시 이동 버그 수정

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 13:38:57 +09:00
kjs그리고Claude Fable 5 348ca5ded7 쿼터뷰 마을 뷰 v1: 아이소메트릭 캔버스 + 고양이 이동·작업 애니메이션
- 11x11 아이소 타일 (잔디·물가·나무·장식), 회관/부두/벌목장 배치
- 고양이: 미배치 시 마을 배회, 배치 시 건물로 걸어가 작업(바운스+💦)
- 생산 말풍선, 건물 배지 클릭으로 산출물 회수
- 렌더 루프는 engine.peek() 라이브 참조 사용 (매 프레임 클론 회피)
- 컬러 이모지에 fillStyle 알파가 적용되는 문제 수정, 페이지 타이틀 변경

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 10:02:17 +09:00
kjs그리고Claude Fable 5 f5ae61a879 고양이 마을 1단계: 개체 생성·배치·틱 생산·수동 회수
- 품종 8종·패시브·랜덤 개체 생성 (기획서 4.2, 5장)
- 부두/벌목장 배치, 적성 0 배치 불가, 적성 비선형 작업량 (4.4)
- rAF+델타 타임 엔진(모듈 싱글턴), UI 300ms 동기화 (기술 메모)
- 수동 회수(운반 수레 전), localStorage 저장(version 필드)
- 회관 Lv1 수용 3마리, 입양 버튼

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 17:44:59 +09:00