Files
ProjectSS/docs/작업지시서/자산시스템_작업지시서.md
kyoung5seo db1051c08c 자산(엔진) 시스템 v1 + 오염 카드 압박 강화
자산 시스템 (docs/작업지시서/자산시스템_작업지시서.md 반영, 이전 세션 작업분 커밋):
- 발라트로형 조커 레이어 엔진 빌딩 도입. assets.json 8종(트리거→효과→성장 스키마) +
  engine/assetEngine.js(이벤트 버스, 연쇄 깊이 상한 10)로 기존 수동 클릭형 자산 4종 전면 대체
- AssetInfoPopup 추가 — 자산 슬롯 클릭 시 트리거/효과/스택/충전 상태 표시, 발동 로그 피드 노출

오염 카드 압박 강화 (그레이박스 위기감 피드백 반영):
- engine/pollution.js 신설 — 오염 주입 규칙(타입 매핑·등급 추첨·물량)을 단일 모듈로 분리해
  사전 예고(SwipeCard) · 실제 주입(GameScreen) · 사후 알림이 같은 계산을 공유하도록 함
- 위험 파라미터를 올리는 결재는 정례회의를 기다리지 않고 그 자리에서 덱에 오염 카드를 주입
- UI 3종: 스와이프 시 오염 유입 사전 경고, 결재 후 유입 토스트, 상단 덱 오염 상시 게이지
- currentCardIndex를 매 결재마다 덱 길이로 정규화(주입/소각으로 덱 길이가 바뀌므로 필요)

기타:
- docs/architecture_design.md를 실제 구현(plain JS/CSS, useState, engine/ 순수 함수 경계)
  기준으로 전면 재작성 — 기존 문서는 채택되지 않은 초기 제안(Tailwind/Zustand/TS)이었음
- playtest.bat 추가 — 더블클릭으로 dev 서버 실행 (ASCII 전용, chcp로 인한 배치 파싱 오류 회피)
- CLAUDE.md 상태 갱신 및 실기 플레이 결과 기록

실기 플레이로 정상 동작 확인. 자산 획득 경로(극비 카드 스와이프)는 플레이 중 한 번도 발생하지
않아 원인 미조사 상태로 남김 — CLAUDE.md에 후속 확인 항목으로 기록.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 22:59:30 +09:00

6.8 KiB

자산(엔진) 시스템 작업지시서 — 그레이박스 v1

목적: 발라트로형 엔진 빌딩 검증. 자산 8종을 데이터로 구현하고, 자산 정보 UI 블로커를 해결하여 실제 플레이 테스트가 가능한 상태를 만든다. 원칙: Greybox First. 수치는 전부 가안이며 튜닝 대상. 비주얼 연출 금지(텍스트/기본 도형만). 주의: update_csv_tags.js, update_csv.js 등 파이프라인 스크립트는 수정 금지. 본 작업은 신규 데이터 파일 + 신규 로직 모듈로만 구성한다.


Part A. 자산 데이터 스키마

신규 파일 src/data/assets.json 생성. 자산 1장의 문법은 트리거 → 효과 → (선택) 성장.

{
  "id": "asset_purge_001",
  "name": "문서 파쇄실",
  "grade": "C",                  // C | B | A | S
  "archetype": "purge",          // purge | convert | quarantine | skip
  "trigger": {
    "type": "every_n_approvals", // 트리거 enum (아래 표)
    "params": { "n": 5 }
  },
  "effect": {
    "type": "purge_lowest",      // 효과 enum (아래 표)
    "params": { "count": 1 }
  },
  "growth": null,                // A급 이상만 사용. { "stackOn": "...", "per": 3, "bonus": {...} }
  "risk": null,                  // 부작용. { "param": "risk_tolerance", "amount": 5, "when": "council_end" }
  "faction_link": "scavengers",  // 우호도 연동 파벌 (nullable)
  "description": "결재 5건마다 덱에서 최하 등급 오염 카드 1장을 영구 소각한다.",
  "flavor": "파쇄 용량: 일일 1건. 증설 요청은 3회 반려됨."
}

트리거 enum (v1 범위)

type 의미 params
on_pollution_draw 오염 카드 드로우 시 category(신화/저항/공황/압박, nullable), minGrade(nullable)
on_swipe_left 좌 스와이프 시
on_token_spend 토큰 소모 시 tokenType(nullable)
every_n_approvals 결재 N건마다 n
on_council_end 의회 종료 시
on_purge 오염 카드 소각 시 (연쇄용)
on_convert 오염 카드 변환 시 (연쇄용)
on_quarantine_fail 격리 실패 복귀 시 (연쇄용)
manual_charge 충전식 수동/자동 방패 chargeEvery

효과 enum (v1 범위)

