From 8325760eadec1c6f354adbac52672205cc00b51f Mon Sep 17 00:00:00 2001 From: yesung Date: Thu, 23 Apr 2026 19:25:56 +0900 Subject: [PATCH] docs: update Skybound knowledge hub and stability reports --- 00_Raw/Boss_Battle_Design_System.md | 113 ----------- 10_Wiki/2nd/.obsidian/app.json | 1 - 10_Wiki/2nd/.obsidian/appearance.json | 1 - 10_Wiki/2nd/.obsidian/core-plugins.json | 33 ---- 10_Wiki/2nd/.obsidian/graph.json | 22 --- 10_Wiki/2nd/.obsidian/workspace.json | 186 ------------------ 10_Wiki/2nd/2026-04-20.md | 0 10_Wiki/2nd/무제.base | 3 - 10_Wiki/2nd/무제.canvas | 1 - 10_Wiki/2nd/환영합니다!.md | 5 - ...ombat_System_Reference_Error_Resolution.md | 28 +++ .../Skybound_Implementation_Report_V10_5.md | 37 ++++ .../Boss_Battle_Design_System.md | 66 +++++++ .../Boss_Combat_Stability_Fix_Log.md | 33 ++++ .../UX_Gameplay_Protocol_V10_0.md | 35 ++++ ...04-21_Stability_and_Optimization_Report.md | 32 +++ .../Topics/Skybound/Skybound-Knowledge-Hub.md | 6 + 17 files changed, 237 insertions(+), 365 deletions(-) delete mode 100644 00_Raw/Boss_Battle_Design_System.md delete mode 100644 10_Wiki/2nd/.obsidian/app.json delete mode 100644 10_Wiki/2nd/.obsidian/appearance.json delete mode 100644 10_Wiki/2nd/.obsidian/core-plugins.json delete mode 100644 10_Wiki/2nd/.obsidian/graph.json delete mode 100644 10_Wiki/2nd/.obsidian/workspace.json delete mode 100644 10_Wiki/2nd/2026-04-20.md delete mode 100644 10_Wiki/2nd/무제.base delete mode 100644 10_Wiki/2nd/무제.canvas delete mode 100644 10_Wiki/2nd/환영합니다!.md create mode 100644 10_Wiki/Topics/Skybound/01_Core_Engine/Combat_System_Reference_Error_Resolution.md create mode 100644 10_Wiki/Topics/Skybound/01_Core_Engine/Skybound_Implementation_Report_V10_5.md create mode 100644 10_Wiki/Topics/Skybound/03_Boss_Systems/Boss_Battle_Design_System.md create mode 100644 10_Wiki/Topics/Skybound/03_Boss_Systems/Boss_Combat_Stability_Fix_Log.md create mode 100644 10_Wiki/Topics/Skybound/04_Mechanics_Progression/UX_Gameplay_Protocol_V10_0.md create mode 100644 10_Wiki/Topics/Skybound/05_Project_Issues/2026-04-21_Stability_and_Optimization_Report.md diff --git a/00_Raw/Boss_Battle_Design_System.md b/00_Raw/Boss_Battle_Design_System.md deleted file mode 100644 index d10395c5..00000000 --- a/00_Raw/Boss_Battle_Design_System.md +++ /dev/null @@ -1,113 +0,0 @@ -# 🛡️ 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 이벤트를 활용하여 특정 시간대에 탄환 밀도를 폭발적으로 증가시켜, 플레이어가 '생존'에만 집중하게 만드는 구간을 배치합니다. \ No newline at end of file diff --git a/10_Wiki/2nd/.obsidian/app.json b/10_Wiki/2nd/.obsidian/app.json deleted file mode 100644 index 9e26dfee..00000000 --- a/10_Wiki/2nd/.obsidian/app.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/10_Wiki/2nd/.obsidian/appearance.json b/10_Wiki/2nd/.obsidian/appearance.json deleted file mode 100644 index 9e26dfee..00000000 --- a/10_Wiki/2nd/.obsidian/appearance.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/10_Wiki/2nd/.obsidian/core-plugins.json b/10_Wiki/2nd/.obsidian/core-plugins.json deleted file mode 100644 index 639b90da..00000000 --- a/10_Wiki/2nd/.obsidian/core-plugins.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "file-explorer": true, - "global-search": true, - "switcher": true, - "graph": true, - "backlink": true, - "canvas": true, - "outgoing-link": true, - "tag-pane": true, - "footnotes": false, - "properties": true, - "page-preview": true, - "daily-notes": true, - "templates": true, - "note-composer": true, - "command-palette": true, - "slash-command": false, - "editor-status": true, - "bookmarks": true, - "markdown-importer": false, - "zk-prefixer": false, - "random-note": false, - "outline": true, - "word-count": true, - "slides": false, - "audio-recorder": false, - "workspaces": false, - "file-recovery": true, - "publish": false, - "sync": true, - "bases": true, - "webviewer": false -} \ No newline at end of file diff --git a/10_Wiki/2nd/.obsidian/graph.json b/10_Wiki/2nd/.obsidian/graph.json deleted file mode 100644 index 42a46eca..00000000 --- a/10_Wiki/2nd/.obsidian/graph.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "collapse-filter": true, - "search": "", - "showTags": false, - "showAttachments": false, - "hideUnresolved": false, - "showOrphans": true, - "collapse-color-groups": true, - "colorGroups": [], - "collapse-display": true, - "showArrow": false, - "textFadeMultiplier": 0, - "nodeSizeMultiplier": 1, - "lineSizeMultiplier": 1, - "collapse-forces": true, - "centerStrength": 0.518713248970312, - "repelStrength": 10, - "linkStrength": 1, - "linkDistance": 250, - "scale": 1, - "close": true -} \ No newline at end of file diff --git a/10_Wiki/2nd/.obsidian/workspace.json b/10_Wiki/2nd/.obsidian/workspace.json deleted file mode 100644 index 858db23c..00000000 --- a/10_Wiki/2nd/.obsidian/workspace.json +++ /dev/null @@ -1,186 +0,0 @@ -{ - "main": { - "id": "3c95657998eaa039", - "type": "split", - "children": [ - { - "id": "73164a8ecc5a1d5a", - "type": "tabs", - "children": [ - { - "id": "9a855efb1f6d17e9", - "type": "leaf", - "state": { - "type": "graph", - "state": {}, - "icon": "lucide-git-fork", - "title": "그래프 뷰" - } - } - ] - } - ], - "direction": "vertical" - }, - "left": { - "id": "9cce54dc0fde5638", - "type": "split", - "children": [ - { - "id": "fec6c0fbe7c5feb3", - "type": "tabs", - "children": [ - { - "id": "36812539ece60a55", - "type": "leaf", - "state": { - "type": "file-explorer", - "state": { - "sortOrder": "alphabetical", - "autoReveal": false - }, - "icon": "lucide-folder-closed", - "title": "파일 탐색기" - } - }, - { - "id": "971a2cfe9eb674b1", - "type": "leaf", - "state": { - "type": "search", - "state": { - "query": "", - "matchingCase": false, - "explainSearch": false, - "collapseAll": false, - "extraContext": false, - "sortOrder": "alphabetical" - }, - "icon": "lucide-search", - "title": "검색" - } - }, - { - "id": "fbc0a933a1706f06", - "type": "leaf", - "state": { - "type": "bookmarks", - "state": {}, - "icon": "lucide-bookmark", - "title": "북마크" - } - } - ] - } - ], - "direction": "horizontal", - "width": 300 - }, - "right": { - "id": "7e73822cfe264a3a", - "type": "split", - "children": [ - { - "id": "c83e42d2020be474", - "type": "tabs", - "children": [ - { - "id": "34c26b158c0020ec", - "type": "leaf", - "state": { - "type": "backlink", - "state": { - "collapseAll": false, - "extraContext": false, - "sortOrder": "alphabetical", - "showSearch": false, - "searchQuery": "", - "backlinkCollapsed": false, - "unlinkedCollapsed": true - }, - "icon": "links-coming-in", - "title": "백링크" - } - }, - { - "id": "4294fd4f01010856", - "type": "leaf", - "state": { - "type": "outgoing-link", - "state": { - "linksCollapsed": false, - "unlinkedCollapsed": true - }, - "icon": "links-going-out", - "title": "나가는 링크" - } - }, - { - "id": "287a52ec231392f1", - "type": "leaf", - "state": { - "type": "tag", - "state": { - "sortOrder": "frequency", - "useHierarchy": true, - "showSearch": false, - "searchQuery": "" - }, - "icon": "lucide-tags", - "title": "태그" - } - }, - { - "id": "6da8e5393086f3aa", - "type": "leaf", - "state": { - "type": "all-properties", - "state": { - "sortOrder": "frequency", - "showSearch": false, - "searchQuery": "" - }, - "icon": "lucide-archive", - "title": "모든 속성" - } - }, - { - "id": "f5ca63138f5629e8", - "type": "leaf", - "state": { - "type": "outline", - "state": { - "followCursor": false, - "showSearch": false, - "searchQuery": "" - }, - "icon": "lucide-list", - "title": "개요" - } - } - ] - } - ], - "direction": "horizontal", - "width": 300, - "collapsed": true - }, - "left-ribbon": { - "hiddenItems": { - "switcher:빠른 전환기 열기": false, - "graph:그래프 뷰 열기": false, - "canvas:새 캔버스 만들기": false, - "daily-notes:오늘의 일일 노트 열기": false, - "templates:템플릿 삽입": false, - "command-palette:명령어 팔레트 열기": false, - "bases:새 베이스 생성하기": false - } - }, - "active": "9a855efb1f6d17e9", - "lastOpenFiles": [ - "2026-04-20.md", - "무제.canvas", - "무제.base", - "환영합니다!.md" - ] -} \ No newline at end of file diff --git a/10_Wiki/2nd/2026-04-20.md b/10_Wiki/2nd/2026-04-20.md deleted file mode 100644 index e69de29b..00000000 diff --git a/10_Wiki/2nd/무제.base b/10_Wiki/2nd/무제.base deleted file mode 100644 index d75ccc18..00000000 --- a/10_Wiki/2nd/무제.base +++ /dev/null @@ -1,3 +0,0 @@ -views: - - type: table - name: 표 diff --git a/10_Wiki/2nd/무제.canvas b/10_Wiki/2nd/무제.canvas deleted file mode 100644 index 9e26dfee..00000000 --- a/10_Wiki/2nd/무제.canvas +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/10_Wiki/2nd/환영합니다!.md b/10_Wiki/2nd/환영합니다!.md deleted file mode 100644 index d80d118d..00000000 --- a/10_Wiki/2nd/환영합니다!.md +++ /dev/null @@ -1,5 +0,0 @@ -새로운 *보관함*입니다. - -내용을 한번 적어보세요, [[create a link]], 혹은 [임포터](https://help.obsidian.md/Plugins/Importer)를 사용해봐도 좋습니다! - -준비가 됐다면 이 노트를 삭제하고 맞춤형 보관함을 만들어보세요. \ No newline at end of file diff --git a/10_Wiki/Topics/Skybound/01_Core_Engine/Combat_System_Reference_Error_Resolution.md b/10_Wiki/Topics/Skybound/01_Core_Engine/Combat_System_Reference_Error_Resolution.md new file mode 100644 index 00000000..8de0c49e --- /dev/null +++ b/10_Wiki/Topics/Skybound/01_Core_Engine/Combat_System_Reference_Error_Resolution.md @@ -0,0 +1,28 @@ +# 🛠️ Combat System: ReferenceError Resolution Guide + +## 1. Context (배경) +전투 시스템(`CombatSystem.ts`) 리팩토링 중, 런타임에서 엔진이 중단되는 치명적인 참조 오류가 발생하였습니다. 본 문서는 해당 오류의 원인과 해결 방법, 그리고 향후 유사 사례 방지를 위한 가이드라인을 기록합니다. + +## 2. Issue Breakdown (오류 분석) +- **Error Type**: `ReferenceError: damage is not defined` +- **Location**: `CombatSystem.ts` (Collision Detection Loop) +- **Root Cause**: 블록 스코프(`if/else`) 내부에서 `damage` 변수를 사용하기 전에 `let` 혹은 `const`를 통한 명시적 선언이 누락됨. 자바스크립트의 비엄격 모드 혹은 리팩토링 과정에서의 선언부 유실이 원인이었습니다. + +## 3. Resolution (해결 방법) +탄환의 공격력을 계산하기 전, 명시적으로 스코프 내에 변수를 선언하도록 수정하였습니다. +```typescript +// Fix logic +let damage = bullet.dmg; // 명시적 선언 및 초기화 +if (isCritical) { + damage *= criticalMultiplier; +} +``` + +## 4. Prevention Policy (재발 방지 대책) +- **Strict Declaration**: 모든 변수는 반드시 `const` 또는 `let`을 사용하여 선언하며, 선언되지 않은 변수의 암묵적 전역화(Implicit Global)를 철저히 금지한다. +- **Linter Integration**: `no-undef` 규칙을 강화하여 빌드 타임에서 미선언 변수 참조를 사전에 차단한다. +- **Unit Test**: 충돌 판정 로직에 대한 단위 테스트를 수행하여 데미지 계산 루프의 무결성을 검증한다. + +--- +**Related Cluster**: [[01_Core_Engine/Game-Engine-Loop-and-System-Orchestration|Runtime Pipeline]] +**Last Updated**: 2026-04-23 diff --git a/10_Wiki/Topics/Skybound/01_Core_Engine/Skybound_Implementation_Report_V10_5.md b/10_Wiki/Topics/Skybound/01_Core_Engine/Skybound_Implementation_Report_V10_5.md new file mode 100644 index 00000000..2c0971d6 --- /dev/null +++ b/10_Wiki/Topics/Skybound/01_Core_Engine/Skybound_Implementation_Report_V10_5.md @@ -0,0 +1,37 @@ +# 🚀 Skybound Protocol: Implementation Report (V10.5) + +## 1. Strategic Objective (전략 목표) +단순 슈팅 게임의 한계를 넘어, **'고유의 성장 곡선'**과 **'도파민 피드백 리듬'**을 갖춘 하이브리드-캐주얼 로그라이크로의 아키텍처 재정립. + +## 2. Core System Blueprints (핵심 시스템 설계도) + +### 📊 Master Timeline (`StageDirectorSystem`) +긴장감이 고조되는 4단계 페이즈 시스템 구축: +1. **INTRO**: 기본 조작 적응 및 자원 파밍. +2. **ELITE_PRESS**: 정예 기체 중심의 압박 시퀀스. +3. **SWARM**: 대규모 적 물량 습격 (Survivor-like UX). +4. **FINAL_BOSS**: 거대 기체와의 최종 결전. + +### 🧬 Data-Driven EVO Engine (`ProgressionSystem`) +로직과 데이터를 분리하여 확장성을 극대화한 진화 시스템: +- **Registry Pattern**: 모든 스킬 메타데이터의 중앙 집중 관리. +- **Graph-based Evolution**: [주무기 + 보조스킬] 조합을 통한 상위 무기 연성 로직. + +### 💥 High-Dopamine Feedback Engine +유저의 감각을 자극하는 피드백 루프 구현: +- **Red Critical**: 시각적 전능감 부여. +- **Screen Shake**: 물리적 타격감 전달. +- **Glitch Effect**: 진화 성공 시의 시스템 몰입감 극대화. + +### 💎 Meta-Game Economy (Hangar & Crafting) +지속 가능한 리텐션을 위한 외부 루프 구축: +- **7-Tier Grade**: NORMAL ~ ETERNAL 위계 확립. +- **Triple-Merge**: 동일 등급 3개 합성을 통한 상위 등급 연성 엔진. + +## 3. Strategic Roadmap (로드맵) +- **Phase 3**: 드론 병합(Merge) 기믹 및 다중 입력 엔진 구현. +- **SS-Grade Expansion**: 메타 재화와 연동되는 특수 제작 트리 설계. + +--- +**Related Cluster**: [[Skybound-Knowledge-Hub|Strategic Knowledge Mesh]] +**Author**: PD Kodari 😎🐟 diff --git a/10_Wiki/Topics/Skybound/03_Boss_Systems/Boss_Battle_Design_System.md b/10_Wiki/Topics/Skybound/03_Boss_Systems/Boss_Battle_Design_System.md new file mode 100644 index 00000000..a472f72a --- /dev/null +++ b/10_Wiki/Topics/Skybound/03_Boss_Systems/Boss_Battle_Design_System.md @@ -0,0 +1,66 @@ +# 🛡️ Skybound: Boss Battle System & Damage Architecture + +## 1. Design Philosophy (설계 철학) +Skybound의 보스전은 **'예측 가능한 위협'**과 **'극복하기 힘든 압박'** 사이의 균형을 지향합니다. 유저에게 단순한 슈팅을 넘어, 패턴을 파악하고 최적의 회피 경로를 찾는 '전술적 재미'를 제공하는 것이 핵심입니다. + +## 2. Core Damage & Shield System (데미지 체계) + +### 📊 기체별 피탄 감쇄율 (Damage Multiplier) +플레이어 기체의 장갑(Shield) 특성에 따른 데미지 적용 계수입니다. +| 플레이어 기체명 | 탄환 피탄 시 (Projectile) | 충돌 시 (Collision/Crash) | +| :--- | :---: | :---: | +| **아즈마 (Azuma)** | 17% 감소 | 34% 감소 (2x) | +| **스피릿 오브 드래곤** | 13% 감소 | 26% 감소 (2x) | +| **물랑 루즈 (Mulang Rouge)** | 20% 감소 | 40% 감소 (2x) | + +> [!IMPORTANT] +> 모든 **충돌(Collision)** 데미지는 탄환 피탄 데미지의 정확히 **2배**를 적용하는 것을 원칙으로 합니다. + +## 3. Architecture: Boss Implementation Schema + +새로운 보스 추가 시 `BossDefinition` 인터페이스를 반드시 준수해야 합니다. + +### 🧬 Boss Definition Interface +```typescript +interface BossDefinition { + id: string; // 예: 'STAGE_01_PLATON' + name: string; // 보스 명칭 + totalPhases: number; // 총 형태 수 + + phases: Array<{ + phaseIndex: number; // 1, 2, 3... + description: string; // 페이즈 특징 + attackPatterns: Pattern[]; + transformationTrigger: string | null; + }>; + + warningSequence: { + audioSfx: string; // 경고음 ID + cameraEffect: 'ZOOM_IN' | 'SHAKE'; + }; +} +``` + +## 4. Stage-specific Boss Registry (스테이지별 보스 명세) + +| 스테이지 | 보스명 | 페이즈 | 주요 패턴 요약 | +| :--- | :--- | :---: | :--- | +| **Stage 1** | 플라톤 (Platon) | 2 | 기생기 소환, 본체 정밀 사격 | +| **Stage 2** | 그레이트 혼 | 2 | 드릴/돌덩이 투척, 전방 돌진 | +| **Stage 3** | 크라켄 (Kraken) | 3 | 함선 변형, 고속 방사, 잠수 미사일 | +| **Stage 4** | 스파이스 버드 | 2 | 광역 조준탄, 본체 분리(호버 탱크) | +| **Stage 5** | 블로우 오브 호른 | 3 | 록온 레이저, 중앙 코어 거대 레이저 | +| **Stage 6** | 쉬프트 메시아 | 3 | 열차 와인더 탄줄, CIWS 개틀링, 합동 공격 | +| **Stage 7** | 콜로니 엔젤 | 3 | 다리 파괴 시퀀스, 초고속 이중 회전 탄줄 | +| **Stage 8** | 최종 보스 | 3 | 험프티 덤프티 / 디바인 램파트 (무기 Lv.10 조건) | + +## 5. Difficulty Scaling Mechanism (난이도 조절) + +### 📈 제어 요소 +- **Bullet Density**: `Pattern.complexity` 값을 통해 회피 공간(Safe Zone) 조절. +- **Pattern Layering**: 페이즈가 진행됨에 따라 [단일 방향] -> [다방향/물리방해] -> [환경제약]으로 고도화. +- **Attack Frequency**: `Cooldown` 단축을 통한 압박 타이밍 제어. + +--- +**Related Cluster**: [[03_Boss_Systems/Boss_Encounter_and_Timeline_Design|Boss Encounter & Timeline Design]] +**Last Audit**: 2026-04-23 diff --git a/10_Wiki/Topics/Skybound/03_Boss_Systems/Boss_Combat_Stability_Fix_Log.md b/10_Wiki/Topics/Skybound/03_Boss_Systems/Boss_Combat_Stability_Fix_Log.md new file mode 100644 index 00000000..8dd88bbc --- /dev/null +++ b/10_Wiki/Topics/Skybound/03_Boss_Systems/Boss_Combat_Stability_Fix_Log.md @@ -0,0 +1,33 @@ +# 🕵️ Skybound: Boss Combat Stability Fix Log (2026-04-23) + +## 1. Issue Overview (이슈 개요) +- **Problem**: 보스 기체의 체력이 0이 되었음에도 불구하고 파괴되지 않고 게임이 정지되거나, `STAGE_CLEAR` 페이즈로 전환되지 않는 결함 발생. +- **Occurrence**: 특정 페이즈(BOSS_INTRO) 또는 특정 무기 조합에서 보스 처치 시 간헐적 발생. + +## 2. Root Cause Analysis (원인 분석) + +### 🔍 Logical Flaws +1. **Scope Restriction**: 기존 사망 판정 로직이 `BOSS` 페이즈 내부에만 존재하여, `BOSS_INTRO` 연출 도중 보스가 파괴될 경우 이를 감지하지 못함. +2. **Entity Lifecycle**: 보스 엔티티 파괴 후에도 `state.boss` 참조가 남아있어, 렌더러와 AI 시스템이 유령 객체를 계속 업데이트하려고 시도함. +3. **HUD Desync**: 보스의 실제 HP와 HUD의 게이지 바 업데이트 주기가 일치하지 않아 유저에게 혼동을 줌. + +## 3. Implemented Fixes (수정 사항) + +### 🛠️ Core Engine Modification +- **Unified Death Check**: `StageDirectorSystem.checkBossDefeat()` 메서드로 로직을 통합하여 모든 보스 관련 페이즈에서 사망을 실시간 감지하도록 수정. +- **Explicit Nullification**: 보스 파괴 즉시 `state.boss = null`을 수행하여 시스템의 불필요한 참조를 원천 차단. +- **Feedback Reinforcement**: + - 보스 사망 시 8개의 순차적 폭발(`Explosion`) 생성. + - 화면 흔들림(`SHAKE`) 강도 증가 및 지속 시간 조정. + +### 📊 HUD Synchronization +- `useGameEngine.ts` 루프 내에 HP 퍼센트(`hp / maxHp`) 동기화 로직 추가. + +## 4. Verification (검증 결과) +- **Test Case 1**: 보스 등장 애니메이션 도중 처치 시 정상적으로 스테이지 클리어 전환 확인. (Pass) +- **Test Case 2**: 보스 사망 후 렌더러의 Null 참조 에러 발생 여부 확인. (Pass) +- **Test Case 3**: HUD HP 바 실시간 동기화 확인. (Pass) + +--- +**Related Cluster**: [[05_Project_Issues/2026-04-21_Stability_and_Optimization_Report|Stability & Optimization]] +**Status**: Resolved & Wikified 🫡 diff --git a/10_Wiki/Topics/Skybound/04_Mechanics_Progression/UX_Gameplay_Protocol_V10_0.md b/10_Wiki/Topics/Skybound/04_Mechanics_Progression/UX_Gameplay_Protocol_V10_0.md new file mode 100644 index 00000000..2201a7cb --- /dev/null +++ b/10_Wiki/Topics/Skybound/04_Mechanics_Progression/UX_Gameplay_Protocol_V10_0.md @@ -0,0 +1,35 @@ +# 🎮 UX & Gameplay Protocol: V10.0 Upgrade + +## 1. Design Philosophy (설계 철학) +기능적 프로토타입을 넘어, 고도의 도파민 자극과 세련된 게임플레이 경험을 제공하는 **'Skybound Protocol V10.0'**의 명세입니다. + +## 2. Key Implementations (주요 구현 사항) + +### 🛩️ Airframe Streamlining (FALCON Focus) +- **Policy**: 'FALCON' 기체를 단일 영웅 기체로 설정하여 밸런싱 집중도 향상. +- **Impact**: 유저에게 일관된 조작감과 성장 경험을 제공. + +### 🎯 Jackpot Critical System (확률 기반 크리티컬) +- **Mechanism**: 15% 기본 확률, 1.5x ~ 5.0x의 데미지 편차 적용. +- **Dynamic**: `Math.pow(Math.random(), 3)`를 활용하여 초고데미지(Jackpot)의 희소성을 확보, 보상 극대화. + +### 🔢 Floating Text Feedback Engine +- **Visual Distinction**: + - 일반 타격: 소형 화이트 텍스트. + - 크리티컬: 대형 골드/오렌지 글로우 효과 및 "CRITICAL!" 텍스트 강조. +- **Motion**: 상단 부유 및 알파 채널 페이드아웃을 통한 가독성 확보. + +### 📈 Temporal Difficulty Scaling (시간 가변 난이도) +- **Algorithm**: `difficultyMult = 1.0 + (frame / 3600) * 0.1`. +- **Scaling Impact**: + - 적 스폰 쿨다운 단축. + - 적 HP 및 탄환 속도 비례 상승. + - 장애물(Asteroid) 출현 빈도 증가. + +## 3. Strategic Debt Resolved (해결된 기술 부채) +- `WorldModel`과 `spawnText` 브리지 동기화. +- `createDefaultState` 내 `difficultyMult` 초기화를 통한 SSOT(Single Source of Truth) 확보. + +--- +**Related Cluster**: [[04_Mechanics_Progression/Combat_Timeline_Difficulty_Scaling|World Tension Scaling]] +**Lead**: PD Kodari 🫡🐟 diff --git a/10_Wiki/Topics/Skybound/05_Project_Issues/2026-04-21_Stability_and_Optimization_Report.md b/10_Wiki/Topics/Skybound/05_Project_Issues/2026-04-21_Stability_and_Optimization_Report.md new file mode 100644 index 00000000..4f270ce6 --- /dev/null +++ b/10_Wiki/Topics/Skybound/05_Project_Issues/2026-04-21_Stability_and_Optimization_Report.md @@ -0,0 +1,32 @@ +# ⚡ Skybound: Stability & Optimization Report (2026-04-21) + +## 1. Executive Summary (요약) +대규모 교전 및 아이템 사용 시 발생하는 성능 저하와 런타임 크래시를 해결하기 위한 엔진 안정성 보강 작업을 수행하였습니다. + +## 2. Key Optimization Areas (주요 최적화 영역) + +### 💥 Particle Effect Management (이펙트 제어) +- **Problem**: 폭탄 사용 시 수천 개의 파편(Shard) 객체가 생성되어 FPS 급락. +- **Solution**: + - **Hard Cap**: 최대 파티클 개수를 500개로 제한. + - **TTL (Time To Live) Acceleration**: 파티클 소멸 속도를 6배 상향(0.1 -> 0.6)하여 자원 회수 주기를 단축. + +### 🛡️ Runtime Robustness (런타임 강건성) +- **Problem**: 존재하지 않는 엔티티 배열 접근으로 인한 `TypeError`. +- **Solution**: + - `GameRenderer` 내 모든 순회 로직에 옵셔널 체이닝(`?.`) 및 기본값(`|| []`) 처리 의무화. + - 인터페이스(`types.ts`)와 실제 상태 객체 간의 동기화 정밀 검수. + +### 🔄 Entity Pool Intelligence (엔티티 풀 고도화) +- **Problem**: ID(String)와 객체 참조 간의 혼선으로 인한 해제 실패. +- **Solution**: + - `EntityManager`에 `releaseById` 메서드 추가. + - 객체 여부와 관계없이 안전하게 리소스를 반납할 수 있는 추상화 레이어 구축. + +## 3. Post-Mortem (사후 분석) +- **Silo Effect**: 엔티티 매니저 도입과 같은 대규모 인프라 변경 시, 관련 인터페이스를 동시에 업데이트하지 않아 발생한 '느슨한 계약(Loose Contract)' 문제가 근본 원인이었습니다. +- **Guideline**: 시스템 간 데이터 교환 방식(ID 기반 vs 참조 기반)을 프로젝트 표준으로 확정하고 준수해야 합니다. + +--- +**Related Cluster**: [[05_Project_Issues/2026-04-21-Engine-Stability-and-Optimization|Performance Tuning]] +**Status**: Verified by QA 🫡 diff --git a/10_Wiki/Topics/Skybound/Skybound-Knowledge-Hub.md b/10_Wiki/Topics/Skybound/Skybound-Knowledge-Hub.md index 14564a47..c3923679 100644 --- a/10_Wiki/Topics/Skybound/Skybound-Knowledge-Hub.md +++ b/10_Wiki/Topics/Skybound/Skybound-Knowledge-Hub.md @@ -9,6 +9,8 @@ Skybound 프로젝트의 모든 시스템은 유기적으로 연결되어 있습 - **Master Plan**: [[01_Core_Engine/Skybound-Modular-Game-Architecture|Modular Architecture]] - **Data Flow**: [[01_Core_Engine/Stat-Injection-and-Visual-Renderer-Pipeline|Stat Injection & Renderer Pipeline]] - **Engine Loop**: [[01_Core_Engine/Game-Engine-Loop-and-System-Orchestration|Runtime Pipeline]] +- **Implementation**: [[01_Core_Engine/Skybound_Implementation_Report_V10_5|V10.5 Implementation Report]] +- **Fix Log**: [[01_Core_Engine/Combat_System_Reference_Error_Resolution|Combat System ReferenceError Resolution]] - **Campaign**: [[04_Mechanics_Progression/Campaign_and_Dual_Loop_System|Campaign & Dual-Loop Architecture]] - **Governance**: [[01_Core_Engine/Git_Synchronization_Protocol|Git & Knowledge Sync Protocol]] - **Visual Pattern**: [[01_Core_Engine/Visual_Feedback_Signal_Pattern|Visual Feedback Signal Pattern]] @@ -20,6 +22,7 @@ Skybound 프로젝트의 모든 시스템은 유기적으로 연결되어 있습 ## 🏷️ Keyword Cluster: #Battle_Tactics (전투 및 AI) 교전 규칙과 적 기체의 지능적 행동 양식입니다. - **Physics**: [[02_Combat_AI/Combat-System-and-Bullet-Interaction-Pipeline|Bullet Collision Pipeline]] +- **Design**: [[03_Boss_Systems/Boss_Battle_Design_System|Boss Battle Design System]] - **Timeline**: [[03_Boss_Systems/Boss_Encounter_and_Timeline_Design|Boss Encounter & Timeline Design]] - **Rhythm**: [[02_Combat_AI/Staggered-Firing-Logic-and-Phase-Offset|Staggered Firing & Offset]] - **Implementation**: [[10_Wiki/Technical_Reports/2026-04-22_Boss_Battle_System_Implementation|V13.0 Boss Battle System Implementation]] @@ -27,6 +30,7 @@ Skybound 프로젝트의 모든 시스템은 유기적으로 연결되어 있습 ## 🏷️ Keyword Cluster: #Dopamine_UX (피드백 및 텐션) 유저가 느끼는 '재미'의 수치화 및 연출 기법입니다. - **Feedback**: [[05_Project_Issues/2026-04-21-UX-Dopamine-Feedback-Upgrade|Dopamine Feedback Engine]] +- **Upgrade**: [[04_Mechanics_Progression/UX_Gameplay_Protocol_V10_0|V10.0 UX & Gameplay Upgrade]] - **Visuals**: [[01_Core_Engine/Visual_Feedback_Signal_Pattern|Dynamic Color & Renderer Signal]] - **Tension**: [[04_Mechanics_Progression/Combat_Timeline_Difficulty_Scaling|World Tension Scaling]] @@ -41,6 +45,8 @@ Skybound 프로젝트의 모든 시스템은 유기적으로 연결되어 있습 시스템의 무결성을 유지하기 위한 기록입니다. - **Audit**: [[05_Project_Issues/2026-04-22_Engine_Stability_Audit|V12.1 Engine Integrity Audit]] - **Optimization**: [[05_Project_Issues/2026-04-22_Engine_Logic_Optimization_Report|Engine Logic & Physics Optimization]] +- **Boss Fix**: [[03_Boss_Systems/Boss_Combat_Stability_Fix_Log|Boss Combat Stability Fix]] +- **Report**: [[05_Project_Issues/2026-04-21_Stability_and_Optimization_Report|2026-04-21 Stability & Optimization]] - **Performance**: [[05_Project_Issues/2026-04-21-Engine-Stability-and-Optimization|Performance Tuning]] ---