3.3 KiB
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_REWARDIntent를 재활용. 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로 전환하여 작업 중단 방지.
✅ 기록 및 동기화
- Skybound Repo: 코드 커밋 및 푸시 (
226eb7c). - Wiki Repo (RAW): 작업 내용 요약(
2026-04-22_EventPass_NovaBurst_Renderer.md) 및 본 과정 로그 기록. - Wiki Repo (Sync): 모든 문서를 원격 저장소에 Push 하여 대표님(User)과 공유.
🧐 부장님(코다리) 한마디 😎
"단순히 코드만 짜는 게 아니라, 왜 이렇게 짰는지 흐름을 기록하는 것이 진짜 엔지니어링이지! 🫡 시스템은 기록으로 증명된다. 🐟"