type 의미 params
purge_lowest 최하 등급 오염 소각 count
convert_to_token 오염 → 토큰 환전 tokenType, amount
quarantine 오염 격리 (조건 실패 시 강화 복귀) failCondition
negate_penalty 페널티 1회 무효 category(nullable)
gain_token 토큰 생성 tokenType, amount
gain_tag 자원 태그 생성 tagType, amount
convert_multiplier 변환 산출 배수 (상시) multiplier
quarantine_fail_to_purge 격리 실패 → 영구 소각으로 치환 (규칙 왜곡) bonusTag(nullable)

구현 노트: 트리거는 게임 이벤트 버스에 리스너로 등록. on_purge/on_convert/on_quarantine_fail은 다른 자산의 효과가 발생시키는 이벤트를 구독하므로, 효과 실행부가 반드시 이벤트를 발행해야 연쇄가 성립한다. 무한 루프 방지를 위해 결재 1건당 연쇄 깊이 상한 10회.


Part B. 자산 8종 데이터 (확정 배치 1차)

① 소각 특화 (faction: scavengers)

  1. 문서 파쇄실 — C급
    • 트리거: every_n_approvals(5) / 효과: purge_lowest(1)
  2. 소각 처리 대장 — A급
    • 트리거: on_purge / 성장: 스택 +1, 스택 3마다 purge_lowest(1) 추가 발동

② 변환 경제 (faction: nexus_traders)

  1. 폐기물 재활용 규정 — C급
    • 트리거: on_pollution_draw(category: 신화) / 효과: gain_token(예산, 2) (페널티는 정상 적용 후)
  2. 부산물 매각 계약 — B급
    • 효과: convert_multiplier(2) 상시 / 리스크: 의회 종료 시마다 위험 수용 계수 +5%

③ 격리 도박 (faction: occult_collectors)

  1. 임시 격리 컨테이너 — C급
    • 트리거: on_swipe_left(발동 선택 가능) / 효과: quarantine(failCondition: 다음 의회까지 대중 공황 1단계 상승)
  2. 심연 보관 조례 — S급
    • 트리거: on_quarantine_fail / 효과: quarantine_fail_to_purge(bonusTag: 감시 +1)

④ 무효 회피 (faction: field_agents_union — 우호도 하락 연동)

  1. 결재 반려 도장 — C급
    • 트리거: manual_charge(chargeEvery: 10) / 효과: negate_penalty(전체)
  2. 책임 소재 불명 처리 — B급
    • 트리거: 조직 저항 계열 negate_penalty 발동 시 / 효과: 인력 토큰 소모 없이 통과 / 리스크: 내부 저항 +3%

수치(5건, 토큰 2, 스택 3, 5%, 3% 등)는 전부 가안. 플레이 테스트 후 일괄 튜닝.


Part C. UX 블로커 해결 (최우선 선행 작업)

현재 문제: 자산 클릭 시 아무 정보도 표시되지 않음 → 덱압축 시스템 평가 자체가 불가능.

  1. 하단 자산 슬롯의 Icon_Asset 탭/클릭 시 정보 팝업 표시:
    • 이름, 등급, 아키타입 아이콘
    • 트리거 조건 → 효과 를 한 문장으로 (description 필드 그대로)
    • 성장형이면 현재 스택 수치 표시
  2. 자산 발동 시 가시 피드백 (텍스트 로그로 충분): 화면 한쪽에 "『문서 파쇄실』 발동 — [하급 신화] 소각됨" 식의 1줄 로그. 발라트로의 조커 점멸에 해당하는 최소 구현. 연쇄 발동 시 순서대로 줄줄이 출력되어야 "엔진이 돌아간다"는 감각이 생긴다.
  3. 그레이박스 기준이므로 애니메이션 불필요. 텍스트 로그 + 팝업만.

Part D. 플레이 테스트 체크리스트

구현 완료 후 아래를 검증한다.

  • 역전 엔진 성립: 3번(재활용 규정) + 1번(파쇄실) 조합 시, 오염이 늘수록 자원이 돌고 덱이 정화되는 체감이 있는가?
  • 연쇄 가시성: 2번(소각 처리 대장) 보유 시 소각→스택→추가 소각 연쇄가 로그로 읽히는가?
  • S급 킹핀: 6번(심연 보관 조례) 획득 전후로 격리 자산의 가치 평가가 뒤집히는가? (획득 전: 격리 기피 / 획득 후: 격리 남발)
  • 무효 빌드의 풍자 체감: 7+8번 조합으로 "덱은 더럽지만 아무 일도 안 일어나는" 상태가 만들어지는가?
  • 오버파워 확인: 페이즈 3에서 엔진이 오염 주입 속도를 이기는 순간이 오는가? (이겨야 정상 — 발라트로 모델)
  • 연쇄 깊이 상한(10회)에 걸리는 케이스가 있는가?

범위 외 (다음 배치)

  • 의회 압박 강화(안건 예고제, 표차 가시화) — 별도 작업지시서로 분리 예정
  • 하이브리드 아키타입 자산 및 A/S급 보강 (2차 배치)
  • 자산 획득 경로(극비 프로젝트 보상 테이블) 튜닝