3.7 KiB
3.7 KiB
작업 로그: Event Pass 연동 + Nova Burst Canvas 렌더러 구현
📋 작업 내용 (What)
- addEventPassPoints 실제 연결: 보스 처치, 미션 클리어(STAGE_CLEAR), 미션 실패(부분 런) 시 Event Pass 포인트를 실제 게임플레이 이벤트에 연결.
- Nova Burst Canvas 링 이펙트:
GameRenderer에 20프레임 확장 충격파 링을 4개 레이어로 렌더링하는renderNovaBurstEffect메서드 구현.
🎯 왜 했는지 (Why)
- 패스 포인트가 UI에만 존재: HangarOverlay에 PASS 탭을 만들었지만 실제 게임플레이에서 포인트를 지급하는 파이프라인이 없었음.
- Nova Burst 시각 부재: 스킬 논리(
ModularWeaponSystem)는 완성됐으나 Canvas 렌더러와 연동되지 않아 플레이어가 충격파를 시각적으로 느끼지 못했음.
💡 기대값 (Expected Value)
- 보스 처치 시 스테이지 × 200pts 지급 (Stage 1: 200, Stage 3: 600)
- 스테이지 클리어(STAGE_CLEAR) 시 기본 500 + 스테이지 × 100pts
- 런 실패 시에도 10초당 1pt 지급 → "패배해도 진전이 있다" 심리적 보상
- Nova Burst 발동 시 20프레임(0.33초) 확장 충격파 링 + 스파이크 라인 시각화
🔧 처리 과정 (How)
1. useGameEngine.ts — 보스 처치 패스 포인트
PERMANENT_REWARDintent 핸들러에addEventPassPoints(200 × stage)추가.- 보라색 플로팅 텍스트
+N PASS PTS연출.
2. StageDirectorSystem.ts — STAGE_CLEAR 패스 포인트
case 'STAGE_CLEAR'의phaseTimer === 1시점에addEventPassPoints(500 + stage × 100)1회 호출.- phaseTimer === 1 조건으로 중복 지급 완전 차단.
3. useGameEngine.ts — 게임오버 부분 런 보상
- 최종 사망 분기에
Math.floor(frame / 60 / 10)pts 지급 (10초당 1pt). - "실패해도 패스 티어가 오른다" UX 확보.
4. stateMachine.ts — PhaseTransitionContext 확장
addEventPassPoints,addGold콜백 시그니처 추가 (미래 확장성 확보).
5. ModularWeaponSystem.ts — novaBurstRingEffect 신호 생성
- 충격파 발동 시
state.novaBurstRingEffect = { x, y, radius, level, timer: 20 }설정. - GameRenderer가 이 신호를 읽어 20프레임 동안 링을 렌더링.
6. GameRenderer.ts — renderNovaBurstEffect (4레이어 렌더러)
- 레이어 1: 외부 청록(#00e5ff) 충격파 링 — 두께 4→1px, 글로우 shadow
- 레이어 2: 내부 흰색 보조 링 (50% 반경, 40% 투명도)
- 레이어 3: 중심 시안 라디알 플래시 (초기 8프레임만, 빠른 소멸)
- 레이어 4: 6/8방향 스파이크 라인 (Lv3이면 8개) — 링 바깥으로 뻗는 방출 연출
ring.timer--로 자체 tick하여 별도 상태 관리 불필요.
🧠 사용한 지식 (Knowledge Used)
- Canvas 2D Compositing: globalAlpha 스택 + save/restore 패턴으로 레이어별 독립적 투명도 관리.
- RadialGradient API: createRadialGradient(cx, cy, r0, cx, cy, r1) 패턴으로 중심 플래시 구현.
- Signal Pattern: 시스템 간 결합을 최소화하기 위해 state 오브젝트에 임시 신호 필드를 기록하고 렌더러가 읽는 방식.
- Event Pass Economics: 보스>클리어>실패 순의 포인트 차등화로 플레이 깊이에 따른 보상 곡선 설계.
✅ 결과 (Result)
- TypeScript 에러 0개
- Git Commit:
226eb7c(feat_event_pass_hooks_nova_burst_canvas_renderer) - Push:
origin/main
🔗 연결 지식 (Relevant Knowledge)
- E:\Wiki\2nd\10_Wiki\Topics\Game-Design (Event Pass Economy, Consolation Reward)
- E:\Wiki\2nd\10_Wiki\Topics\Software-Architecture (Signal Pattern, System Decoupling)
- E:\Wiki\2nd\10_Wiki\Topics\UI-UX (Canvas Compositing, Visual Feedback Loop)