docs: update boss system technical reports and knowledge hub
This commit is contained in:
@@ -1,25 +0,0 @@
|
||||
# [LOG] All Repositories Update (Full Sync)
|
||||
|
||||
- **작업 일시**: 2026-04-22
|
||||
- **작업 내용**: 4개 주요 프로젝트 거점(`2nd`, `skybound`, `Legal`, `Agent`)에 대한 원격 저장소 동기화(`git pull`).
|
||||
- **이유/목적**: 로컬 작업 환경을 최신 상태로 유지하여 개발 및 문서화 작업 시 발생할 수 있는 충돌을 방지하고 코드 정합성을 확보하기 위함.
|
||||
- **기대값**:
|
||||
1. 모든 로컬 브랜치가 최신 원격 브랜치(`main`)와 동기화됨.
|
||||
2. 동기화 과정에서 에러 및 수동 충돌 해결 작업 0건 유지.
|
||||
- **처리 과정**:
|
||||
1. `2nd` (Wiki): `git pull lm_sync main` 진행 -> 최신 상태 확인.
|
||||
2. `skybound`: `git pull origin main` 진행 -> 최신 상태 확인.
|
||||
3. `Legal`: `git pull origin main` 진행 -> 최신 상태 확인.
|
||||
4. `Agent`: `git pull origin main` 진행 -> 최신 상태 확인.
|
||||
- **사용 지식**:
|
||||
1. Git Remote Operations (`git pull`)
|
||||
2. Local Git Mapping Protocol (신규 수립 지침)
|
||||
- **결과**:
|
||||
* 4개 프로젝트 모두 성공적으로 `Already up to date` 또는 최신 커밋 반영 완료.
|
||||
* 작업 경로 및 리모트 명칭(lm_sync vs origin) 혼선 없이 처리됨.
|
||||
- **연결 지식 (Relevant Knowledge)**:
|
||||
* [[E:\Wiki\2nd\10_Wiki\Topics\03_DevOps_Environment]] (데브옵스 및 환경 구성)
|
||||
* [[E:\Wiki\2nd\10_Wiki\Topics\Automation]] (작업 자동화)
|
||||
|
||||
---
|
||||
**작성자**: AI 개발부장 코다리 🫡
|
||||
@@ -1,66 +0,0 @@
|
||||
# 작업 로그: Combat Level Design — Time-Based Difficulty Scaling 구현
|
||||
|
||||
## 📋 작업 내용 (What)
|
||||
"전투 타임라인 & 난이도 프로토콜" 설계안을 기반으로 Skybound 프로젝트의
|
||||
StageDirectorSystem, SpawnerSystem, EngineProtocol을 업그레이드하고,
|
||||
신규 CombatTimeline 설정 파일을 추가함.
|
||||
|
||||
## 🎯 왜 했는지 (Why)
|
||||
기존 스테이지 시스템의 문제점:
|
||||
- StageDirectorSystem: 하드코딩된 `if frame >= X` 체이닝, 새 phase 추가 불가
|
||||
- SpawnerSystem: 완전 무작위 스폰 → 스파이크 없음, 긴장감 없음
|
||||
- 난이도 곡선 부재: 적 HP 단순 배율만 존재, 밀도/타이밍 변화 없음
|
||||
- Death Trap 발생 가능: EVO 준비 없이 Spike 구간 진입
|
||||
|
||||
## 💡 기대값 (Expected Value)
|
||||
- 시간(초) 기반 스크립티드 웨이브 등장 (STANDARD 15분 / BLITZ 8분)
|
||||
- 페이즈별 difficultyMult / spawnIntervalMult 자동 동기화
|
||||
- Spike 30초 전 자동 EXP 젬 밀도 2배 부스트 (Death Trap Avoidance)
|
||||
- 스웜 구간에서 최대 6유닛씩 3프레임 간격 분산 스폰 (성능 보장)
|
||||
- 보스 처치 후 영구 성장 보상 발행 (UX Continuity)
|
||||
- TypeScript 에러 0개
|
||||
|
||||
## 🔧 처리 과정 (How)
|
||||
|
||||
### 1. CombatTimeline.ts (신규 생성)
|
||||
- StageMode: STANDARD(15분) / BLITZ(8분)
|
||||
- DifficultyPhase: name, startSec, diffMult, spawnIntervalMult, maxEnemyCount, bgmCue
|
||||
- WaveTrigger: triggerSec, enemyType, density, isSpike, eventEffect, comms, shake
|
||||
- STANDARD_TIMELINE: 5개 페이즈, 15개 WaveTrigger (Spike 4회)
|
||||
- BLITZ_TIMELINE: 5개 페이즈, 10개 WaveTrigger (Spike 6회)
|
||||
- 유틸 함수: getActivePhase(), collectDueTriggers(), getTimeline()
|
||||
|
||||
### 2. StageDirectorSystem.ts (전면 재작성 v2.0)
|
||||
- tickTimeline(): 매 프레임 currentSec = frame/60로 getActivePhase() 및 collectDueTriggers() 호출
|
||||
- 페이즈 자동 전환: activePhase.name !== phase일 때 STAGE_TRANSITION 인텐트 발행
|
||||
- difficultyMult / tensionLevel: activePhase.diffMult + densityFactor로 자동 동기화
|
||||
- EXP 밀도 부스트: 다음 Spike까지 30초 이내 시 EXP_DENSITY_BOOST 인텐트 발행
|
||||
- processTriggers(): WaveTrigger → 이벤트(COMMS, SCREEN_SHAKE) + SCRIPTED_SPAWN 인텐트
|
||||
- UX Continuity: 보스 처치 시 PERMANENT_REWARD 인텐트 발행
|
||||
|
||||
### 3. SpawnerSystem.ts (전면 재작성 v2.0)
|
||||
- notifyScriptedSpawn(): Director로부터 스폰 요청 수신 (메서드 호출 방식)
|
||||
- flushSpawnQueue(): 큐 소비 + MAX_ENEMIES_HARD_CAP(=30) 보호막
|
||||
- activateSwarmBurst(): SWARM_BURST 모드 활성화
|
||||
- tickSwarmBurst(): MAX_SWARM_BATCH(=6), SWARM_SPAWN_GAP(=3프레임) 분산 스태거링
|
||||
- 절차적 스폰: difficultyMult 기반 간격 계산, 타임라인 간격 채우기 보조 역할
|
||||
- dispose(): 큐 + 버스트 상태 초기화
|
||||
|
||||
### 4. EngineProtocol.ts (확장)
|
||||
- SCRIPTED_SPAWN, SPAWN_MODE, EXP_DENSITY_BOOST, PERMANENT_REWARD 인텐트 타입 추가
|
||||
|
||||
## 🧠 사용한 지식 (Knowledge Used)
|
||||
- Time-Based Difficulty Scaling 패턴
|
||||
- Object Pool + Staggered Spawn 패턴 (성능 최적화)
|
||||
- "Death Trap Avoidance" 게임 디자인 원칙
|
||||
- "UX Continuity" 실패 보상 설계
|
||||
- TypeScript discriminated union (EngineIntentType)
|
||||
- Observer → Direct Method Call 결정 (EventBus 미도입 상태에서의 최적 통신 방식)
|
||||
|
||||
## ✅ 결과 (Result)
|
||||
TypeScript 에러 0개 — `npx tsc --noEmit` 클린 통과
|
||||
|
||||
## 🔗 연결 지식 (Relevant Knowledge)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Game-Design (Difficulty Curve, Spike Design, Time-Based Scaling)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Software-Architecture (Intent Protocol, Event-Driven)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Performance-Optimization (Staggered Spawn, Object Pooling)
|
||||
@@ -1,56 +0,0 @@
|
||||
# 작업 로그: Combat Progression — Nova Burst, Permanent Upgrades & Event Pass 구현
|
||||
|
||||
## 📋 작업 내용 (What)
|
||||
Skybound 프로젝트의 핵심 성장 루프(Dopamine Loop)를 완성하기 위해 다음 3대 요소를 구현함:
|
||||
1. **Nova Burst (aoe_nova)**: 광범위 충격파 및 넉백 기능을 갖춘 신규 액티브 스킬 인게임 로직 구현.
|
||||
2. **Permanent Upgrade (Hangar Shop)**: 런 간 유지되는 기체 스탯 영구 강화 시스템 및 전용 상점 UI 구축.
|
||||
3. **Event Pass System**: 포인트 적립형 티어 시스템 및 S/SS급 장비 보장 쿠폰 보상 체계 수립.
|
||||
|
||||
## 🎯 왜 했는지 (Why)
|
||||
- **전투 카타르시스 부족**: 기존 스킬들은 투사체 중심이라 '물량'을 한 번에 정리하는 쾌감이 부족함.
|
||||
- **메타 게임 부재**: 게임이 끝나면 모든 성장이 초기화되어 장기 리텐션(Retention) 유인이 약함.
|
||||
- **아이템 가치 인플레이션 방지**: S/SS급 아이템이 너무 쉽게 드롭되지 않도록 희귀도를 극한으로 조정하고, 확정 획득 경로(Pass/Crafting)를 명확히 함.
|
||||
|
||||
## 💡 기대값 (Expected Value)
|
||||
- **Nova Burst**: 5초마다 발생하는 강력한 충격파로 위기 탈출 및 대량 처치 쾌감 (Dopamine Spike).
|
||||
- **영구 성장**: 골드(Gold) 소모처를 제공하여 "한 판 더" 할 이유를 제공 (Meta-Progression).
|
||||
- **희귀도 밸런스**: SS급 장비의 자연 드롭율을 0%로 설정하여 제작(Cosmic Cast) 및 패스 최종 보상의 가치 극대화.
|
||||
- **UI 일관성**: Hangar 내 7개 탭(EQUIP, MERGE, DISASSEMBLE, COSMIC, FORGE, UPGRADE, PASS) 통합 관리.
|
||||
|
||||
## 🔧 처리 과정 (How)
|
||||
|
||||
### 1. ModularWeaponSystem.ts (Nova Burst 로직)
|
||||
- `updateNovaBurst()`: 5/4/3초 주기로 동작하는 전방위 충격파 로직 구현.
|
||||
- **넉백 물리**: 중심점으로부터의 거리(dist)에 반비례하는 벡터 힘을 적군 vx, vy에 가산.
|
||||
- **시각 연출**: Lv1~2(16방향 링), Lv3(24방향 2중 링) 파티클 및 강력한 화면 흔들림(Screen Shake) 연동.
|
||||
|
||||
### 2. useGameStore.ts (상태 관리 확장)
|
||||
- `permanentUpgrades`: HP, ATK, SPEED, MAGNET, GOLD_GAIN 5종 스탯 정의 (최대 5레벨).
|
||||
- `purchasePermanentUpgrade()`: Gold 차감 및 지수적 비용(300~8000G) 테이블 적용.
|
||||
- `eventPass`: 500pts당 1티어 상승, Tier 10(S급 쿠폰), Tier 20(SS급 쿠폰) 보상 로직 구현.
|
||||
|
||||
### 3. LootGenerator.ts (희귀도 조정)
|
||||
- `rollLoot()`: S급(엘리트 1.5%), SS급(자연 드롭 0%)으로 드롭률 극한 하향 조정.
|
||||
- `rollWithCoupon()`: 패스 보상용 S/SS급 확정 생성 메서드 추가.
|
||||
|
||||
### 4. HangarOverlay.tsx & CSS (UI/UX)
|
||||
- **탭 확장**: 기존 5탭에서 UPGRADE(🛸), PASS(🎫) 포함 7탭으로 확장.
|
||||
- **UPGRADE UI**: 레벨별 Pip 바(5칸) 시각화 및 구매 가능 여부 실시간 피드백.
|
||||
- **PASS UI**: 티어 진행도 바, 마일스톤 카드, 프리미엄 패스 구매 CTA 구현.
|
||||
- **Premium Style**: 네온 블루/황금색 그라디언트, 마이크로 애니메이션(Hover Scale) 적용.
|
||||
|
||||
## 🧠 사용한 지식 (Knowledge Used)
|
||||
- **Dopamine Loop Design**: 'Pop Effect'와 'Satisfaction of Scale'을 위한 파티클/넉백 결합.
|
||||
- **Resource Scarcity**: 고가치 자산(SS_CLASS)의 인위적 희소성 관리.
|
||||
- **Exponential Cost Curve**: 후반부 성장을 위한 지수적 비용 설계.
|
||||
- **Meta-Progression Architecture**: Zustand를 이용한 영구 상태(Persistent State) 관리.
|
||||
|
||||
## ✅ 결과 (Result)
|
||||
- TypeScript 에러 0개 (`npx tsc --noEmit` 통과)
|
||||
- Git Commit: `0ac0084` (feat_nova_burst_perm_upgrade_event_pass)
|
||||
- Push 완료: `origin/main`
|
||||
|
||||
## 🔗 연결 지식 (Relevant Knowledge)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Game-Design (Meta-Progression, Dopamine Loop, Scarcity)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Software-Architecture (Persistent State, Action-Reducer Pattern)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\UI-UX (Tab System, Progress Visualization)
|
||||
@@ -1,65 +0,0 @@
|
||||
# 작업 과정 로그 (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)과 공유.
|
||||
|
||||
---
|
||||
|
||||
## 🧐 부장님(코다리) 한마디 😎
|
||||
"단순히 코드만 짜는 게 아니라, 왜 이렇게 짰는지 흐름을 기록하는 것이 진짜 엔지니어링이지! 🫡 시스템은 기록으로 증명된다. 🐟"
|
||||
@@ -1,98 +0,0 @@
|
||||
# [RAW LOG] 2026-04-22 — Crafting System Full Activation
|
||||
|
||||
## 작업 개요
|
||||
- 날짜: 2026-04-22
|
||||
- 세션: Skybound Crafting Economy Full Integration (Option B)
|
||||
- Git: `facb2ba` → `9e0110d`
|
||||
|
||||
---
|
||||
|
||||
## 1. 감사 결과 (진단)
|
||||
|
||||
| 항목 | 이전 상태 |
|
||||
|------|----------|
|
||||
| `mergeEquipment()` | ✅ HangarOverlay에서만 연결됨 |
|
||||
| `cosmicCast()` | ❌ 호출처 없음 |
|
||||
| `astralForge()` | ❌ 호출처 없음 |
|
||||
| `disassemble()` | ❌ 호출처 없음 |
|
||||
| `mergeTechPart()` | ❌ 호출처 없음 |
|
||||
| `techParts`, `materials` 상태 | ❌ 선언만 있고 실제 데이터 입출력 없음 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 구현 내역
|
||||
|
||||
### A. `useGameStore.ts` — 크래프팅 액션 전면 활성화
|
||||
- `addMaterials(mats)`: TechMats/Core 획득 시 상태 누적
|
||||
- `addTechPart(part)`: 드롭된 TechPart 인벤토리 추가
|
||||
- `disassembleItems(ids)`: 선택 아이템 일괄 분해 → 재료 획득 + 슬롯 해제
|
||||
- `cosmicCastAction()`: 재료(Eternal×50, Destruction×50, Tech×2000) 소모 → SS급 장비 생성
|
||||
- `astralForgeAction(targetId, sacrificeId)`: LEGEND/SS 대상 + S급 희생 → forgeLevel +1
|
||||
- `mergeTechPartAction(targetId, fodderIds)`: 동일 티어/스킬 TechPart 합성 → plusLevel +1
|
||||
|
||||
### B. `HangarOverlay.tsx` — 5탭 크래프팅 UI 전면 재작성
|
||||
| 탭 | 기능 |
|
||||
|----|------|
|
||||
| 🔩 EQUIP | 기존 장착 슬롯 + 인벤토리 |
|
||||
| ⬆ MERGE | 장비 합성(3개) + TechPart 합성(2개) |
|
||||
| 🔧 DISASSEMBLE | 선택 아이템 분해 + 재료 미리보기 |
|
||||
| ✦ COSMIC CAST | SS급 제작 재료 요구량 체크 + 실행 |
|
||||
| ⚒ FORGE | TARGET/SACRIFICE 슬롯 선택 → forgeLevel +1 |
|
||||
|
||||
- 재료 패널(TechMats, Eternal, Destruction, Relic)을 좌측 패널에 항상 표시
|
||||
- Feedback Toast: 성공/실패 3초 표시
|
||||
|
||||
### C. `HangarOverlay.css` — 새 스타일 추가
|
||||
- `.craft-tabs`, `.craft-tab-btn` — 5탭 네비게이션
|
||||
- `.materials-panel`, `.mat-grid` — 재료 표시
|
||||
- `.disassemble-preview` — 분해 미리보기 패널
|
||||
- `.cosmic-recipe`, `.cosmic-result-preview` — 코스믹 캐스트
|
||||
- `.forge-slots`, `.forge-slot-box` — 포지 슬롯 UI
|
||||
- `.craft-feedback` — 피드백 토스트 애니메이션
|
||||
- `.tech-list`, `.tech-row` — TechPart 목록
|
||||
|
||||
### D. `CombatSystem.ts` — 재료 드롭 연결
|
||||
- 일반 적: 3% 확률 TechMats 10~30 획득
|
||||
- 엘리트 적: 10% 확률 TechMats 50~100 획득 + 파란 텍스트 알림
|
||||
- 엘리트 적: 5% 확률 TechPart 드롭 → 보라색 텍스트 알림
|
||||
|
||||
### E. `LootGenerator.ts` — `rollTechPart()` 신규 추가
|
||||
- 6종 스킬 풀: fire_rate / speed_boost / magnet_range / damage_up / shield / missile
|
||||
- 스테이지 연동 티어: Stage 1-2→EXCELLENT, 3-4→EPIC, 5+→LEGEND
|
||||
|
||||
---
|
||||
|
||||
## 3. 경제 흐름 (완성된 파이프라인)
|
||||
|
||||
```
|
||||
적 처치 (일반 3% / 엘리트 10%)
|
||||
↓
|
||||
addMaterials({ techMats })
|
||||
↓
|
||||
HangarOverlay [DISASSEMBLE 탭] → 불필요 장비 분해 → Eternal/Destruction Core 획득
|
||||
↓
|
||||
HangarOverlay [COSMIC CAST 탭] → 코스믹 캐스트 → SS급 장비 생성
|
||||
↓
|
||||
HangarOverlay [FORGE 탭] → SS/LEGEND 장비 forgeLevel +1~5
|
||||
|
||||
엘리트 처치 (5%)
|
||||
↓
|
||||
addTechPart()
|
||||
↓
|
||||
HangarOverlay [MERGE 탭] → TechPart 합성 → plusLevel +1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. TypeScript & Git
|
||||
- `npx tsc --noEmit`: **에러 0개 ✅**
|
||||
- Commit: `feat_crafting_full_ui_economy` (`9e0110d`)
|
||||
- Push: `main` ✅
|
||||
|
||||
---
|
||||
|
||||
## 5. 다음 과제 (Next Steps)
|
||||
1. **보스 처치 시 Eternal/Destruction Core 보장 드롭** 추가
|
||||
2. **코스믹 캐스트 결과 다양화** — Twin Lance 외 랜덤 SS급 풀 확장
|
||||
3. **TechPart 효과 실제 반영** — 인게임 스탯에 plusLevel 반영 로직
|
||||
4. **UI 시각 검증** — `http://localhost:5174/` 5탭 동작 확인
|
||||
@@ -1,59 +0,0 @@
|
||||
# 작업 로그: Event Pass 연동 + Nova Burst Canvas 렌더러 구현
|
||||
|
||||
## 📋 작업 내용 (What)
|
||||
1. **addEventPassPoints 실제 연결**: 보스 처치, 미션 클리어(STAGE_CLEAR), 미션 실패(부분 런) 시 Event Pass 포인트를 실제 게임플레이 이벤트에 연결.
|
||||
2. **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_REWARD` intent 핸들러에 `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)
|
||||
@@ -1,27 +0,0 @@
|
||||
# [LOG] Git Operation Mapping Protocol & Work Log System Setup
|
||||
|
||||
- **작업 일시**: 2026-04-22
|
||||
- **작업 내용**: 구역별 Git 명령어 맵핑(Wiki, Skybound, Legal, Agent) 및 작업 자동 기록 시스템(Work Log) 수립.
|
||||
- **이유/목적**: 대표님의 명령 한마디로 복잡한 Git 작업을 정확한 경로와 저장소에 수행하고, 모든 AI 작업 과정을 체계적으로 문서화하여 누락 없는 히스토리 관리를 하기 위함.
|
||||
- **기대값**:
|
||||
1. Git 작업 시 경로 혼선 및 저장소 오류 0건 달성.
|
||||
2. 모든 작업의 의도, 지식, 결과가 md 파일로 축적되어 추후 지식 베이스 강화에 기여.
|
||||
- **처리 과정**:
|
||||
1. 각 프로젝트별(`2nd`, `skybound`, `Legal`, `Agent`) 현재 Git 설정 확인.
|
||||
2. 대표님 지시 URL과 로컬 설정 대조 및 필요 시 `set-url`로 업데이트.
|
||||
3. 각 폴더에 `GIT_PROTOCOL.md`를 생성하여 명문화.
|
||||
4. `E:\Wiki\2nd\00_Raw` 경로에 작업 일지 작성 시스템 가동.
|
||||
- **사용 지식**:
|
||||
* Git Remote Management (`git remote set-url`)
|
||||
* Organizational Process Assets (OPA) 구축 방법론
|
||||
* Markdown 기반 기술 문서 표준화
|
||||
- **결과**:
|
||||
* 4개 주요 거점의 Git 맵핑 완료 및 승인 대기.
|
||||
* 첫 번째 작업 로그(`2026-04-22_Git_Protocol_Setup.md`) 생성 완료.
|
||||
- **연결 지식 (Relevant Knowledge)**:
|
||||
* [[E:\Wiki\2nd\10_Wiki\Topics\04_Governance_Reliability]] (거버넌스 및 신뢰성)
|
||||
* [[E:\Wiki\2nd\10_Wiki\Topics\Automation]] (자동화)
|
||||
* [[E:\Wiki\2nd\10_Wiki\Topics\Skybound]] (프로젝트 연계)
|
||||
|
||||
---
|
||||
**작성자**: AI 개발부장 코다리 🫡
|
||||
@@ -1,70 +0,0 @@
|
||||
# 작업 로그: In-Game Level-Up & Evolution System (Phase 1~4) 전체 구현
|
||||
|
||||
## 📋 작업 내용 (What)
|
||||
Skybound 프로젝트의 인게임 레벨업 및 진화 시스템을 4개 핵심 파일에 걸쳐 완전 구현.
|
||||
|
||||
## 🎯 왜 했는지 (Why)
|
||||
기존 `ProgressionSystem.ts`에 EXP 수집, 레벨업, 진화 구조가 골격만 있었고:
|
||||
- 게임 Pause 연동이 없어 카드 선택 중에도 전투가 진행됨
|
||||
- 스킬 선택 후 엔진 내부 상태에 `(engine as any).state` 해킹으로 불완전 반영
|
||||
- EVO 스탯 적용 로직 없음, 패시브 스킬 확장 불가
|
||||
- 카드 풀 생성이 UI에서 무작위 생성되어 엔진 로직과 분리됨
|
||||
|
||||
## 💡 기대값 (Expected Value)
|
||||
- 레벨업 시 게임 완전 Pause + 3지선다 카드 표시 → 선택 후 재개
|
||||
- 스킬이 엔진 내부 state에 정확히 반영됨 (단방향 플로우)
|
||||
- 진화 조건 달성 시 EVO 이펙트 + 스탯 즉시 반영
|
||||
- TypeScript 타입 에러 0개
|
||||
|
||||
## 🔧 처리 과정 (How)
|
||||
|
||||
### 1. ProgressionSystem.ts (전면 재작성)
|
||||
- `handleLevelUp()`: ctx.setPaused(true) 호출 후 `generateSkillCards()` 결과를 LEVEL_UP 이벤트에 포함
|
||||
- `generateSkillCards()`: MAX_SKILL_SLOTS 가드, 소유 스킬 2x 가중치 Fisher-Yates 셔플
|
||||
- `applySkillSelection(ctx, skillId)`: 외부 콜백 포트 — UI에서 호출 → 엔진 state.skills 직접 업데이트 → setPaused(false)
|
||||
- `processEvolution()`: EVOLUTION_RECIPES 레지스트리 기반 스캔으로 EVO 트리거
|
||||
- `syncPassives()`: magnetRadius, speedBoost, fireRateBoost 패시브 스탯 매 프레임 동기화
|
||||
|
||||
### 2. useGameEngine.ts
|
||||
- `skillUpdaterRef` 추가: React UI → 엔진 단방향 주입 포트
|
||||
- `ctx` 선언 전 클로저 TDZ 방지를 위해 `let ctx` 패턴 사용
|
||||
- `applySkill()` 메서드 훅 반환에 추가
|
||||
|
||||
### 3. GameSceneRenderer.tsx (전면 재작성)
|
||||
- `engineRef` 패턴으로 hoisting 에러 제거
|
||||
- `handleEngineEvent`에서 `e.cards` 수신 → `levelUpCards` state 저장
|
||||
- `handleSkillSelect`: addSkill(store) + engine.applySkill(engine) 순서 보장
|
||||
- LevelUpModal에 `preGeneratedCards` prop 전달
|
||||
|
||||
### 4. LevelUpModal.tsx (전면 재작성)
|
||||
- `preGeneratedCards` prop 우선 사용 (엔진 결정론적 생성)
|
||||
- 레벨 업그레이드 표시 (Lv.N → Lv.N+1)
|
||||
- 빈 풀 처리 (Skip 옵션)
|
||||
|
||||
### 5. 타입 시스템 업데이트
|
||||
- `EffectiveStats`: `magnetRadius: number` 추가
|
||||
- `GameEvent.LEVEL_UP`: `cards: string[]` 추가
|
||||
- `createDefaultState`: `magnetRadius: 180` 초기화
|
||||
- `calculateEffectiveStats`: `magnetRadius: 180` 반환
|
||||
|
||||
### 6. AudioManager.ts
|
||||
- `playLevelUp()`: C5→E5→G5→C6 상승 아르페지오 절차형 사운드
|
||||
- `playEvoSuccess()`: 베이스 충격파 + 5음 하모닉 버스트 + 시머 레이어
|
||||
- `playSFX()` 라우팅: 'level-up', 'evo-success' → 전용 메서드
|
||||
|
||||
## 🧠 사용한 지식 (Knowledge Used)
|
||||
- JavaScript TDZ (Temporal Dead Zone): `let ctx` + closure 패턴
|
||||
- Fisher-Yates 셔플 알고리즘 (결정론적 랜덤)
|
||||
- Game Engine State-Driven Architecture (Pause Gate Pattern)
|
||||
- React useRef 패턴 (closure staleness 방지)
|
||||
- Web Audio API: OscillatorNode, BiquadFilterNode, GainNode 절차형 합성
|
||||
- TypeScript 인터페이스 확장 원칙
|
||||
|
||||
## ✅ 결과 (Result)
|
||||
**TypeScript 타입 에러 0개** — `npx tsc --noEmit` 클린 통과
|
||||
|
||||
## 🔗 연결 지식 (Relevant Knowledge)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Game-Design (State Machine, Loop Design)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\TypeScript-Patterns (Closure, TDZ, Ref Pattern)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Audio-Engineering (Procedural Sound Design)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Software-Architecture (Unidirectional Data Flow)
|
||||
@@ -1,69 +0,0 @@
|
||||
# 작업 로그: NOVA_GUARDIAN EVO + Permanent Upgrade Stat Injection
|
||||
|
||||
## 📋 작업 내용 (What)
|
||||
1. **NOVA_GUARDIAN EVO 레시피**: `aoe_nova(Lv3 MAX) + energy_shield(Lv1+)` 조합으로 황금 충격파 수호자 진화 구현.
|
||||
2. **Permanent Upgrade → EffectiveStats 실반영**: 영구 업그레이드 구매 시 실제 인게임 스탯(HP, ATK, SPD, MAGNET, GOLD)에 즉시 반영.
|
||||
|
||||
## 🎯 왜 했는지 (Why)
|
||||
- **Nova Burst의 EVO 목적지 부재**: `aoe_nova` 스킬이 최대 레벨 달성 후 더 이상 성장이 없어 장기 동기부여 약화.
|
||||
- **Permanent Upgrade 구조적 결함**: 골드를 소비해 영구 업그레이드를 구매해도 실제 인게임 세션에 아무런 영향이 없는 "빈 껍데기" 상태였음.
|
||||
|
||||
## 🔧 처리 과정 (How)
|
||||
|
||||
### 1. evolutions.ts — 레시피 등록 + 스킬 최대 레벨 테이블
|
||||
- `aoe_nova`를 `SKILL_REGISTRY`에 PRIMARY 스킬로 등록 (기존에 없었음).
|
||||
- `SKILL_MAX_LEVEL` 테이블 추가: `aoe_nova`의 최대 레벨을 3으로 명시적 정의.
|
||||
- `checkEvolutionPossible()` 로직을 하드코딩 `>= 5` → `SKILL_MAX_LEVEL[baseId]` 조회로 변경하여 **스킬별 상이한 최대 레벨 지원** 확보.
|
||||
- NOVA_GUARDIAN 레시피 및 메타데이터 추가 (icon: ✨).
|
||||
|
||||
### 2. ProgressionSystem.ts — NOVA_GUARDIAN EVO 스탯
|
||||
- `applyEvoStats()` switch에 `NOVA_GUARDIAN` 케이스 추가:
|
||||
- 쿨다운: 5s → 2.5s (`novaBurstCooldown` = 150프레임)
|
||||
- 반경: +50% (`novaBurstRadiusBonus` = 0.5)
|
||||
- 데미지: 기존 대비 ×2.5
|
||||
- 버스트 발동 시 1.5초(90프레임) 무적 플래그 (`novaGuardianShield: true`)
|
||||
|
||||
### 3. ModularWeaponSystem.ts — 분기 처리 + 황금 색상 연출
|
||||
- `update()`: `evolved.has('NOVA_GUARDIAN')` 분기 추가 → `isGuardian=true`로 `updateNovaBurst()` 호출.
|
||||
- `updateNovaBurst(isGuardian)` 파라미터 추가:
|
||||
- `eff.novaBurstCooldown` 오버라이드 (EVO 스탯 반영)
|
||||
- `eff.novaBurstRadiusBonus`로 반경 확장
|
||||
- Guardian 발동 시: 90프레임 무적, 황금 파티클 3중 링, "✨ SHIELD BURST ✨" 텍스트
|
||||
- `novaBurstRingEffect.isGuardian` 플래그 → GameRenderer에 색상 전달
|
||||
|
||||
### 4. GameRenderer.ts — 황금/청록 이중 색상 분기
|
||||
- `renderNovaBurstEffect()`: `ring.isGuardian` 기반 색상 팔레트 분기:
|
||||
- Guardian: `#ffd700` 황금 외부 링, `#ffab40` 중간 링(75%), `#ff8f00` 글로우, 12방향 스파이크
|
||||
- Nova: 기존 청록 팔레트 유지
|
||||
- Guardian 전용 3번째 중간 링 레이어 추가 (확장감과 위용 강화).
|
||||
|
||||
### 5. combatUtils.ts — V12.0 Stat Injection Engine
|
||||
- `calculateEffectiveStats()` 시그니처 변경:
|
||||
- 3번째 인자: `PermanentUpgradeState | any[]` (하위 호환성 유지)
|
||||
- 4번째 인자: `inventory?: any[]` (옵셔널)
|
||||
- Permanent Upgrade 파이프라인:
|
||||
- HP_MAX: `eff.maxHp += level` (레벨당 +1 HP)
|
||||
- ATTACK: `eff.dmg *= (1 + level * 0.05)` (레벨당 +5%)
|
||||
- SPEED: `eff.speed *= (1 + level * 0.04)` (레벨당 +4%)
|
||||
- MAGNET: `magnetRadius = 180 + level * 30` (레벨당 +30px)
|
||||
- GOLD_GAIN: `eff.goldGainBonus = level * 0.10` (경제 시스템용 계수)
|
||||
|
||||
### 6. 호출부 동기화
|
||||
- `useGameEngine.ts` L110: `calculateEffectiveStats('FALCON', equipped, permanentUpgrades, inventory)`
|
||||
- `HangarOverlay.tsx` L27: `useMemo` 의존성 배열에 `permanentUpgrades` 추가 → 구매 즉시 미리보기 갱신
|
||||
|
||||
## 🧠 사용한 지식 (Knowledge Used)
|
||||
- **하위 호환성 패턴**: 3번째 인자 타입 분기(`Array.isArray`)로 기존 HangarOverlay 호출도 에러 없이 유지.
|
||||
- **EVO 설계 원칙**: 기반 스킬(aoe_nova)의 최대 레벨 도달 + 보조 스킬(energy_shield) 보유를 EVO 조건으로 하여 조합 전략성 부여.
|
||||
- **Signal Pattern**: `eff.novaGuardianShield`, `eff.novaBurstCooldown`, `eff.novaBurstRadiusBonus`를 EffectiveStats에 플래그로 전달하여 WeaponSystem이 렌더러/로직에 결합 없이 EVO 상태를 인식.
|
||||
|
||||
## ✅ 결과 (Result)
|
||||
- TypeScript 에러 0개
|
||||
- 수정 파일: 7개 (evolutions.ts, ProgressionSystem.ts, ModularWeaponSystem.ts, GameRenderer.ts, combatUtils.ts, useGameEngine.ts, HangarOverlay.tsx)
|
||||
- Git Commit: `cefd1a2` (feat_nova_guardian_evo_permanent_upgrade_stat_injection)
|
||||
- Push 완료: `origin/main`
|
||||
|
||||
## 🔗 연결 지식 (Relevant Knowledge)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Game-Design (EVO Design, Skill Max Level, Meta-Progression)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\Software-Architecture (Signal Pattern, Backward Compatibility, Pipeline Design)
|
||||
- E:\Wiki\2nd\10_Wiki\Topics\UI-UX (Canvas Ring Rendering, Color Palette Branching)
|
||||
@@ -0,0 +1,113 @@
|
||||
# 🛡️ Skybound: Boss Battle System & Damage Architecture
|
||||
|
||||
이 문서는 Skybound 프로젝트의 보스전 메커니즘과 데미지 계산 체계를 정의합니다. 향 후 새로운 보스가 추가될 때, 이 문서의 **[Data Schema]**를 참조하여 `BossDefinition` 객체를 생성하십시오.
|
||||
|
||||
---
|
||||
|
||||
## 1. [Core] Damage & Shield System (데미지 체계)
|
||||
|
||||
플레이어 기체의 생존은 '장갑(Shield)' 게이지에 의존하며, 피탄 유형에 따라 감쇄율이 다릅니다.
|
||||
|
||||
### 📊 기체별 피탄 감쇄율 (Damage Multiplier)
|
||||
| 플레이어 기체명 | 탄환 피탄 시 (Projectile) | 충돌 시 (Collision/Crash) |
|
||||
| :--- | :---: | :---: |
|
||||
| **아즈마 (Azuma)** | 17% 감소 | 34% 감소 (2x) |
|
||||
| **스피릿 오브 드래곤** | 13% 감소 | 26% 감소 (2x) |
|
||||
| **물랑 루즈 (Mulang Rouge)** | 20% 감소 | 40% 감소 (2x) |
|
||||
|
||||
> **Rule**: 모든 충돌(Collision) 데미지는 탄환 피탄 데미지의 정확히 **2배**를 적용한다.
|
||||
|
||||
---
|
||||
|
||||
## 2. [Architecture] Boss Implementation Schema (보스 구현 구조)
|
||||
|
||||
새로운 보스를 추가할 때는 아래의 `BossDefinition` 인터페이스를 구현하는 클래스를 생성하십시오. 확장성을 위해 **Phase(형태)**를 리스트로 관리합니다.
|
||||
|
||||
### 🧬 Boss Definition Interface
|
||||
```typescript
|
||||
interface BossDefinition {
|
||||
id: string; // 예: 'STAGE_01_PLATON'
|
||||
name: string; // 보스 명칭
|
||||
totalPhases: number; // 총 형태 수 (2 or 📋)
|
||||
|
||||
phases: Array<{
|
||||
phaseIndex: number; // 1, 2, 3...
|
||||
description: string; // 해당 페이즈의 특징
|
||||
attackPatterns: Pattern[]; // 이 페이즈에서 사용 가능한 패턴 리스트
|
||||
transformationTrigger: string | null; // 다음 페이즈로 넘어가는 조건
|
||||
}>;
|
||||
|
||||
warningSequence: {
|
||||
audioSfx: string; // 경고음 ID
|
||||
cameraEffect: 'ZOOM_IN' | 'SHAKE'; // 카메라 연출
|
||||
};
|
||||
}
|
||||
|
||||
interface Pattern {
|
||||
type: 'DIRECT_FIRE' | 'SPREAD' | 'WINDER' | 'DRIFT' | 'AOE';
|
||||
projectileType: 'NORMAL' | 'DESTRUCTIBLE' | 'GREEN_HAZARD';
|
||||
complexity: number; // 탄창의 밀도 및 난이도
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. [Database] Boss Patterns Registry (보스별 데이터)
|
||||
|
||||
### ⚔️ Stage 1: 플라톤 (Platon) [2 Phases]
|
||||
* **Phase 1**: 기생 전투기 2대 소환 $\rightarrow$ 플레이어 조준 4점사 및 저격탄 발사.
|
||||
* **Phase 2**: 본체 등장 $\rightarrow$ 날개 충전식 포(2), 직선 기총(6), 파괴 가능 탄(4)을 통한 정밀 사격.
|
||||
|
||||
### ⚔️ Stage 2: 그레이트 혼 (Great Horn) [2 Phases]
|
||||
* **Phase 1**: 조준탄 $\rightarrow$ 회오리탄 $\rightarrow$ 드릴(파일벙커) 및 돌덩이 투척.
|
||||
* **Phase 2**: 전방 팽이 포탑 배치 $\rightarrow$ 일렬탄 난사 및 전방 돌진 $\rightarrow$ 좌우 산탄/조준탄 복합 패턴.
|
||||
|
||||
### 🦑 Stage 3: 크라켄 (Kraken) [3 Phases]
|
||||
* **Phase 1 (Ship Form)**: 직선 함포, 고속 조준탄, 기뢰 투척, 탄뭉텅이 생성.
|
||||
* **Phase 2 (Transformed)**: 함체 뒤집힘 $\rightarrow$ 초고속 방사(5/7점사), 잠수 후 미사일, 5-way 이중 조준탄.
|
||||
* **Phase 3 (Land/Flight Form)**: 4족 보행 비행형 $\rightarrow$ 파괴 가능 탄량사, 주포 3점사, 중앙 돌진 패턴.
|
||||
|
||||
### 🦋 Stage 4: 스파이스 버드 (Spice Birds) [2 Phases]
|
||||
* **Phase 1**: 광역 조준탄 $\rightarrow$ 화면 이동 후 산탄(4회) $\rightarrow$ 대각선 연사 및 빈 공간 탄 형성.
|
||||
* **Phase 2 (Split)**: 본체 분리(호버 탱크 2대) $\rightarrow$ 전체 화면 회오리탄 $\rightarrow$ 3-way 및 산탄 난사.
|
||||
|
||||
### 🐝 Stage 5: 블로우 오브 호른 (Blow of Hornet) [3 Phases]
|
||||
* **Phase 1**: 회오리탄(3~5발) 이중 난사, 고속 광역 조준탄, 2연속 록온 레이저.
|
||||
* **Phase 2**: 연사탄 좌우 발사 $\rightarrow$ 고속 광역탄 $\rightarrow$ 노란색 경고 표시 광역 레이저 투하.
|
||||
* **Phase 3**: 중앙 코어 거대 레이저(이동 제한) $\rightarrow$ 양옆 포의 조준탄 및 초고속 확산탄.
|
||||
|
||||
### 🚂 Stage 6: 쉬프트 메시아 (S.H.I.F.T Messiah) [3 Phases]
|
||||
* **Phase 1**: 열차 1대 $\rightarrow$ 와인더(침탄줄)로 플레이어 가둠 $\rightarrow$ 고속 조준탄 및 촘촘한 탄막.
|
||||
* **Phase 2 (Armor Up)**: CIWS 개틀링, 3포신 포탑 고속탄, 랜덤탄, 화염방사 패턴 추가.
|
||||
* **Phase 3 (Triple Threat)**: 열차 3대 동시 등장 $\rightarrow$ 광역 공격, 중형 미사일, 랜덤탄 및 화염방사 합동 공격.
|
||||
|
||||
### 👼 Stage 7: 콜로니 엔젤 (Colony Angel) [3 Phases]
|
||||
* **Phase 1**: 다리(6개) 파괴 단계 $\rightarrow$ 각 다리를 순차적으로 제거.
|
||||
* **Phase 2**: 고속 원형 확산탄 및 조준탄 대량 투하.
|
||||
|
||||
* **Phase 3 (Final Form)**: 상부 회전 $\rightarrow$ 초고속 와인더 탄줄 + 고속 조준탄 $\rightarrow$ 이중 회전 탄줄 발악 패턴.
|
||||
|
||||
### 👑 Stage 8: 최종 보스 (Ultimate Boss) [3 Phases]
|
||||
* **Boss A: 험프티 덤프티 (Humpty Dumpty)**: 3단계 진행 $\rightarrow$ 최종 단계에서 초고속 확산탄 및 고속 조준탄 연사.
|
||||
* **Boss B: 디바인 램파트 (Divine Rampart)** *(조건: 모든 무기 Lv.10)*
|
||||
* **Phase 1**: 초고속 회오리탄 + 6-way 와인더 탄줄.
|
||||
* **Phase 2**: 전함 3대 사출 $\rightarrow$ 전함들의 조준탄/회전탄/확산탄 합동 공격.
|
||||
* **Final Phase**: 본체 회전 및 무수한 탄량사 $\rightarrow$ 순간 이동 후 광폭화 패턴 반복.
|
||||
|
||||
|
||||
## 4. [Level Design] 보스전 난이도 조절 메커니즘 (Difficulty Scaling)
|
||||
|
||||
보스전의 재미는 '예측 가능한 위협'과 '극복하기 힘든 압박' 사이의 균형에 있습니다. 다음 요소를 활용하여 스테이지별 난이도를 설계하십시오.
|
||||
|
||||
### 📈 난이도 곡선 제어 요소
|
||||
* 탄환 밀도 (Bullet Density): Pattern.complexity 값을 조절하여 탄창의 빈틈을 줄입니다. 초반부에는 플레이어가 피할 공간(Safe Zone)을 확보해주고, 후반부로 갈수록 탄창 사이의 간격을 최소화합니다.
|
||||
* 공격 패턴의 복합성 (Pattern Layering):
|
||||
* Phase 1: 단일 방향성 공격 (예: 직선 기총).
|
||||
* Phase 2: 다방향성 + 물리적 방해 (예: 회오리탄 + 돌덩이 투척).
|
||||
* Phase 3: 플레이어의 이동을 제한하는 '환경 제약'형 패턴 (예: 거대 레이저로 인한 구역 제한).
|
||||
* 공격 주기 (Attack Frequency): Cooldown 값을 줄여 공격 사이의 공백을 없앰으로써 플레이어가 반격할 타이밍을 극도로 제한합니다.
|
||||
|
||||
### ⚠️ 위험 요소 관리 (Hazard Integration)
|
||||
보스전은 단순히 보스만 등장하는 것이 아니라, 주변 환경(Stage Environment)과의 상호작용이 필수적입니다.
|
||||
* 환경 장애물: 보스가 파괴 가능한 부속물(예: Stage 1의 날개 끝 포, Stage 3의 기뢰)을 생성하여 플레이어의 이동 경로를 물리적으로 차단하게 설계합니다.
|
||||
* 데미지 누적 압박: Spike 이벤트를 활용하여 특정 시간대에 탄환 밀도를 폭발적으로 증가시켜, 플레이어가 '생존'에만 집중하게 만드는 구간을 배치합니다.
|
||||
Reference in New Issue
Block a user