Files
2nd/00_Raw/2026-04-22_CombatProgression_Process_Log.md
T

3.3 KiB

작업 과정 로그 (Process Log): Event Pass & Nova Burst 시각화 구현

🗓️ 날짜: 2026-04-22

👤 담당: Antigravity (AI Coding Assistant)


1. 요구사항 분석 및 아키텍처 탐색 (Analysis)

🔍 분석 대상

  • useGameEngine.ts: 엔진의 메인 루프와 외부 API(Store) 연결부.
  • StageDirectorSystem.ts: 스테이지 페이즈(Boss, Stage Clear) 관리 주체.
  • GameRenderer.ts: Canvas 2D 렌더링 최상위 클래스.
  • ModularWeaponSystem.ts: 스킬 로직 처리부.

🚩 발견된 문제점

  • 이벤트 연결 누락: addEventPassPoints 함수는 스토어에 정의되어 있었으나, 실제 인게임 이벤트(보스 처치, 클리어) 발생 시 호출되는 로직이 부재함.
  • 렌더링 레이어 분리: ModularWeaponSystem은 물리/데미지 로직만 처리하며, GameRenderer는 상태(State) 기반으로만 그려야 함. 즉, "방금 폭발함"이라는 정보를 전달할 매개체가 필요했음.

2. 해결 전략 수립 (Strategy)

💡 포인트 지급 전략

  • 보스 처치: 이미 존재하는 PERMANENT_REWARD Intent를 재활용. Intent 핸들러에서 Gold와 Pass Point를 동시에 지급하도록 수정하여 코드 중복 방지.
  • 미션 클리어: StageDirectorSystemSTAGE_CLEAR 페이즈 전환 시 phaseTimer === 1 조건을 활용하여 딱 한 번만 포인트를 지급하는 'Atomic Trigger' 방식 채택.
  • 런 실패: useGameEngine의 사망 루프에서 런 타임(프레임)을 포인트로 환산하여 지급.

💡 시각화 전략 (Signal Pattern)

  • ModularWeaponSystemnovaBurstRingEffect라는 임시 객체를 state에 기록.
  • GameRenderer가 매 프레임 이 객체가 있는지 확인하고, 있으면 20프레임 동안 애니메이션 처리 후 스스로 타이머를 깎아 소멸시키는 'Auto-decay Signal' 패턴 적용.

3. 구현 단계 (Execution)

Step 1: 통신 채널 확장

  • stateMachine.tsPhaseTransitionContext 인터페이스를 확장하여 addEventPassPoints 콜백을 주입할 준비를 마침. (추후 리팩토링 대비)

Step 2: 실제 로직 주입

  • useGameEngine.ts 내 Intent 핸들러 수정.
  • StageDirectorSystem.ts 내 클리어 보상 로직 추가.
  • useGameEngine.ts 내 사망 보상 로직 추가.

Step 3: 프리미엄 시각 효과 구현

  • GameRenderer.ts에 4단계 레이어(링, 보조 링, 플래시, 스파이크) 렌더링 로직 작성.
  • ModularWeaponSystem.ts에서 폭발 시점에 신호(Signal) 발생 코드 삽입.

4. 검증 및 배포 (Verification & Sync)

기술 검증

  • npx tsc --noEmit을 통한 타입 안정성 확인.
  • PowerShell 권한 이슈 발생 시 즉시 cmd /c로 전환하여 작업 중단 방지.

기록 및 동기화

  1. Skybound Repo: 코드 커밋 및 푸시 (226eb7c).
  2. Wiki Repo (RAW): 작업 내용 요약(2026-04-22_EventPass_NovaBurst_Renderer.md) 및 본 과정 로그 기록.
  3. Wiki Repo (Sync): 모든 문서를 원격 저장소에 Push 하여 대표님(User)과 공유.

🧐 부장님(코다리) 한마디 😎

"단순히 코드만 짜는 게 아니라, 왜 이렇게 짰는지 흐름을 기록하는 것이 진짜 엔지니어링이지! 🫡 시스템은 기록으로 증명된다. 🐟"