diff --git a/00_Raw/2026-04-22_CombatProgression_Process_Log.md b/00_Raw/2026-04-22_CombatProgression_Process_Log.md new file mode 100644 index 00000000..ba3deac7 --- /dev/null +++ b/00_Raw/2026-04-22_CombatProgression_Process_Log.md @@ -0,0 +1,65 @@ +# 작업 과정 로그 (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를 동시에 지급하도록 수정하여 코드 중복 방지. +- **미션 클리어**: `StageDirectorSystem`의 `STAGE_CLEAR` 페이즈 전환 시 `phaseTimer === 1` 조건을 활용하여 딱 한 번만 포인트를 지급하는 'Atomic Trigger' 방식 채택. +- **런 실패**: `useGameEngine`의 사망 루프에서 런 타임(프레임)을 포인트로 환산하여 지급. + +### 💡 시각화 전략 (Signal Pattern) +- `ModularWeaponSystem`이 `novaBurstRingEffect`라는 임시 객체를 `state`에 기록. +- `GameRenderer`가 매 프레임 이 객체가 있는지 확인하고, 있으면 20프레임 동안 애니메이션 처리 후 스스로 타이머를 깎아 소멸시키는 'Auto-decay Signal' 패턴 적용. + +--- + +## 3. 구현 단계 (Execution) + +### Step 1: 통신 채널 확장 +- `stateMachine.ts`의 `PhaseTransitionContext` 인터페이스를 확장하여 `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)과 공유. + +--- + +## 🧐 부장님(코다리) 한마디 😎 +"단순히 코드만 짜는 게 아니라, 왜 이렇게 짰는지 흐름을 기록하는 것이 진짜 엔지니어링이지! 🫡 시스템은 기록으로 증명된다. 🐟"