파일 역할 분담 개선
ProjectSS/
├── CLAUDE.md ← 규칙 (거의 안 변함) · Claude Code용
├── AGENTS.md ← 프로젝트 정체성 (거의 안 변함) · Hermes용
├── ROADMAP.md ← Phase별 계획·완료 기준 (기존 그대로)
└── docs/
└── DEVLOG.md ← 신규: 날짜별 작업 이력 + 미해결 이슈
7.7 KiB
Project SS — DEVLOG
이 파일의 역할: 날짜별 작업 이력과 미해결 이슈를 기록한다. 규칙은
../CLAUDE.md, Phase 계획은../ROADMAP.md. 최신 항목이 위로 오도록 작성한다 (역순).
🔴 열린 이슈 (해결되면 해당 항목을 아래 이력으로 옮기고 여기서 지운다)
자산 획득이 실기 플레이에서 한 번도 발생하지 않음 (2026-07-23 발견, 원인 미조사)
자산(엔진) 시스템 플레이테스트 중 자산을 하나도 획득하지 못해 Part D 체크리스트를 검증 못함. 플레이 횟수 자체가 적어 정상 확률 범위인지 실제 버그인지 구분 안 된 상태.
- 획득 경로:
GameScreen.jsx의handleSwipe내card.type === '극비'분기 (카드 타입 '극비' 스와이프 성공 시 미보유 자산 중 무작위 1종) - 의심 지점 ① '극비' 카드는 페이즈2 풀(
phase2Pool)에만 있고, 페이즈2는 내러티브 태그 3종 획득 후에야 덱에 섞인다 → 플레이가 짧으면 페이즈2 진입 전에 끝났을 가능성 - 의심 지점 ② 페이즈2 진입 이후에도 '극비' 카드 등장 빈도/개수가 낮을 수 있음 (
cards.csv기준 극비 7종) - 다음 액션: 확률 문제인지 조건 분기 버그인지 코드를 다시 열어 확인
디자이너 확인 필요 — 오염 압박 밸런스 (2026-07-23)
- ⓐ 위험 1점 = 오염 1장 비율이 적정한지
- ⓑ 항상 안전한 쪽만 고르면 붕괴율 0% — 안전 선택지의 토큰 비용이 충분한 압박인지 별도 검토 필요
디자이너 확인 필요 — 자산 시스템 단순화 가정 (2026-07-13)
구현 시 임의로 단순화한 부분들. 의도와 맞는지 확인 필요.
- ① 위험 수용 계수 등 "+N%" 리스크를 기존 0~5단계 스케일(1단계=20%)로 환산해 소수점 누적
- ② 임시 격리 컨테이너(좌 스와이프 격리)는 문서의 "발동 선택 가능"을 단순화해 자동 발동으로 구현(확인 팝업 없음)
- ③ 자산 슬롯 4개 고정 → 보유량만큼 늘어나는 가변 슬롯으로 변경
미착수 — 팝업 2종 분리 UI (2026-07-13)
현재 코드(ChroniclePopup.jsx, GameScreen.jsx)는 태그 히스토리와 연대기(카드·선택 이력)를
하나의 팝업에서 함께 보여준다. 문서가 요구하는 "세계의 상흔 팝업 vs 연대기 팝업" 2종 분리는 미착수.
미검증 — Part D 플레이테스트 체크리스트 (2026-07-13)
역전 엔진 성립 / 연쇄 가시성 / S급 킹핀 / 무효 빌드 풍자 / 오버파워 확인 / 연쇄 깊이 상한 → 디자이너 플레이 후 피드백 필요
2026-07-23 · 오염 카드 압박 강화
배경: "오염 카드 수가 적어 위기감이 없고, 스와이프가 오염을 늘린다는 걸 알려주지 않아 고민이 안 된다"는 그레이박스 피드백 반영.
변경 사항
- 오염 주입 규칙을
client/src/engine/pollution.js로 분리 — 사전 예고·실제 주입·사후 알림이previewPollution()단일 기준을 공유 (예고와 결과가 어긋나면 정보 신뢰가 깨지므로) - 위험 파라미터를 올리는 결재는 그 자리에서 덱에 오염 카드를 주입 (위험 +1 = 오염 1장, 1회 최대 3장, 현재 위치 2~4장 뒤 삽입). 기존에는 정례회의에서만 파라미터당 1장이었음
- 정례회의 주입도 단계 비례로 변경 —
min(3, ceil(level/2)) - 페널티 무효화(방어막/책임 소재 불명) 시에는 오염도 유입되지 않음 — 방어막의 값어치
- UI 3종 추가 — 스와이프 인텐트에
☣ 오염 카드 +N사전 경고 / 결재 후 유입 토스트 / 상단☣ 덱 오염 N/전체상시 게이지 (40% 이상 시 적색 점멸) - 덱 인덱스를 매 결재마다 덱 길이로 정규화 — 이전에는
currentCardIndex가 덱 길이를 넘어 계속 증가해 삽입 위치 계산이 무의미했음.pickGrade에 반올림 추가(자산 부작용이 파라미터를 소수점으로 올려 크래시 가능성 있었음)
시뮬레이션 결과 (400~600회, 자산·의회 파라미터 정화 제외)
- 신중 플레이 시 총 주입 오염 10.8장 → 25.1장
- 최종 덱 오염률 39% → 59%
- 무작위 플레이의 붕괴율 ~100%는 변경 이전에도 동일 (파라미터가 원인)
실기 플레이 결과: 디자이너 직접 플레이 확인 — 위기감 강화 방향은 맞으나 세부 밸런스는 조정 여지 있음. 정밀 튜닝은 플레이 횟수를 더 쌓은 뒤 진행 예정.
2026-07-13 · 자산(엔진) 시스템 v1
docs/작업지시서/자산시스템_작업지시서.md 기준. 발라트로형 "조커 레이어" 엔진 빌딩 도입 —
덱은 여전히 적(오염)이고, 자산 슬롯이 패시브로 오염을 걸러내는 엔진이라는 설계 그대로 구현.
변경 사항
- 기존 4종 수동 클릭형 자산(성질변환/시한부격리/영구소각/결재권강제행사)을 전면 대체
- 신규
client/src/data/assets.json— 8종, 트리거→효과→성장 스키마 - 신규
client/src/engine/assetEngine.js— 이벤트 버스 (every_n_approvals/on_pollution_draw/on_swipe_left/on_council_end/on_purge연쇄, 깊이 상한 10) - 극비 프로젝트 성공 시 미보유 자산 중 무작위 1종 획득 (획득 경로 튜닝은 2차 배치로 범위 외)
- 자산 슬롯 클릭 시
AssetInfoPopup으로 트리거→효과·스택·충전 상태 표시 - 화면 우하단 발동 로그 피드(최근 4건) — Part C UX 블로커 해결
- 기존
mulliganShields(방어막 카운트)를 "다음 오염 카드 페널티 무효화" 공용 풀로 재사용 → 결재 반려 도장(충전식 수동)과 책임 소재 불명 처리(조직저항 자동 무효화)가 같은 메커니즘 공유
2026-07-13 · 내러티브 태그 재설계
docs/내러티브태그_시스템_작업지시서.md 기준.
변경 사항
- 연대기(Chronicle, 결재 결정 이력)와 내러티브 태그(세계의 상흔, 결과)를 개념적으로 분리 → 기획서 / 스토리 바이블 / 와이어프레임 / 비전 / PRD / 유저플로우 / 개발순서 문서 반영 완료
narrative_tags.json10종에 필드 추가snippet— 1~2문장 결과 보고서, 거리감 있는 관료체snippet_type—"system"7종 /"human"3종- ※ 초안이므로 디자이너 검토 필요
Phase 완료 시점 기록
Phase 4 — 멀티 엔딩 & 연대기
- 엔딩 도감 localStorage 키를
ss_endings_v2로 교체 (기존ss_endings는 제목 문자열 기반이라 취약) → 이전 플레이테스트 기록은 새 키와 호환되지 않음 - 내러티브 태그는 재사용 가능한 태그 풀(
narrative_tags.json, 10종) 방식으로, 선별된 카드의 좌/우 선택지에서만 획득 - 페이즈 전환 문턱: "고유 태그 3종/6종 획득"
- 상세:
ROADMAP.mdPhase 4
Phase 3 — 정치 시스템 & 스토리 페이징
- 상임 이사회 8명의 투표는 아직
성향 태그시스템이 없어 위험 수용 계수 기반 확률 처리로 남아있음 - 상세:
ROADMAP.mdPhase 3
Phase 2 — 자원 경제 & 덱빌딩
- 오염 카드(신화/조직저항/사회공황/이사회압박) 콘텐츠는 등급별 1종씩만 채운 초안
- 상세:
ROADMAP.mdPhase 2
2026-07-09 · 병렬 브랜치 대형 충돌
다른 세션이 origin에 푸시한 커밋을 로컬이 받지 못한 채 Phase 2~4를 독립적으로 재구현해 충돌 발생.
→ 이후 작업 시작 전 git fetch + 분기 확인을 필수 절차로 CLAUDE.md에 명시.
자세한 경위는 ROADMAP.md 상단 박스 참고.