Fix: Restore unified Topics folder and reorganize specialized category folders

This commit is contained in:
Antigravity Agent
2026-05-02 23:25:02 +09:00
parent b71a0b82d3
commit fdfbc83535
6241 changed files with 147626 additions and 194 deletions
@@ -0,0 +1,24 @@
---
category: Dev
status: Final
converted_at: 2026-04-28
---
# 10v10 대규모 멀티플레이어
## 📌 Brief Summary
10v10 대규모 멀티플레이어는 WARNO에서 최대 20명의 플레이어가 동시에 참여하여 거대한 스펙터클과 혼란을 만들어내는 대규모 전술 게임 모드입니다 [1]. 이 모드에서는 유닛과 플레이어의 밀도가 매우 높아 강력한 포격과 촘촘한 방공망이 형성되며, 플레이어는 전장 전체가 아닌 특정 구역에 집중하여 전투를 수행할 수 있습니다 [1]. WARNO의 기반인 Iriszoom 엔진은 수백 개의 유닛이 기동하고 파괴되는 이러한 극단적인 환경 속에서도 4K 해상도와 풀 옵션을 안정적으로 유지할 수 있는 고도의 데이터 최적화 성능을 자랑합니다 [2, 3].
## 📖 Core Content
* **엔진 최적화 및 시각 데이터 처리:** 10v10 멀티플레이어 매치는 시스템에 엄청난 부하를 주지만, Iriszoom 엔진은 이를 원활하게 처리하도록 설계되었습니다 [2]. 수백 개의 개별 유닛이 동시에 전장에서 충돌하고 파괴되는 10 대 10 환경에서도 게임은 4K 해상도와 풀 옵션 설정에서 안정적인 성능을 보여줍니다 [3]. 또한 네이팜, 연막, 폭발 등의 시각적 효과 데이터가 10v10 모드에서도 효과가 종료되기 전에 사라지지 않고 명확하게 렌더링되도록 최적화되었습니다 [4].
* **전술적 환경의 변화:** 플레이어 밀도가 높은 10v10 게임에서는 맵의 좁은 부분에 역량을 집중할 수 있어, 치열한 협력과 혼전이 발생합니다 [1]. 대공 방어망이 빽촘하게 배치되어 항공기 운용이 매우 까다로워지며, 집중된 대규모 포격 데이터로 인해 노출된 고정 위치에서 보병을 생존시키는 것이 훨씬 더 어렵습니다 [1]. 일부 플레이어들은 10v10 모드에서 가장 유효한 전략을 '전면 돌격(full frontal assault)'으로 체감하기도 하며, NATO 진영은 무거운 기갑 사단을 스팸(spam)할 때 특히 강한 모습을 보입니다 [5, 6].
* **사단(Division) 단위 데이터 밸런싱:** 소규모 전투에서는 방어나 기동의 약점 때문에 다루기 까다로운 예비군 사단(예: K.d.A. Bezirk Erfurt)이나 특정 보병 사단들도 10v10과 같은 대규모 팀 게임에서는 훨씬 플레이하기 쉬워집니다 [7]. 팀원들이 부족한 보병이나 전차 전력을 채워주고, 본인은 포병과 대공망을 극대화하여 팀을 지원하는 방식의 상호 보완적 덱 빌딩이 가능해지기 때문입니다 [7, 8].
* **통계적 밸런스와 숙련도 데이터:** 많은 플레이어가 특정 진영(NATO 또는 PACT)이 10v10에서 불균형적으로 강하다고 인식하지만, 실제 10v10 퍼블릭 로비의 플레이어 승률과 텔레메트리 데이터를 분석해 보면 진영 간 눈에 띄는 편향은 발견되지 않습니다 [9]. 10v10 대규모 멀티플레이어 데이터 분석 결과, NATO와 PACT 간의 플레이 비중 및 승률은 플레이어의 숙련도가 높아질수록 균형을 이루는 경향을 보입니다 [10].
## 🔗 Knowledge Connections
- **Related Topics:** [[Iriszoom 엔진|Iriszoom 엔진]], [[사단(Division) 시스템|사단(Division) 시스템]], [[텔레메트리(Telemetry) 데이터 분석|텔레메트리(Telemetry) 데이터 분석]]
- **Projects/Contexts:** [[WARNO 데이터 기반 밸런싱|WARNO 데이터 기반 밸런싱]]
- **Contradictions/Notes:** 소스 [5]을 비롯해 10v10 커뮤니티 내에서는 게임 경험상 특정 진영(예: NATO)이 더 강하거나 유리하게 느껴진다는 체감상 주장들이 종종 제기되지만, 소스 [11], [9], [10]에서 진행된 실제 10v10 플레이어 데이터 및 승률 통계 분석에 따르면 두 진영 간의 통계적으로 유의미한 불균형이나 편향은 존재하지 않으며, 승패는 주로 플레이어 본인과 팀원들의 숙련도 차이에 기인하는 것으로 나타납니다 [12].
---
*Last updated: 2026-04-28*
@@ -0,0 +1,28 @@
# [[2014 Combat Controls Update|2014 Combat Controls Update]]
## 📌 Brief Summary
2014 Combat Controls Update는 2014년 2월 3일 게임 업데이트를 통해 도입된 새로운 전투 제어 시스템입니다 [1-3]. 이 시스템은 기존에 사용되던 정적인 방어 태세(Defensive Stances)를 동적이고 단축키 기반인 실시간 유닛 관리 체계로 대체했습니다 [3, 4]. 이를 통해 플레이어는 마이크로 컨트롤과 상황 인식 능력을 극대화할 수 있게 되었으며, 인공지능(AI)의 경로 및 교전 논리를 전략적으로 더 일관성 있게 조작할 수 있는 기반이 마련되었습니다 [3, 4].
## 📖 Core Content
**주요 전투 명령어 및 단축키 기능**
* **공격 이동 (Attack Move, 단축키 'A')**: 유닛을 지정한 위치로 이동시키며, 경로상에 있는 모든 적을 향해 발포합니다 [5, 6]. 타겟을 직접 클릭하더라도 이동 중에 만나는 다른 적 병력을 공격할 수 있습니다 [5].
* **이동 (Move, 단축키 'M')**: 적을 공격하기 위해 멈추지 않고 목표 위치로 직접 이동합니다 [5, 6]. 적의 시선을 끄는 미끼 전술(Baiting)이나 플랭킹, 빠른 재배치 등에 필수적으로 활용됩니다 [6].
* **정지 (Stop, 단축키 'S')**: 선택된 유닛에 내려진 모든 명령을 취소하고 이동을 멈춥니다 [5, 6]. 적 방어탑 사거리 안으로 유닛이 너무 깊숙이 들어가는 것을 방지할 때 쓰입니다 [6].
* **위치 사수 (Hold Position, 단축키 'D')**: 기존의 "제자리 대기(Stand Ground)" 태세를 대체하는 기능입니다 [5]. 유닛이 제자리에 머물며 사거리 내에 들어온 적만 공격하므로 병목 지점을 수비하거나 방어 진형을 유지하는 데 핵심적인 역할을 합니다 [5, 6].
* **자유 사격 (Fire at Will, 단축키 'F')**: 기존의 "공격적(Aggressive)" 태세를 대체합니다 [5]. 넓은 반경 내의 적대적 대상을 적극적으로 추격하여 교전합니다 [5, 6].
**고급 전술 제어 기능**
* **유닛 산개 (Spread Units, 단축키 'X')**: 전투 중 소대를 즉시 분산시켜 박격포나 중장갑 플랫폼으로부터 받는 광역(AoE) 및 스플래시 데미지의 영향을 최소화합니다 [1, 7].
* **적 체력 확인 (Enemy Health, 단축키 'B')**: 전장에 있는 모든 적 유닛의 체력 상태를 표시해 주어 교전 시 소모전 상황(Attrition level)을 파악할 수 있는 중요한 정보(Intel)를 제공합니다 [1, 7].
* **부대 지정 (단축키 'Shift + 숫자')**: 다중 전선 공격을 수행할 때 선택된 유닛들에 특정한 숫자를 부여하여 별도의 타격대(Strike teams)로 분할하여 관리할 수 있게 해줍니다 [1, 7].
**전술적 영향 및 AI 활용**
* 이러한 시스템 업데이트는 적의 방어선을 무너뜨리기 위해 유닛을 유인해 내는 '미끼 전술(Baiting)'의 효율과 직결됩니다 [8]. '자유 사격(Fire at Will)'이 적용된 유닛은 꾀어내기가 매우 쉬운 반면, '위치 사수(Hold Position)' 중인 유닛에게는 이 전술이 통하지 않으므로 컨트롤에 따른 명확한 상성이 존재합니다 [8].
## 🔗 Knowledge Connections
- **Related Topics:** [[Defensive Stances|Defensive Stances]], [[Baiting Tactics|Baiting Tactics]], [[Command and Control (C2)|Command and Control (C2)]]
- **Projects/Contexts:** [[War Commander AI and UI Enhancements|War Commander AI and UI Enhancements]]
- **Contradictions/Notes:** 기존에 한 번 설정하면 계속 유지되던 '방어 태세(Stances)'와는 달리, '위치 사수(Hold Position)'나 '자유 사격(Fire at Will)' 등의 새로운 명령들은 플레이어가 유닛에게 새로운 이동 명령을 내리는 즉시 설정이 해제(Cancel)된다는 중요한 차이점이 있습니다 [5]. 따라서 기지 방어 시 유닛을 배치한 후 다시 명령을 활성화해야 합니다 [5].
---
*Last updated: 2026-04-27*
@@ -0,0 +1,18 @@
# [[2025 Casual Gaming Apps Report|2025 Casual Gaming Apps Report]]
## 📌 Brief Summary
'2025 Casual Gaming Apps Report'는 Liftoff와 Singular가 공동으로 분석한 모바일 캐주얼 게임 시장의 마케팅 벤치마크, 사용자 획득 출처, 게임 플레이 트렌드 및 수익화 전략에 대한 포괄적인 보고서이다 [1, 2]. 이 보고서는 2024년 2월부터 2025년 2월까지 119억 달러의 마케팅 지출과 24억 건의 인스톨 데이터를 기반으로 작성되었다 [2-4]. 단순한 하이퍼 캐주얼 게임에서 벗어나 미드코어 요소가 결합된 하이브리드 캐주얼로의 진화와 새로운 인앱 결제(IAP) 및 광고 수익화 혁신을 조명하며, 성공적인 게임 경제 설계를 위한 핵심 지표와 인사이트를 제공한다 [1, 5, 6].
## 📖 Core Content
- **핵심 성과 지표(KPI) 및 벤치마크**: iOS의 30일 차(D30) ROAS(광고 수익률)는 평균 47%로 Android(15%)보다 월등히 높으며, 평균 인스톨당 비용(CPI) 역시 iOS가 $1.41, Android가 $0.14로 나타났다 [7-9]. 전반적인 클릭률(CTR)은 Android 9.4%, iOS 8.8%를 기록하여 폭넓은 호소력을 가진 하이퍼 캐주얼 게임에 힘입어 캐주얼 게임 장르가 높은 마케팅 성과를 주도하고 있다 [4, 9].
- **사용자 획득(UA) 경로의 다변화**: 캐주얼 게임 인스톨의 약 절반은 하이퍼 캐주얼 및 퍼즐 게임 광고에서 발생하여 장르 내 시너지가 크다 [10, 11]. 그러나 점차 모바일 게임 생태계 외부에서 새로운 오디언스를 찾는 경향이 증가하고 있으며, 게임 외 퍼블리셔에서 발생하는 인스톨의 절반 이상이 유틸리티/생산성 및 엔터테인먼트 앱에서 유입되고 있다 [12, 13].
- **게임 플레이 및 이벤트 트렌드 (Live-ops)**: 단순함을 넘어 미드코어 메커니즘을 결합한 하이브리드 코어 게임이 큰 성공을 거두고 있으며, 매치 3 게임과 하이브리드 퍼즐 장르가 지속적인 성장세를 보인다 [6, 14, 15]. 또한 플레이어 참여와 수익화를 높이기 위해 파트너 이벤트, 우산형 이벤트(Umbrella [[Events|Events]]), 미니게임, 연속 승리(Streak) 이벤트 등 다양한 라이브옵스 전략의 채택률이 높아지고 있다 [16-30].
- **수익화(Monetization) 모델의 혁신**: 개발자들은 플레이어 경험을 해치지 않으면서도 수익을 창출하는 하이브리드 수익화 모델을 고도화하고 있다 [31]. 게임 플레이를 방해하지 않는 '오디오 광고', 인게임 재화로 일정 시간 광고를 비활성화하는 '임시 광고 제거' 기능, 플레이어가 직접 구매할 아이템을 구성하여 전환율을 높이는 '맞춤형 IAP 번들', 그리고 한정 수량이나 실제 이벤트와 연계하여 FOMO(고립 공포감)를 자극하는 'Pick-one 번들' 등이 그 대표적인 혁신 사례이다 [32-40].
## 🔗 Knowledge Connections
- **Related Topics:** [[하이브리드 수익화(Hybrid Monetization)|하이브리드 수익화 (Hybrid Monetization]], 핵심 성과 지표 (CPI, ROAS, CTR), 라이브옵스 (Live-ops) 및 인게임 이벤트, 사용자 획득 (User Acquisition
- **Projects/Contexts:** Liftoff 및 Singular 데이터 분석 프로젝트, Monopoly GO!, Royal Match 등 상위 캐주얼 게임 사례
- **Contradictions/Notes:** 안드로이드 플랫폼은 iOS에 비해 인스톨당 비용(CPI)이 훨씬 낮고 1000회 노출당 인스톨(IPM)이 높지만, 30일 차 ROAS(광고 수익률)는 iOS가 안드로이드보다 2배 이상 높게 나타나는 명확한 플랫폼 간 수익성 대조가 존재합니다 [7-9, 41].
---
*Last updated: 2026-04-29*
+25
View File
@@ -0,0 +1,25 @@
---
id: P-REINFORCE-AUTO-D3F316
category: Business
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - 2026-04-15"
---
# [[2026-04-15|2026-04-15]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> 지식 요약 정보 추출 중...
## 📖 구조화된 지식 (Synthesized Content)
본문 구조화 작업 중...
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** General Knowledge 분야의 자동 자산화 수행.
## 🔗 지식 연결 (Graph)
- Raw Source: 00_Raw/2026-04-20/2026-04-15.md
---
@@ -0,0 +1,23 @@
# Engine Stability and Optimization (2026-04-21)
Skybound 엔진의 성능 저하 및 런타임 크래시 이슈에 대한 해결 및 방지 가이드입니다.
## 1. Issue: Effect Overload (이펙트 폭주)
- **증상**: 대폭발 시 수백 개의 파편(Shard) 객체가 화면에 잔존하여 프레임 드랍 발생.
- **해결책**:
- **Hard Cap**: 파편 최대 생성 개수를 500개로 제한.
- **Resource Recycling**: 파편의 수명 감소 속도를 6배 상향(0.1 -> 0.6)하여 자원 회수율 증대.
## 2. Issue: Rendering and API Type Mismatch
- **증상**: `undefined` 배열 순회 시 발생하는 런타임 에러.
- **해결책**:
- **Optional Chaining**: `GameRenderer.ts` 내 모든 엔티티 순회 로직에 `?.``|| []` 적용.
- **Interface Sync**: `WorldModel``items`, `expGems` 등 누락된 필드를 정식 등록하여 정적 분석 강화.
## 3. Lesson Learned (조직적 교훈)
- **Silo Warning**: 엔진 고도화 중 인터페이스 명세서를 동시에 업데이트하지 않을 경우, '느슨한 계약 관리'로 인해 대규모 런타임 에러가 발생할 수 있음.
- **Defensive Programming**: 외부 주입 데이터가 언제든 `undefined`일 수 있음을 가정하고 순회 로직을 작성해야 함.
---
**Status**: Resolved
**Context**: Infrastructure / Performance Tuning
@@ -0,0 +1,32 @@
# Skybound Implementation and Architecture Report (V10.5)
Skybound 프로젝트의 Phase 2 인프라 고도화 결과를 기록한 통합 보고서입니다.
## 1. Core Architecture (마스터 타임라인)
시스템은 시간의 흐름에 따라 긴장감을 제어하는 **4단계 페이즈 시스템**(`StageDirectorSystem`)을 채택하고 있습니다.
| 페이즈 | 시간 | 주요 특징 |
| :--- | :--- | :--- |
| **INTRO** | 0~3분 | 기초 파밍 및 적응 단계 |
| **ELITE_PRESS** | 3~7분 | 정예 기체 중심의 압박 |
| **SWARM** | 7~12분 | 대규모 물량 습격 (Survivor-like) |
| **FINAL_BOSS** | 12분~ | 최종 결전 시퀀스 |
## 2. Evo-Engine Mechanics (데이터 기반 진화)
데이터(Registry)와 로직(Engine)을 분리하여 확장성을 확보했습니다.
- **SKILL_REGISTRY**: 스킬 메타데이터 중앙 관리 허브.
- **Evolution Recipe**: 특정 주무기(Lv.5)와 보조 모듈의 조합을 통한 상위 티어 진화 공식 정의.
## 3. High-Dopamine Feedback System
유저의 시각적/촉각적 몰입을 극대화하기 위한 연출 가이드입니다.
- **Red Critical & Screen Shake**: 타격 시 텍스트 연출과 흔들림 이펙트.
- **Glitch Effect**: 진화 성공 시의 강렬한 연출.
## 4. Meta-Game Economy (순환 구조)
장비의 합성(`NORMAL` ~ `ETERNAL`)과 분해를 통한 자원 회수 루프를 구축하였습니다.
- **Triple Merge**: 동일 등급 3개 합성 방식.
- **Core Extraction**: S급 장비 분해를 통한 상위 제작 재화 확보.
---
**Status**: Approved (2026-04-21)
**Lead**: AI 개발부장 '코다리'
@@ -0,0 +1,26 @@
# Project Report V11.5: Combat and UI Recovery (2026-04-21)
Skybound 프로젝트의 치명적인 결함을 복구하고 유저 인터페이스를 고도화한 통합 개발 보고서입니다. 🟢 [NOMINAL]
## 1. Combat Engine Recovery (전투 엔진 복구)
현장 QA에서 발견된 핵심 결함들을 즉각 조치하였습니다.
- **Exp-Gems Drop**: 적 처치 시 경험치 보석이 드랍되지 않던 현상을 `CombatSystem.ts` 수정을 통해 해결.
- **Engine Synchronization**: 레벨업 UI에서의 선택 사항이 `useGameEngine.ts`에 즉시 반영되지 않던 채널 장애 복구.
- **Starter Loadout**: 초반 무기 부재 문제를 해결하기 위해 **'Gatling Gun Lv.1'**을 모든 기체에 기본 장착 사양으로 고정.
## 2. UI/UX Innovation (직관성 강화)
유저의 정보 인지 속도를 높이기 위한 시각적 개선 작업을 수행했습니다.
- **Terminology Standardization**: 스토리지의 모호한 약자(A, E)를 **Armor, Engine** 등 명확한 전문 용어로 전면 교체.
- **Acquisition Alerts**: 신규 모듈 획득 시 등급별 고유 색상(Tier-Colored)과 애니메이션이 포함된 알림 노출.
- **New Indicator**: 창고 내 미확인 아이템에 **'NEW'** 뱃지 및 발광(Glow) 효과 적용.
## 3. Infrastructure & Roadmap
- **Git Automation**: 작업 완료 즉시 커밋 및 푸시가 이행되는 자동화 파이프라인 구축.
- **Next Step**: 드론 병합(Merge) 및 아트 리소스 실장(Real-Asset Loading) 작업 예정.
---
**Status**: Critical Recovery Complete
**Reviewer**: AI 개발부장 '코다리' 🫡🐟
**Tags**: #Stability_QA #Dopamine_UX #Core_Logic
@@ -0,0 +1,24 @@
# UX and Dopamine Feedback Upgrade (V10.0)
단순한 발사 로직을 넘어, 유저에게 강렬한 피드백을 전달하기 위한 설계 사양입니다.
## 1. Probabilistic Critical Hit (슬롯머신 경험)
- **공식**: `damage *= 1.5 + Math.pow(Math.random(), 3) * 3.5`
- **심리적 효과**: Cubic Power를 사용하여 초고속 데미지가 극도로 희귀하게 발생하게 함으로써, 소위 '잭팟(Jackpot)' 효과 유도.
## 2. Visual Feedback Engine
타격의 세기에 따라 시각적 계층을 분리했습니다.
- **Normal**: 작은 흰색 숫자 출력.
- **Critical**: 대형 황금색 "CRITICAL!" 텍스트 및 `shadowBlur` 이펙트(부유 후 페이드아웃).
## 3. Difficulty Scaling Algorithm
플레이어가 지루함을 느끼지 않도록 시간이 지날수록 난이도를 복리로 상승시킵니다.
- **Factor**: `difficultyMult = 1.0 + (frame / 3600) * 0.1`
- **영향 범위**: 적 생성 쿨다운 감소, 적 HP 상승, 환경 장애물(Asteroids) 보정률 상승.
## 4. Policy: FALCON Streamlining
통계적 밸런싱의 용이성을 위해 현재 주력 기체를 `FALCON`으로 단일화하고 집중 케어합니다.
---
**Status**: Verified High-Dopamine Content
**Category**: Game Design / User Experience
@@ -0,0 +1,32 @@
# ⚡ Skybound: Stability & [[Optimization|Optimization]] Report (2026-04-21)
## 1. Executive Summary (요약)
대규모 교전 및 아이템 사용 시 발생하는 성능 저하와 런타임 크래시를 해결하기 위한 엔진 안정성 보강 작업을 수행하였습니다.
## 2. Key Optimization Areas (주요 최적화 영역)
### 💥 Particle Effect [[Management|Management]] (이펙트 제어)
- **Problem**: 폭탄 사용 시 수천 개의 파편(Shard) 객체가 생성되어 FPS 급락.
- **[[Solution|Solution]]**:
- **Hard Cap**: 최대 파티클 개수를 500개로 제한.
- **TTL (Time To Live) Acceleration**: 파티클 소멸 속도를 6배 상향(0.1 -> 0.6)하여 자원 회수 주기를 단축.
### 🛡️ Runtime [[Robustness|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**: Performance Tuning
**Status**: Verified by QA 🫡
@@ -0,0 +1,46 @@
# [TECH-REPORT] Skybound Boss Battle Architecture (v1.0)
**Date**: 2026-04-22
**Author**: Antigravity (Dev Lead)
**Status**: COMPLETED / STABLE
## 1. 개요 (Overview)
Skybound Protocol의 8단계 캠페인 시스템 완성을 위한 '데이터 주도형 보스 전투 시스템'의 구현 상세를 기록한다. 본 시스템은 하드코딩된 보스 로직을 탈피하고, 외부 레지스트리 기반의 페이즈 제어 및 플레이어 숙련도(Mastery)에 따른 최종 보스 분기 로직을 핵심으로 한다.
## 2. 주요 구현 사항 (Key Implementations)
### 2.1 기체별 데미지 감쇄 시스템 (Damage Mitigation)
- **목적**: 기체(Airframe)별 개성을 강화하고 생존 전략의 차별화 제공.
- **로직**: `CombatSystem.ts` 내 피격 판정 시 `GAME_BALANCE`의 감쇄율 적용.
- **수치**:
- **FALCON**: 탄환 -17% / 충돌 -34%
- **RAYCE**: 탄환 -13% / 충돌 -26%
### 2.2 보스 레지스트리 아키텍처 (Boss Registry)
- **파일**: `src/features/game/config/bossRegistry.ts`
- **역할**: 스테이지별 보스 데이터(이름, ID, 페이즈 구성, 패턴 밀도)의 Single Source of Truth.
- **특징**: `resolveNextPhase()` 유틸리티를 통해 HP 임계값, 부하 기체 전멸(`MINIONS_CLEARED`), 부품 파괴 등 다양한 조건에 따른 동적 페이즈 전환 지원.
### 2.3 최종 보스 분기 로직 (Mastery Branching)
- **위치**: `StageDirectorSystem.ts` -> `instantiateBoss()`
- **조건**: 인게임 모든 업그레이드(6종)가 **Level 10 (Mastery)**에 도달했는지 체크.
- **분기**:
- **Normal**: 험프티 덤프티 (Humpty Dumpty)
- **Mastery**: 디바인 램파트 (Divine Rampart) - 기본 체력 1.5배 증가 및 4단계 페이즈 구성.
## 3. 데이터 구조 (Data Structure)
```typescript
export interface BossPhase {
phaseIndex: number;
attackPatterns: Pattern[];
transformationTrigger: 'HP_THRESHOLD' | 'ALL_PARTS_DESTROYED' | 'MINIONS_CLEARED' | null;
hpThreshold: number | null;
}
```
## 4. 향후 유지보수 가이드 (Maintenance)
- **보스 추가**: `bossRegistry.ts``BOSS_REGISTRY` 배열에 신규 `BossDefinition`을 추가하는 것만으로 신규 보스 및 페이즈 설계 가능.
- **밸런스 조정**: `balance.ts``PLAYER.AIRFRAMES` 섹션에서 감쇄율 수치 즉시 조정 가능.
---
**Approval Status**: 🫡 (Kodari Approved)
@@ -0,0 +1,30 @@
# 📝 [Technical Report] 보스 스폰 시스템 안정화 및 AI 교전 로직 개선
## 1. 개요 (Overview)
본 문서는 Skybound 프로젝트의 최종 보스 미출현 이슈 해결 및 적기 AI의 공격성 강화를 위한 기술적 수정 사항을 기록합니다.
## 2. 적기 AI 개선 (Enemy AI Overhaul)
기존의 '낙엽 효과(Wobble)'와 '회피(Avoidance)' 로직을 제거하고 공격적 교전 패턴을 도입했습니다.
- **낙엽 효과 제거**: `CombatSystem``Math.sin` 기반 좌우 흔들림 로직 삭제.
- **회피 로직 삭제**: 플레이어 근접 시 발생하는 기피력(Repulsion) 제거.
- **예측 요격(Predictive Interception)**: 플레이어의 현재 속도($v_x, v_y$)를 기반으로 12프레임 뒤의 위치를 타격하는 로직 적용.
- **근접전 페널티**: 플레이어와 거리 250px 이내에서 연사력 2배 부스트 적용.
## 3. 보스 스폰 안정화 (Boss Spawn Fix)
트리거와 페이즈 전환 간의 동기화 오류를 해결했습니다.
- **트리거 선행 배치**: `CombatTimeline`의 보스 스폰 트리거를 페이즈 시작 10초 전으로 앞당김 (870s -> 860s).
- **시퀀스 가속**:
- `FINAL_BOSS` -> `BOSS_WARNING`: 180프레임 -> 60프레임 (1초)
- `BOSS_WARNING` -> `BOSS`: 300프레임 -> 120프레임 (2초)
- **응답성 개선**: 보스 경고 발생 후 실제 등장까지의 체감 대기 시간을 총 8초에서 3초로 단축.
## 4. 엔진 무결성 점검 (Integrity Check)
- `StageDirectorSystem.ts`의 코드 단절(Truncation) 여부를 확인하고 정상 작동을 검증함.
- `CombatSystem.ts`의 타입 안전성 확보 및 AI 역할별 이동 패턴 정상화 확인.
---
**Status**: Green (Operational)
**Author**: Antigravity (AI Dev Director 'Kodari')
**Date**: 2026-04-22
@@ -0,0 +1,39 @@
# ⚙️ Engine Logic Optimization & Modernization
**Category:** Architecture / Physics
**Status:** Completed (v12.1)
**Related:** Engine Loop, Boss Encounter Design
---
## 1. Tactical Logical Modernization
Skybound의 초기 '무작위성' 중심 로직을 '의도된 연출' 중심으로 전환한 핵심 최적화 내역입니다.
### 🛡️ Reactive Stat Sync (실시간 스탯 동기화)
- **메커니즘**: `useGameStore.subscribe`를 통해 장비 교체나 영구 업그레이드 발생 시, 엔진의 `effectiveStats`를 런타임에 즉시 재계산.
- **효과**: "인벤토리에서 공격력을 올렸는데 왜 바로 강해지지 않는가?"라는 모순을 해결.
### 🛰️ Priority-Based Spawning (우선순위 기반 스폰)
- **Logic**: 하드캡(`MAX_ENEMIES_HARD_CAP`) 도달 시, `ELITE` 이상의 등급은 일반 적(`NORMAL`)을 **강제 퇴거(Despawn)**시키고 자리를 확보함.
- **효과**: 물량에 밀려 보스가 등장하지 못하는 치명적인 결함 방지.
---
## 2. Combat Physics & HP Revamp
### 📏 100-Base HP System
- **구형**: 하트 5칸 기반의 단순 생명력 시스템 (회복 및 성장 가시성 낮음).
- **신규**: 100 기준의 체력 시스템으로 통합하여 퍼센트 단위 회복 및 영구 HP 업그레이드 반영이 가능하도록 구조화.
### 💥 Mutual Knockback (물리 충돌)
- 단순히 겹칠 때 대미지를 입는 방식에서 벗어나, 충돌 벡터(`vx`, `vy`)를 기반으로 서로 밀려나는 물리 작용 구현.
- **타격감**: 기체 간 충돌 시의 '묵직함' 확보.
---
## 3. Engagement Compression
- **Blitz Mode**: 보스 출현 시간을 **60초**로 단축하여 파밍 효율 극대화.
- **Standard Mode**: 보스 조우 타임라인을 **2분**으로 압축하여 검증 및 플레이 텐션 강화.
---
**Last Updated:** 2026-04-22 🫡
@@ -0,0 +1,38 @@
# 🔍 Skybound 엔진 구조 정밀 감사 보고서 (V12.1)
> **카테고리**: Skybound, Software Reliability, Governance & Reliability
> **상태**: ✅ 감사 완료 (Audited)
> **최종 업데이트**: 2026-04-22
---
## 📌 개요 (Overview)
엔진 안정성에 대한 의구심(코드 잘림, 상태 단절 등)이 제기됨에 따라, 전체 시스템 파이프라인(ECS-like Update, Zustand Sync, Progression Flow)을 전수 조사하여 아키텍처적 건전성을 검증함.
## 📊 감사 요약 (Audit Summary)
| 이슈 항목 | 실제 상태 | 심각도 | 판정 결과 |
| :--- | :--- | :--- | :--- |
| **#1 Engine Execution Gap** | **정상**`ctx` 객체 완전 구성됨 | 🟢 Low | 단순 파일 읽기 초과로 인한 오판 |
| **#2 State-Physics Disconnect** | **정상**`setExp/setLevel` 액션 완결 | 🟢 Low | 15프레임 Dirty Checking 동기화 확인 |
| **#3 Gimmick Manager 빈 껍데기** | **부분 유효** — 구현 완료, 타입 불일치 1건 | 🟡 Med | `spawnParticle` 인자 불일치 수정 완료 |
| **#4 Collision-to-EXP 미연결** | **정상** — Combat → Progression 연결됨 | 🟢 Low | Gem 수집부터 카드 생성까지 연결 확인 |
## 🛠️ 정밀 분석 (Detailed Analysis)
### 1. 엔진 컨텍스트 (`ctx`) 및 루프 구조
- **Context Integrity**: `useGameEngine.ts` 내에서 플레이어, 상태, 입력, 엔티티 매니저 및 각종 스폰 함수가 `ctx` 객체에 완전히 맵핑되어 각 시스템에 전달되고 있음.
- **Loop Flow**: `StageDirector``System Logic``Combat/Progression``Renderer` 순의 고전적 ECS 파이프라인이 매 프레임(60FPS) 정상 작동함.
### 2. 상태 관리 브릿지 (Store Sync)
- **Zustand Interface**: 엔진 내부 상태(`state.currentExp` 등)와 외부 UI 스토어(`useGameStore`) 간의 데이터 동기화는 `useGameEngine.ts`에서 15프레임마다 수행되는 브릿지 로직을 통해 효율적으로 관리됨 (불필요한 React Re-render 방지).
### 3. 실제 수정 사항 (Bug Fix)
- **GravityGimmick.ts**: `ctx.spawnParticle` 호출 시 엔진 시그니처와 불일치하는 5번째 인자(`'DIR'`)가 전달되는 문제를 식별하여 제거함. 이는 시스템 오류를 유발하지는 않으나 타입 정결성을 위해 조치됨.
## 📋 최종 결론
Skybound 엔진은 **구조적으로 건강하며, 모든 핵심 파이프라인이 완전히 구현된 상태**임. 향후 확장을 위한 아키텍처적 기반(Intent Protocol, Signal Pattern)이 견고하게 구축되어 있음을 확인함.
---
**승인인**: AI 개발부장 코다리 🫡
**관련 문서**: 02_Architecture_Principles, [[Visual_Feedback_Signal_Pattern|Visual_Feedback_Signal_Pattern]]
@@ -0,0 +1,34 @@
# ISSUE REPORT: [v13.1] Engine Stabilization & Tactical Boundary Overhaul
## 1. 개요
Skybound 엔진의 초기 구동 안정성을 확보하고, 게임의 장르적 성향(전략 슈터)을 강화하기 위한 적기 이동 로직 및 레벨업 시스템의 결함을 해결함.
## 2. 해결된 결함 (Level-Up Loop)
### 2.1 현상
- 게임 시작 직후 `TAC LEVEL UP` 모달이 무한 반복 출력되어 조작 불능 상태 발생.
- 엔진 내부 레벨과 Zustand 스토어 레벨 간의 동기화 불일치.
### 2.2 원인 분석
- `StageDirectorSystem`: 타임라인 이벤트가 최소 시간 가드 없이 초기화 시점에 조기 발동.
- `ProgressionSystem`: 스킬 선택 시 Zustand 구독과 엔진 로직 양쪽에서 레벨을 이중 증가시킴.
### 2.3 수정 사항
- **StageDirectorSystem**: 15초/30초 최소 시간 가드 및 `processed[[Events|Events]]econds` 중복 발동 방지 락 도입.
- **ProgressionSystem**: 이중 증가 로직 제거 및 Zustand [[Single_Source_of_Truth|Single Source of Truth]](SSOT) 강화.
- **UI**: `LevelUpModal``isChest` 플래그를 추가하여 일반 레벨업과 보급품(Supply Drop) 보상을 시각적으로 분리.
## 3. 기능 개선 (Enemy Tactical Boundary)
### 3.1 현상
- 적기가 격파되지 않은 상태에서 화면 하단으로 유유히 사라짐 (전통적 슈팅 게임 방식).
- 플레이어의 전략적 대응 영역 및 경험치 수급 기회 상실.
### 3.2 수정 사항 (CombatSystem)
- **Boundary Clamp**: 적기의 이동 허용 범위를 `height + 300`에서 `height - 40`으로 타이트하게 조정.
- **Chase Pattern**: 플레이어 추격 시 화면 하단 경계를 인식하도록 가드 추가.
- **Zigzag Pattern**: 화면 하단 도달 시 방향을 반전시키는 '핑퐁(Ping-pong)' 패턴으로 업그레이드.
- **Striker AI**: 하단 돌진 후 상단으로 복귀하는 순찰 로직 추가.
## 4. 기대 효과
- **안정성**: 게임 초기화 및 재개 시 발생하는 상태 데드락 원천 차단.
- **전략성**: 모든 적이 화면 내에 유지됨으로써 플레이어의 통제권 강화 및 생존 슈터로서의 긴장감 극대화.
- **경제**: 경험치 젬 및 루트 아이템의 화면 밖 유실 방지.
@@ -0,0 +1,34 @@
# POST-MORTEM: Skybound Meta-Game Stabilization & Loot Economy Overhaul (2026-04-23)
## 1. 프로젝트 개요
보스전 이후 스테이지 전이가 멈추는 치명적 버그를 해결하고, 기획안에 맞춘 전리품(Loot) 경제 밸런스 재조정 및 보급품 시스템의 논리적 결함을 수정한 포스트모텀.
## 2. 주요 해결 과제 및 분석 (Key Issues)
### 2.1 보스 처치 후 진행 불가 (Stage Progression Stall)
- **현상**: 보스를 처치하고 폭발 연출까지 완료되었으나, 다음 스테이지로 넘어가지 않고 화면에 갇히는 현상.
- **원인**: `StageDirectorSystem`에서 보스 사망 시 `NEXT_STAGE` 이벤트를 발행했으나, 엔진의 메인 루프(`useGameEngine`)에 해당 이벤트를 수신하여 UI/상태를 전환하는 핸들러가 누락되어 있었음.
- **해결**: `useGameEngine.ts``emitEvent` 리스너에 `BOSS_ACTION: NEXT_STAGE` 케이스를 추가하고, `finishMission('CLEAR', ...)`을 호출하도록 연결.
### 2.2 전리품 드롭 확률 불균형 (Loot Economy Inflation)
- **현상**: 보스 처치 시 무조건 S급 아이템이 나오거나, 일반 적들의 드롭률이 너무 높아 아이템 희소성이 결여됨.
- **원인**: `LootGenerator.ts` 내부에 하드코딩된 확률 임계값이 초기 테스트용으로 과하게 설정되어 있었음.
- **해결**: 대표님 제시안에 맞춰 보스 드롭률을 **67%**로 제한하고, 등급별 확률(S: 5%, Epic: 1% 등)을 정밀 재조정함. 엘리트 및 일반 적의 드롭률도 대폭 하향하여 파밍의 재미를 강화.
### 2.3 보급 상자 '가짜 업그레이드' (Phantom Upgrades)
- **현상**: 보급 상자(Chest)를 통해 무기를 골라도 실제 무기 레벨이 오르지 않아, 겉모습만 레벨업인 상태(레벨 3에서 무한 업그레이드 느낌)가 지속됨.
- **원인**: UI(`GameSceneRenderer`)에서 `isChest` 플래그가 활성화된 경우, "레벨업이 아니므로 스킬을 적용하지 않는다"는 잘못된 방어 로직이 적용되어 있었음.
- **해결**: `isChest` 유무와 관계없이 선택된 스킬을 엔진과 스토어에 적용(`addSkill`, `applySkill`)하도록 수정하여 보급 상자의 실질적 효용성 확보.
## 3. 잘된 점 (What Went Well)
- **신속한 원인 파악**: 엔진 이벤트 루프와 UI 상태 간의 단절 지점을 정확히 찾아내어 최소한의 코드 수정으로 버그 해결.
- **기획 충실도**: 텍스트로 전달된 복잡한 확률 테이블을 엔진 코드에 오차 없이 반영.
- **동기화 성공**: 엔진 내부 상태와 Zustand 글로벌 스토어 간의 싱크를 맞춰 '가짜 업그레이드' 현상을 원천 해결.
## 4. 교훈 및 향후 과제 ([[Lessons Learned|Lessons Learned]] & Next Steps)
- **이벤트-리스너 쌍 검증**: 새로운 시스템 이벤트를 정의할 때 반드시 수신 측(Listener)이 구현되었는지 체크리스트화 필요.
- **UI/엔진 역할 분담**: `isChest`와 같은 상태 플래그가 비즈니스 로직(스킬 적용)까지 차단하지 않도록 설계 시 주의.
- **모니터링 강화**: 현재 확률에 따른 드롭 현황을 로깅하여 장기적인 밸런싱 데이터 확보 예정.
## 5. 결론
이번 안정화 작업을 통해 Skybound의 **'전술적 긴장감'**과 **'성장 루프'**가 정상 궤도에 진입함. 보스전 - 보급 - 스테이지 전환으로 이어지는 핵심 게임 루프의 기술적 무결성 확인 완료. 🫡🐟
@@ -0,0 +1,125 @@
# Skybound Code Structure Audit and Stabilization Plan
**Date**: 2026-04-24
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Raw analysis logged before implementation
## 1. Overview
This document records the first code-level audit after reviewing Skybound-related wiki documents. The goal was to compare the documented architecture with the actual code path in `/Volumes/Data/project/Antigravity/Skybound`, identify design and feature risks, and define the first stabilization pass.
## 2. Documents Reviewed
- `Topics/Skybound/Skybound-Knowledge-Hub.md`
- `Topics/Skybound/01_Core_Engine/Skybound-Modular-Game-Architecture.md`
- `Topics/Skybound/01_Core_Engine/Game-Engine-Loop-and-System-Orchestration.md`
- `Topics/Skybound/05_Project_Issues/2026-04-22_Engine_Stability_Audit.md`
- `Topics/Skybound/02_Combat_AI/Combat-System-and-Bullet-Interaction-Pipeline.md`
- `Topics/Skybound/04_Mechanics_Progression/Campaign_and_Dual_Loop_System.md`
- `Topics/Skybound/04_Mechanics_Progression/InGame_Progression_System.md`
- `Technical_Reports/2026-04-22_Boss_Battle_System_Implementation.md`
## 3. Code Structure Observations
Skybound's actual runtime center is `src/features/game/hooks/useGameEngine.ts`. It directly instantiates and updates `EntityManager`, `StageDirectorSystem`, `SpawnerSystem`, `CombatSystem`, `ProgressionSystem`, `ModularWeaponSystem`, `TacticalSystem`, `HazardSystem`, `BossSystem`, `EffectSystem`, and `GameRenderer`.
`SystemManager.ts` exists and documents a centralized orchestration pattern, but the active engine path does not use it. This is not inherently broken, but it creates a mismatch between the documented orchestrator and the actual execution path.
React is primarily responsible for scene composition and modal/UI handling through `GameSceneRenderer.tsx`, while Zustand state is centralized in `useGameStore.ts`.
## 4. Confirmed Problems
### 4.1 Build Gate Is Broken
`npm run build` fails. Representative causes:
- `App.tsx` imports `useGameEngine` but does not use it.
- Legacy `src/features/game/combatSystem.ts` is still included in TypeScript compilation and has type drift against current domain models.
- `useSceneAudio.ts` does not include `HANGAR` in `SCENE_AUDIO`, despite `Scene` including `HANGAR`.
- `SystemBoss.phase` is typed as `1 | 2 | 3`, while `bossRegistry.ts` contains a 4-phase boss.
- `GameRenderer.ts` calls `CanvasRenderingContext2D.close()`, which should be `closePath()`.
- `EntityManager` initializes enemies with `movePattern: 'NONE'`, which is not part of the current `Enemy.movePattern` union.
### 4.2 Timeline Spawn Intents Are Not Wired
`StageDirectorSystem` dispatches `SCRIPTED_SPAWN` and `SPAWN_MODE` intents, but `useGameEngine.ts` does not route those intents to `SpawnerSystem`.
`SpawnerSystem` already provides `notifyScriptedSpawn()` and `activateSwarmBurst()`, so the design exists but the active dispatch wiring is missing.
Expected impact: scripted waves and burst events may not appear as designed, leaving procedural spawning to carry too much of the combat pacing.
### 4.3 Campaign Stage State Is Not a Single Source of Truth
`StageDirectorSystem` receives `campaignStageIndex` when created, but `GameState.currentStage` still defaults to `1` and is not initialized from the selected campaign stage.
Expected impact: Standard campaign can show stage progression in UI while the engine continues to evaluate boss selection, damage curves, backgrounds, rewards, and tech-part rolls as Stage 1.
### 4.4 StageManager Mode Can Drift from Store Mode
`StageManager` has its own internal `mode`, defaulting to `BLITZ`. The UI updates Zustand `stageMode`, but `stageManager.setMode()` is not called from the store action.
Expected impact: Standard campaign clear can call `stageManager.onStageClear()` while the singleton still believes it is in Blitz mode, preventing next-stage campaign progression.
### 4.5 COMMS Events Are Not Rendered
`COMMS` events are emitted by engine systems, and `CommsOverlay.tsx` exists, but `useGameEngine.ts` does not map `COMMS` events to `useGameStore.setComms()`. `CommsOverlay` is also not rendered by `App.tsx`.
Expected impact: mission dialogue, warning text, and tactical pacing messages are silently dropped.
### 4.6 Starter Weapon Timer Is Not Cleaned Up
`useGameEngine.ts` starts a `setTimeout()` for starter weapon selection, but cleanup does not clear the timer.
Expected impact: if the engine unmounts quickly, a stale timer can emit a level-up modal or pause signal from an old engine instance.
### 4.7 Skill Sync Boundary Is Fragile
`GameSceneRenderer.tsx` calls store `addSkill()` and then engine `applySkill()`. `ProgressionSystem.applySkillSelection()` says Zustand owns skill increments, but also mutates `state.skills` as a fallback.
Expected impact: this usually works because of the store subscription bridge, but the ownership boundary is not clean and may cause missed or inconsistent skill levels under timing stress.
## 5. Stabilization Plan
Priority order:
1. Restore TypeScript build by removing obvious compile blockers and isolating legacy drift.
2. Wire `SCRIPTED_SPAWN` and `SPAWN_MODE` intents from `StageDirectorSystem` into `SpawnerSystem`.
3. Initialize engine `currentStage` from `stageMode` and `campaignStageIndex`.
4. Keep `StageManager` mode synchronized with Zustand `stageMode`.
5. Route `COMMS` events into the store and render `CommsOverlay`.
6. Clear the starter weapon timer during engine cleanup.
## 6. Verification Targets
- `npm run build`
- `npm run lint` as a visibility check, with the expectation that broad historical lint debt may remain after the first stabilization pass.
## 7. Implementation Result
The first stabilization pass was applied immediately after this raw audit.
### 7.1 Build Recovery
- Removed an unused `useGameEngine` import from `App.tsx`.
- Added `HANGAR` to `SCENE_AUDIO` in `useSceneAudio.ts`.
- Excluded legacy `src/features/game/combatSystem.ts` from `tsconfig.app.json` because the active runtime path uses `src/features/game/systems/CombatSystem.ts`.
- Expanded boss phase typing from `1 | 2 | 3` to `number` so 4-phase registry bosses are valid.
- Fixed `EntityManager` default enemy `movePattern` from invalid `NONE` to `SIDE_TO_SIDE`.
- Fixed `CanvasRenderingContext2D.close()` to `closePath()`.
- Removed compile-blocking unused locals from active systems.
### 7.2 Runtime Wiring Recovery
- `SCRIPTED_SPAWN` intents now call `SpawnerSystem.notifyScriptedSpawn()`.
- `SPAWN_MODE` intents now activate `SWARM_BURST` or enqueue `MINI_BOSS` spawns.
- Engine `currentStage` now initializes from `campaignStageIndex + 1` in Standard mode.
- Zustand `setStageMode()` now synchronizes the `StageManager` singleton mode.
- `COMMS` engine events now populate `useGameStore.activeComms`.
- `CommsOverlay` is rendered while playing.
- Starter weapon selection timer is cleared during engine cleanup.
### 7.3 Verification Result
- `npm run build`: passed.
- `npm run lint`: still fails due broad pre-existing lint debt, mostly `@typescript-eslint/no-explicit-any`, older helper files, and React hook lint findings. The first pass reduced the functional blockers but did not attempt a large-scale type cleanup.
@@ -0,0 +1,149 @@
# Skybound Final Stylized Casual Magitech Redirection
**Date**: 2026-04-24
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Raw art direction correction after final concept change
## 1. Reason for Redirection
The previous pass moved Skybound toward **Semirealistic Magitech Fantasy**, but the latest direction returns the project to a clearer and more immediately readable mobile-survival style.
The new target is **Stylized Casual Magitech** for a top-down survival shooter inspired by Survivor.io.
This direction prioritizes:
- maximum in-game visibility
- bold silhouettes
- thick readable outlines
- flat lighting
- vivid magical accents
- consistent UI language from intro to mission result
## 2. Core Concept
Skybound should feel like a polished casual magitech action game rather than a dark semirealistic fantasy title.
Primary gameplay readability goals:
- player vehicle must be instantly identifiable
- enemies must remain readable in dense hordes
- pickups and weapon icons must be recognizable at small sizes
- background grid must support movement clarity without competing with combat
- every exposed screen should share the same playful magitech frame language
## 3. Tone and Manner
### Stylized Casual Magitech
Visual language:
- bold navy outlines
- clean top-down silhouettes
- flat color blocks
- minimal material noise
- bright arcane cyan
- gold/orange mechanical accents
- purple and pink enemy/corruption accents
- chunky UI frames
- high contrast buttons and progress bars
Avoid:
- gritty brushed metal
- heavy realistic shadows
- low-contrast dark UI
- thin semireal linework
- noisy texture detail
- external non-project image dependencies
## 4. Palette
Base colors:
- deep navy outline
- saturated royal blue panels
- readable sapphire floor tiles
- bright brass and gold trim
Magic accents:
- arcane cyan for player and positive energy
- crystal white-blue for highlights
- vivid purple for advanced magic
- hot pink for danger and enemy cores
- mint green for healing and positive pickups
- orange/gold for calls to action
## 5. Screen Coverage
The exposed user-facing screens were reviewed and targeted by the final theme pass:
- Intro title screen
- Airframe select screen
- Hangar / upgrade overlay
- In-game HUD
- Quick start overlay
- Tutorial overlay
- Comms overlay
- Level up modal
- Mission success / failed / complete result screen
## 6. Asset Coverage
The procedural asset generator now outputs the final Stylized Casual Magitech library while preserving runtime file paths.
Generated categories:
- Magitech player airframes
- normal enemies
- elite enemies
- bosses
- modular stage tiles
- title and result local backdrops
- item drop sprite sheet
- turret sheet
- weapon and skill icons
- projectiles
- shield and currency icons
- muzzle flash, impact, explosion, and laser VFX
- commander and pilot portraits
- contact sheet preview
## 7. Implementation Notes
The generator was redirected away from semirealistic material rendering and toward flat, readable shapes.
Main implementation choices:
- palette updated to bright casual magitech colors
- default shape helpers now draw bold navy outlines
- material texture strength reduced to keep assets flat
- background tiles use readable grid blocks and low-competition arcane circuitry
- local title and result background images were generated
- title and result screens no longer depend on external Google image URLs
- global magitech CSS override was rewritten for the final casual tone
## 8. Changed Runtime Paths
Important changed or generated paths:
- `/Volumes/Data/project/Antigravity/Skybound/scripts/generate_magitech_assets.py`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/styles/magitechArt.css`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/TitleScreen.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/ResultCard.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/magitech_art_contact_sheet.png`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/background/title_magitech.png`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/background/result_magitech.png`
## 9. Verification
Asset generation completed successfully.
Production build completed successfully with:
```bash
npm run build
```
The build still reports that `/sprites/player.png` is left unresolved at build time, which is a Vite static asset warning and was already non-blocking. The production bundle was generated successfully.
@@ -0,0 +1,74 @@
# Skybound HUD and TAC Level Up Stylized Casual Magitech Fix
**Date**: 2026-04-24
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Raw follow-up fix from gameplay HUD screenshot review
## 1. Screenshot Issues
The reviewed gameplay screenshots showed that the HUD and TAC Level Up modal still leaned heavily into the previous cyber-terminal style.
Observed issues:
- side HUD panels used thin cyan lines and transparent glass styling
- top TAC level widget looked like a cold terminal module
- control buttons were dark monochrome blocks
- TAC Level Up modal used glitch text and blue terminal cards
- skill cards did not share the bold casual magitech frame language
## 2. Cause
The global `magitechArt.css` provided the broad art direction, but component-level CSS files still applied later or more specific styles.
Main affected files:
- `HUDOverlay.css`
- `LevelUpModal.css`
These files preserved the original Stitch/cyber UI look and overrode parts of the new tone.
## 3. Fixes Applied
### HUD
HUD styling was redirected to Stylized Casual Magitech:
- chunky navy outlines
- rounded blue magitech panels
- gold active highlights
- mint/cyan resource bars
- less transparent glass
- stronger mobile-game button affordance
- side modules grouped into readable cards
- top TAC level widget converted to a framed casual panel
### TAC Level Up Modal
The level-up modal was restyled:
- removed glitch pseudo text
- removed aggressive terminal skew animation
- converted the modal into a rounded blue magitech reward panel
- added thick dark outline and drop-shadow depth
- changed skill cards to chunky selectable cards
- changed icon boxes to framed magitech sockets
- converted level dots into brighter readable pips
- kept EVO cards gold/orange for special hierarchy
## 4. Changed Runtime Paths
Important changed paths:
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/HUDOverlay.css`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.css`
## 5. Verification
Production build completed successfully with:
```bash
npm run build
```
The existing `/sprites/player.png` static path warning remains non-blocking.
@@ -0,0 +1,83 @@
# Skybound Nova Burst Icon and Effect Fix
**Date**: 2026-04-24
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Raw follow-up fix for skill-specific visual mismatch
## 1. Screenshot Issue
`Nova Burst` looked like a lemon-shaped projectile icon.
This did not match the actual skill behavior.
## 2. Skill Meaning
`Nova Burst` is not a missile, crystal shard, or thrown projectile.
Actual gameplay behavior:
- automatic radial AoE shockwave
- triggers around the player
- damages enemies inside the radius
- knocks enemies outward
- cooldown-based burst every few seconds
- evolves into `Nova Guardian`, which adds stronger golden guardian behavior
## 3. Art Direction Correction
The icon should communicate:
- central arcane core
- circular shockwave expansion
- radial force
- rune-like magitech energy
- area control around the player
It should not communicate:
- lemon
- fruit
- single projectile
- gem pickup
- missile tip
## 4. Fixes Applied
The procedural generator now creates `Nova Burst.png` with a dedicated `nova` icon shape.
New visual structure:
- cyan circular shockwave rings
- central navy magitech core
- arcane core light
- radial spokes showing outward force
- subtle purple secondary energy ring
The in-game Nova Burst renderer was also adjusted:
- center sprite is smaller and treated as a rune core
- expanding shockwave ring is now the main visual read
- added translucent pressure disk
- added segmented rune ring
- kept Guardian variant as gold/orange
## 5. Changed Runtime Paths
Important changed paths:
- `/Volumes/Data/project/Antigravity/Skybound/scripts/generate_magitech_assets.py`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/missiles/Nova Burst.png`
## 6. Verification
Asset generation completed successfully.
Production build completed successfully with:
```bash
npm run build
```
The existing `/sprites/player.png` static asset warning remains non-blocking.
@@ -0,0 +1,74 @@
# Skybound Particle and Supply Readability Fix
**Date**: 2026-04-24
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Raw follow-up fix from gameplay screenshot review
## 1. Screenshot Issues
The reviewed screenshot exposed two readability problems.
Observed issues:
- Mint/cyan square particles were scattered across the floor and looked like items even though they could not be collected.
- The supply crate asset looked good, but it was not clear whether it was a player pickup or an enemy projectile/debris object.
## 2. Cause
### Mint Floor Squares
The mint squares were runtime particles from `EffectSystem`.
They were rendered in `GameRenderer.renderEffects()` using `fillRect()`, so every spark appeared as a small collectible-looking square.
These particles can come from combat hits, skill effects, EMP interactions, exp pickup feedback, or other short-lived feedback systems.
### Supply Ambiguity
The supply crate sprite itself was readable as an object, but the gameplay affordance was weak.
It needed explicit pickup language:
- pickup color
- capture ring
- directional marker
- short label
## 3. Fixes Applied
### Particle Shape
Runtime particles now render as small rotated diamond sparks instead of square floor blocks.
This keeps the magical spark feedback while reducing item confusion.
Normal shard fragments were also changed from square blocks to triangular fragments.
### Supply Pickup Readability
Supply drops now render with:
- mint-green dashed pickup ring
- soft pickup fill
- bobbing downward arrow
- retained supply crate sprite
- `PICK UP` label
This separates supply drops from enemy bullets, hazards, and cosmetic particles.
## 4. Changed Runtime Paths
Important changed path:
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts`
## 5. Verification
Production build completed successfully with:
```bash
npm run build
```
The existing `/sprites/player.png` static path warning remains non-blocking.
@@ -0,0 +1,141 @@
# Skybound Semirealistic Magitech Fantasy Redirection
**Date**: 2026-04-24
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Raw art direction correction before second asset pass
## 1. Reason for Redirection
The first generated art pack leaned too far into childish cartoon readability: thick outlines, flat toy-like shapes, and simplified symbolic silhouettes.
The new target is **Semirealistic Magitech Fantasy** for a top-down horde survival-shmup inspired by Survivor.io, aimed at players aged 12-18 and casual adults.
## 2. Core Concept
The visual library should feel detailed, grounded, and cool rather than cute.
Primary references by feel:
- League of Legends-like readable fantasy detail
- Warhammer-like dark material weight
- Survivor.io-like top-down clarity and grid readability
This is still a game with high enemy density, so readability remains critical, but contrast should come from lighting, value, and energy color rather than thick black outlines.
## 3. Tone and Manner
### Semirealistic Magitech
Visual language:
- dark iron
- aged brass
- brushed metal
- weathered stone
- glowing crystals
- engraved runes
- arcane circuitry
- controlled deep shadows
- focused magical highlights
Avoid:
- childish cartoon shapes
- toy-like flat icons
- heavy black outlines
- overly bright candy palettes
- large simplified emblem-only designs
## 4. Palette
Base colors:
- dark sapphire
- dark iron
- forest green
- weathered brass
- basalt gray
- deep crimson
Magic accents:
- arcane blue for player energy
- neon purple for corruption
- plasma red for enemy/boss danger
- molten orange for forge/lava accents
## 5. Asset Rules
### Player Vehicle
The player vehicle should read as a Magitech airship rather than a simple airplane.
Required traits:
- complex symmetrical or slightly asymmetrical hull
- dark iron and brass material mix
- intense crystalline power core
- smaller gun turrets
- visible engine components, gears, vents, and rune plates
- subtle energy glow readable from top-down view
### Enemies
Enemies should be threatening corrupted creatures or ancient mechanical horrors.
Examples:
- clockwork spiders with poison sacks
- rune golems made of dark stone
- corrupted winged drakes
- ancient mechanical horrors with plasma-red cores
### Background
Background should preserve Survivor.io-style grid readability but feel like an immersive fantasy environment.
Target environments:
- ancient overgrown Magitech city ruin
- subterranean magma forge
Rules:
- weathered stone pavement
- broken magitech circuitry embedded in the floor
- basalt structures
- subtle lava or arcane channels
- background contrast lower than enemies and player
### Effects
Player effects should be arcane blue or crystal cyan.
Enemy effects should lean plasma red, purple, or corrupted crimson.
Death effects should be optimized and satisfying:
- scrap metal shards
- dark crystal fragments
- arcane dust
- controlled flashes, not full-screen clutter
### UI
UI should use Survivor.io-like directness with a refined dark iron and crystal shell.
Required traits:
- heavy dark iron frames
- crystal level bar
- rune and gear details
- minimal but detailed HUD
- clean modern gothic / steampunk-inspired readability
## 6. Implementation Notes
The next pass should replace the first cartoony art pack with a darker semirealistic procedural raster set while preserving runtime file paths.
The existing generator should be rewritten so future iterations can adjust palette, materials, and silhouettes consistently.
@@ -0,0 +1,153 @@
# Skybound Semirealistic Magitech Fantasy Art Pack
**Date**: 2026-04-24
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Superseded by semirealistic second pass
## 1. Direction
Skybound's 2D visual identity was first redirected toward **Stylized Casual Magitech**, then corrected into **Semirealistic Magitech Fantasy** after visual review.
The corrected target tone is a top-down survival shooter inspired by clear mobile action readability, but with more mature fantasy material treatment:
- reduced outlines
- dark iron and brass material language
- controlled lighting
- glowing crystalline cores
- corrupted magical enemies
- ancient magitech ruin backgrounds
- high contrast at small gameplay sizes
- color-coded enemy and weapon readability
- playful magitech forms instead of realistic military hardware
## 2. Core Art Rules
### Silhouette
Every gameplay object must remain readable at 36-72px on canvas.
- Player vehicles use triangular forward-facing silhouettes.
- Normal enemies use compact diamond/bug-like silhouettes.
- Elite enemies use wider, more decorated silhouettes.
- Bosses use tall central hulls with visible side modules and glowing cores.
- Weapons and drops use symbolic icons instead of detailed illustrations.
### Linework
Use value contrast and glow separation instead of heavy cartoon outlines.
Purpose:
- separates sprites from busy scrolling backgrounds through lighting
- keeps bullets, drops, and enemies visible during VFX-heavy combat
- supports a grounded semirealistic style
### Lighting
Lighting is controlled and directional. Avoid noisy photorealism, but use subtle brushed metal, stone, and crystal texture.
Allowed:
- small inner highlights
- soft magical glow behind important objects
- subtle bevels
- material grain
- controlled shadow
Avoid:
- toy-like flat panels
- low-contrast smoke
- tiny greeble details
### Palette
Corrected palette:
- Void: `#080a12`
- Dark iron: `#1c2029`
- Aged brass: `#a57a37`
- Dark sapphire: `#102a52`
- Forest green: `#164535`
- Crimson: `#671a20`
- Arcane blue: `#36cdff`
- Neon purple: `#b03eff`
- Plasma red: `#ff4149`
- Molten orange: `#ff7a21`
## 3. Generated Asset Coverage
The following runtime assets were regenerated in-place under `public/sprites`:
- player airframes: `Falcon.png`, `rayce.png`
- charge shot: `chargeshot.png`
- normal enemies: `normal_enemy/enemy01.png` through `enemy09.png`
- elite enemies: `elite_enemy/elite01.png` through `elite16.png`
- bosses: `boss/tile000.png` through `tile010.png`
- turret atlas: `turret/turret_sprites.png`
- item drops: `item_drops_sprite.png`
- stage backgrounds: `background/stage_tile_1.png` through `stage_tile_8.png`
- weapon and skill icons under `sprites/missiles`
- core bullet, shield, currency, VFX sprites
- comms portraits: `portraits/hq_commander.png`, `portraits/pilot_standard.png`
## 4. UI Skin Coverage
The UI skin was added through:
- `src/features/game/styles/magitechArt.css`
- imported from `src/App.css`
The skin aligns:
- HUD panels
- level-up cards
- comms overlay
- hangar/action buttons
- warning text
- canvas saturation/contrast
## 5. Generator
The art pack is reproducible through:
`scripts/generate_magitech_assets.py`
This script uses the bundled Python runtime with Pillow and generates vector-like raster PNGs. It intentionally avoids relying on one-off manual image files so future palette or silhouette changes can be regenerated consistently.
## 6. Preview Sheet
Generated preview sheet:
`public/sprites/magitech_art_contact_sheet.png`
The preview sheet is for art review only and is not currently consumed by the game runtime.
## 7. Follow-up Art Tasks
Recommended next art pass:
1. Add animation frame variants for normal and elite enemies.
2. Split skill icons into a formal UI icon atlas instead of relying on individual PNGs.
3. Add boss-specific silhouettes matching the narrative names in `bossRegistry.ts`.
4. Add projectile color language documentation for player, enemy, boss, and gimmick bullets.
5. Replace remaining CSS vocabulary from older cyber-neon UI with magitech naming over time.
## 8. Second Pass Correction
After user review, the first art pack was judged too childish/cartoon-like. The generator and UI skin were rewritten.
Second pass changes:
- removed thick outlines
- added brushed metal / stone noise
- added stronger shadows and glow-based separation
- changed vehicles into darker magitech airships
- changed enemies into corrupted mechanical/stone silhouettes
- changed backgrounds into darker stone grid ruins with broken circuitry
- changed UI from bright toy-card framing to dark iron/crystal framing
The reproducible generator remains:
`scripts/generate_magitech_assets.py`
@@ -0,0 +1,102 @@
# Skybound Stylized Casual Magitech Ingame Asset Fix
**Date**: 2026-04-24
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Raw follow-up fix from gameplay screenshot review
## 1. Screenshot Issues
The reviewed screenshots exposed three in-game visual problems.
Observed issues:
- `SUPPLY` air drop was rendered as a simple cyan ring and text label instead of a proper magitech supply crate.
- Enemy sprites showed a faint rectangular transparency box around the aircraft body.
- Large falling translucent circular hazards were rendered as plain gray circles and did not match the Stylized Casual Magitech tone.
## 2. Cause
### Supply Drop
The supply drop was not using an image asset.
It was drawn directly in `GameRenderer.renderAirDrops()` as:
- animated circle stroke
- translucent cyan fill
- white `SUPPLY` text
### Enemy Rectangle Artifact
The procedural generator used glow layers and Lanczos downsampling.
This left very low alpha pixels across the image canvas. In gameplay, those tiny alpha values became visible as a faint rectangular box around enemies.
### Falling Circular Hazard
The falling translucent circle was an `EMP_CLOUD` hazard.
It was drawn directly in `GameRenderer.renderHazards()` as a generic gray filled circle.
## 3. Fixes Applied
### Supply Drop Asset
A new stylized magitech crate sprite was generated:
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/supply_crate.png`
The renderer now draws this crate for air drops while preserving a small dashed cyan capture ring.
### Alpha Cleanup
The procedural asset generator now clamps very low alpha values to `0` during PNG export.
This removes transparent rectangle artifacts while keeping intended outlines, glow, and silhouettes.
Verified enemy sprite alpha:
- normal enemy corner alpha: `0`
- elite enemy corner alpha: `0`
- boss corner alpha: `0`
- no alpha values below the cleanup threshold remain
### Hazard Assets
New hazard sprites were generated:
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/vfx/vfx_hazard_emp.png`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/vfx/vfx_hazard_asteroid.png`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/vfx/vfx_hazard_debris.png`
`EMP_CLOUD` now renders as an arcane rune-field instead of a plain gray circle.
`ASTEROID` and `DEBRIS` can render as stylized magitech rock fragments instead of fallback circles.
## 4. Changed Runtime Paths
Important changed or generated paths:
- `/Volumes/Data/project/Antigravity/Skybound/scripts/generate_magitech_assets.py`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/hooks/useGameAssets.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/utils/SpriteUtils.ts`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/supply_crate.png`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/vfx/vfx_hazard_emp.png`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/vfx/vfx_hazard_asteroid.png`
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/vfx/vfx_hazard_debris.png`
## 5. Verification
Asset generation completed successfully.
Alpha inspection confirmed transparent corners and no low-alpha rectangle residue for the checked enemy/boss/supply/hazard sprites.
Production build completed successfully with:
```bash
npm run build
```
The build still reports the existing `/sprites/player.png` static path warning, but it remains non-blocking and the production bundle was generated successfully.
@@ -0,0 +1,177 @@
# Skybound Survivor-Like Balance Curve Pass
**Date**: 2026-04-24
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Raw gameplay balance pass from user playtest feedback
## 1. Playtest Feedback
The game shell looked close to Survivor.io / Vampire Survivors, but the actual gameplay did not feel like that genre.
Reported issues:
- gameplay did not deliver enough horde-survival pressure
- stage balance felt uneven
- TAC Level Up pacing felt unbalanced
- growth did not form a satisfying user-facing curve
## 2. Diagnosis
The previous balance leaned closer to a shmup / tactical shooter.
Main causes found in code:
- simultaneous enemy cap was too low for a horde-survival feel
- procedural spawn did not fully use the timeline `spawnIntervalMult`
- early EXP requirement was too high
- EXP growth multiplier was too steep
- stage difficulty scaled enemy/bullet stats too aggressively
- stage scripted events were compressed too early in the timeline
- TAC Level Up card offers were weighted but not structured, so the user could receive awkward choices
- starter skill offers could omit key horde-survival archetypes
## 3. Target Curve
New target:
- first meaningful upgrade should arrive quickly
- player should see more enemies on screen
- enemies should be individually weaker
- danger should come from density and positioning, not bullet stat spikes
- level-up choices should consistently support build formation
- stage progression should rise smoothly rather than jump sharply
## 4. Applied Balance Changes
### EXP and Level-Up
Changes:
- initial required EXP lowered from `100` to `45`
- normal enemy EXP increased from `5` to `7`
- elite EXP increased from `25` to `32`
- level-up EXP multiplier changed from steep `1.60 / 1.72 / 1.85` to smoother `1.24 / 1.30 / 1.36 / 1.42`
Expected result:
- early TAC Level Ups arrive faster
- the player can form a build before the first spike
- later progression still slows down without becoming a wall
### TAC Level Up Card Structure
The card generator now tries to offer:
- one owned skill upgrade
- one synergy / spike-counter / EVO-supporting option
- one flexible option
Expected result:
- fewer dead-choice screens
- higher chance of completing coherent builds
- less frustration from random-only card pools
### Starter Selection
Starter cards now come from three archetype buckets:
- primary damage
- area / crowd control
- utility / defense
Expected result:
- every run begins with a usable horde-survival foundation
- the first choice feels strategic without becoming punishing
### Enemy Density and Spawning
Changes:
- hard enemy cap increased from `30` to `90`
- timeline phase caps increased by stage and phase
- procedural spawn interval now uses `spawnIntervalMult`
- procedural spawns can arrive in small batches
- formation spawns now occur more often
- individual enemy HP and speed were reduced to support higher density
- elite chance is now a gradual probability instead of flipping too hard by difficulty
Expected result:
- more screen-filling horde pressure
- less empty movement time
- more satisfying weapon-clearing moments
### Stage Curve
Changes:
- stage duration curve changed from `120 + stage * 30s` to `150 + stage * 18s`
- stage difficulty scaling reduced from steep `+0.4 per stage` to smoother `+0.18 per stage`
- phase difficulty multipliers were lowered
- phase enemy caps were increased
- scripted wave events are distributed across the stage instead of firing too early
Expected result:
- stages feel less spiky and more readable
- difficulty rises through density and phase rhythm
- player has time to grow before major pressure events
### Enemy Bullet and Damage Pressure
Changes:
- enemy bullet speed curves were reduced
- damage curves were reduced
- bullet caps were reduced
- global enemy bullet speed multiplier reduced
- enemy projectile damage multipliers reduced
Expected result:
- gameplay moves away from bullet-hell punishment
- movement pressure still exists, but horde positioning becomes the main focus
### Weapon Rhythm
Several weapon cooldowns were shortened so early picks feel active sooner.
Nova Burst was also adjusted to trigger sooner and scale more clearly as an AoE crowd-control tool.
## 5. Changed Runtime Paths
Important changed paths:
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/balance.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/CombatTimeline.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/weaponBehaviors.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/SpawnerSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ModularWeaponSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/hooks/useGameEngine.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/store/useGameStore.ts`
## 6. Verification
Production build completed successfully with:
```bash
npm run build
```
The existing `/sprites/player.png` static path warning remains non-blocking.
## 7. Next Playtest Questions
Recommended next playtest checks:
- Does the first level-up happen within a satisfying time window?
- Does the screen feel populated without becoming unreadable?
- Do weapons feel like they clear hordes?
- Do stage spikes feel earned rather than sudden?
- Does TAC Level Up usually offer at least one desirable choice?
@@ -0,0 +1,60 @@
# Datacollector - 인증 복구 후 자동 재개 상태 전환 수정
- 작성 시각: 2026-04-25 22:39:30 KST
- 프로젝트: `/Volumes/Data/project/Antigravity/Datacollector`
- 관련 파일: `src/components/AgentDashboard.tsx`, `src/lib/engine.ts`
## 상황
NotebookLM 인증 복구 로직을 강화했지만, 화면에서는 여전히 `CONTINUE MISSION` 버튼을 사용자가 눌러야 다음 큐가 이어지는 것처럼 보였다.
사용자 관찰:
- 작업은 일부 완료됨.
- 큐에는 아직 작업이 많이 남아 있음.
- 헤더 상태가 `IDLE`로 보임.
- `CONTINUE MISSION` 버튼이 사용자의 수동 클릭을 기다림.
## 원인
프론트엔드 상태 전환에 빈틈이 있었다.
`AgentDashboard``useEffect``status !== 'running'`일 때 `KnowledgeEngine.stop()`을 호출한다. 그런데 기존 `stop()`은 내부 실행 플래그만 끄는 것이 아니라 항상 Zustand 상태까지 `idle`로 바꿨다.
그 결과 인증 오류 등으로 `paused` 상태를 유지해야 하는 경우에도 React effect를 지나면서 `paused -> idle`로 바뀌었다. 이렇게 되면 앱은 "복구 후 자동 재개 가능한 일시정지"가 아니라 "사용자가 다시 Continue를 눌러야 하는 대기 상태"처럼 동작했다.
## 조치
`src/lib/engine.ts`:
- `stop(updateStatus = true)` 형태로 변경했다.
- 내부 엔진만 멈춰야 할 때는 UI 상태를 덮어쓰지 않도록 했다.
`src/components/AgentDashboard.tsx`:
- `status !== 'running'` effect에서는 `engine.stop(false)`를 호출하도록 변경했다.
- `status === 'paused'`이고 큐가 남아 있으면 NotebookLM 연결 확인 후 자동으로 `running`으로 되돌리는 auto-resume effect를 추가했다.
- 기존 버그로 이미 `idle`에 갇힌 화면도 구제하기 위해, 수동 정지나 작업 완료 로그가 없는 `idle + 남은 큐` 상태도 복구 가능한 멈춤으로 보고 자동 재개하도록 보강했다.
- 중복 자동 재개를 막기 위해 `autoResumeRef` 잠금을 추가했다.
## 검증
다음 검증을 완료했다.
```bash
npm run lint
curl -sS -I http://127.0.0.1:3000
curl -sS -X POST http://127.0.0.1:3002/api/check-connection
```
결과:
- TypeScript 검사 통과
- 프론트엔드 서버 응답 정상
- NotebookLM 브리지 연결 확인 `success: true`
## 운영 메모
앞으로 인증 복구나 연결 복구로 인해 `paused` 상태가 되면 앱이 NotebookLM 연결을 확인하고 자동으로 다음 큐를 이어서 실행한다.
사용자가 직접 `STOP / PAUSE`를 누른 경우는 기존처럼 `idle`로 유지되므로, 수동 정지는 자동 재개 대상이 아니다.
@@ -0,0 +1,72 @@
# Datacollector Bridge Connection Refused Run Script Fix
Date: 2026-04-25 21:07:52 KST
Project: Datacollector
[[Repository|Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
## Summary
사용자가 앱 실행 후 `POST http://127.0.0.1:3002/api/check-connection net::ERR_CONNECTION_REFUSED` 오류를 확인했다.
이는 NotebookLM 인증 실패가 아니라 MCP Bridge 서버가 실행되지 않아 브라우저가 `3002` 포트에 연결하지 못한 상태였다.
## Root Cause
실행 경로가 여러 개였고 일부 경로는 프런트엔드 Vite 서버만 실행했다.
- `run_mac.command`: Bridge와 Vite를 함께 실행
- `run_app.sh`: Vite만 실행
- `npm run dev`: Vite만 실행
따라서 `run_app.sh` 또는 `npm run dev`로 앱을 켜면 UI는 열리지만 `/api/check-connection` 요청을 받을 Bridge 서버가 없어 `ERR_CONNECTION_REFUSED`가 발생했다.
## Changes Made
수정 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/run_app.sh`
- `/Volumes/Data/project/Antigravity/Datacollector/README.md`
- `/Volumes/Data/project/Antigravity/Datacollector/src/lib/api.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
- `/Volumes/Data/project/Antigravity/Datacollector/src/lib/engine.ts`
핵심 변경:
- `run_app.sh`가 Bridge 서버와 Vite 서버를 함께 실행하도록 변경
- `run_app.sh` 시작 시 기존 `3000`, `3002` 포트 프로세스를 정리
- 종료 시 Bridge 백그라운드 프로세스도 함께 종료하도록 trap 추가
- README의 실행 안내를 `npm run dev` 단독에서 `./run_mac.command` 또는 `npm run start-full`로 변경
- `src/lib/api.ts``bridgeFetch()` 추가
- Bridge 연결 실패 시 `Failed to fetch` 대신 “Bridge 서버가 실행되지 않았다”는 안내 메시지를 표시하도록 변경
- `VITE_BRIDGE_URL`로 Bridge 주소를 override할 수 있게 함
## Verification
실행한 검증:
```bash
node --check [[Scripts|Scripts]]/mcp_bridge.mjs
npm run lint
npm run build
```
검증 결과:
- 브리지 문법 체크 통과
- TypeScript 타입체크 통과
- Vite 프로덕션 빌드 통과
## [[Opera|Opera]]tional Note
앞으로 앱은 아래 방식으로 실행해야 한다.
```bash
./run_mac.command
```
또는 수동으로 두 서버를 같이 실행한다.
```bash
npm run start-full
```
`npm run dev`만 실행하면 프런트엔드만 뜨므로 NotebookLM, Wiki save, 인증 복구 API가 동작하지 않는다.
@@ -0,0 +1,177 @@
# Datacollector Codebase Structure Review and Initial Risk [[Assessment|Assessment]]
Date: 2026-04-25 20:38:01 KST
Project: Datacollector
[[Repository|Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
Knowledge Vault: `/Volumes/Data/project/Antigravity/Wiki/00_Raw`
## Summary
이 문서는 Datacollector 프로젝트의 첫 구조 파악 및 초기 코드 리뷰 결과를 정리한 기록이다.
이번 검토의 목적은 이후 기능 개발 전에 현재 시스템의 책임 분리, 실행 흐름, 외부 의존성, 그리고 우선적으로 손봐야 할 위험 요소를 이해하는 데 있다.
현재 프로젝트는 단순한 프런트엔드 앱이 아니라, React 기반 UI와 Zustand 상태 저장소, 자율 실행 엔진, 그리고 NotebookLM MCP 및 로컬 LM을 연결하는 Express 브리지 서버가 결합된 자동화 연구 도구 형태로 구성되어 있다.
## High-Level [[Architecture|Architecture]]
전체 흐름은 아래와 같다.
`React UI -> Zustand Store -> KnowledgeEngine -> Express Bridge -> NotebookLM MCP / Local LM / GitHub / Wiki [[Storage|Storage]]`
핵심 책임 분리는 다음과 같이 이해했다.
- `src/components/AgentDashboard.tsx`
사용자 인터페이스, 미션 시작/중지/재개, 설정 입력, 로그 표시, 수동 커밋 등 상호작용 담당
- `src/store/agentStore.ts`
앱 전체 설정값과 실행 상태를 보관하는 단일 전역 상태 저장소
- `src/lib/engine.ts`
큐를 소비하며 연구, 합성, 링크 추출, 다음 토픽 확장을 반복하는 자율 엔진
- `src/lib/gemini.ts`
NotebookLM 미연결 시 사용하는 로컬 LM 프롬프트 생성 및 응답 파싱
- `src/lib/github.ts`
결과 Markdown을 GitHub 저장소의 `00_Raw/` 경로로 업로드
- `[[Scripts|Scripts]]/mcp_bridge.mjs`
NotebookLM MCP 서버와 통신하는 지속 프로세스형 브리지 서버
## Execution Flow
실행 흐름은 다음 순서로 이해했다.
1. 사용자가 `AgentDashboard`에서 주제를 입력하고 미션을 시작한다.
2. 주제와 설정이 `agentStore`에 기록되고 상태가 `running`으로 바뀐다.
3. `status` 변경을 감지한 UI가 `KnowledgeEngine` 싱글톤을 시작한다.
4. `KnowledgeEngine`는 큐의 첫 항목을 읽고 현재 깊이와 루트 주제를 기준으로 처리 여부를 결정한다.
5. NotebookLM 연결 상태가 좋으면 브리지 서버를 통해 리서치와 합성을 수행한다.
6. NotebookLM이 없으면 로컬 LM 프록시(`/api/lm`)를 통해 대체 연구를 진행한다.
7. 생성된 Markdown에서 위키 링크를 추출해 다음 큐를 구성한다.
8. 결과는 pending commits, completed 목록, 로컬 위키 Raw 저장소 등에 반영된다.
## Current Structure Notes
이번 시점에서 구조적으로 눈에 띈 특징은 다음과 같다.
- 상태 관리가 거의 전부 Zustand store 하나에 집중되어 있어 흐름 추적은 쉽다.
- 대신 엔진과 UI가 store를 매우 직접적으로 공유해서 결합도가 높다.
- NotebookLM 경로와 Local LM 경로가 모두 존재해 fallback 전략은 분명하다.
- 브리지 서버가 프런트엔드 백엔드이자 외부 도구 래퍼 역할까지 함께 맡고 있어 책임이 넓다.
- 문서 저장 흐름이 GitHub 업로드와 로컬 위키 저장으로 이중화되어 있다.
## Review Findings
### 1. Sensitive secrets are persisted in [[Browser|Browser]] storage
`githubToken``notebookLmCookies`가 Zustand persist 설정에 포함되어 있어 브라우저 localStorage에 평문으로 저장된다.
이 방식은 세션 쿠키나 GitHub 토큰 같은 민감 정보의 저장 위치로는 안전하지 않다.
관련 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/src/store/agentStore.ts`
영향:
- 같은 브라우저 프로필을 사용하는 다른 코드나 도구가 정보에 접근할 수 있다.
- 장기적으로 토큰 유출 위험이 커진다.
### 2. Bridge server is exposed too broadly
브리지 서버는 `0.0.0.0:3002`로 열리고 CORS도 전부 허용한다.
또한 `/api/lm`은 클라이언트가 전달한 임의의 URL로 요청을 프록시할 수 있다.
관련 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/scripts/mcp_bridge.mjs`
영향:
- 로컬 개발용으로는 편하지만, 같은 네트워크 안에서 예상하지 않은 접근 통로가 될 수 있다.
- 사실상 무인증 프록시처럼 동작할 여지가 있다.
### 3. Environment portability is weak
MCP 실행 파일 경로와 위키 저장 경로가 절대경로로 하드코딩되어 있다.
관련 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/scripts/mcp_bridge.mjs`
영향:
- 다른 개발자 머신, 다른 사용자 계정, 다른 운영체제에서 그대로 실행하기 어렵다.
- 배포보다는 특정 개인 작업 환경에 강하게 종속된다.
### 4. Manual handoff [[State|State]] is not fully cleared
`resolveManualNext`가 store에 함수 형태로 저장되는데, `clearState()`에서 정리되지 않는다.
수동 합성 대기 중 reset 또는 새 미션 시작이 발생하면 상태 꼬임 가능성이 있다.
관련 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/src/store/agentStore.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/src/lib/engine.ts`
영향:
- 이전 미션의 대기 상태가 다음 미션에 잔존할 수 있다.
- UI 버튼 상태와 실제 엔진 대기 상태가 어긋날 수 있다.
### 5. API endpoint usage is duplicated and hardcoded
프런트엔드에는 이미 Vite 프록시가 설정되어 있지만, UI와 엔진 코드 곳곳에서 `http://127.0.0.1:3002`를 직접 호출하고 있다.
관련 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
- `/Volumes/Data/project/Antigravity/Datacollector/src/lib/engine.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/vite.config.ts`
영향:
- 포트 변경이나 배포 환경 변경 시 수정 지점이 늘어난다.
- 런타임 경로 설정이 한 군데에서 관리되지 않는다.
## Validation Performed
이번 검토 중 아래 확인을 수행했다.
- 저장소 파일 구조 및 진입점 확인
- UI, store, engine, bridge, GitHub, Local LM 계층 코드 확인
- `npm run lint` 실행
검증 결과:
- TypeScript 타입체크는 현재 통과했다.
## Suggested Next Priorities
우선순위는 아래 순서가 적절하다.
1. 민감 정보 저장 방식을 localStorage 바깥으로 이동하거나 최소한 분리
2. 브리지 서버 바인딩 범위와 CORS 정책 축소
3. 절대경로를 환경변수 또는 설정 파일로 치환
4. `resolveManualNext`를 포함한 미션 종료 정리 로직 강화
5. API 베이스 URL을 단일 설정 지점으로 통합
## Working Agreement For Future Notes
사용자 요청에 따라, 앞으로 Datacollector 관련 조사/분석/리뷰 결과는 가능하면 이 지식 창고 경로에 계속 기록한다.
기본 원칙:
- 위치: `/Volumes/Data/project/Antigravity/Wiki/00_Raw`
- 파일명: `YYYY-MM-DD-<Project>_<Topic>.md` 또는 기존 저장소 관례와 유사한 읽기 쉬운 영어 제목
- 내용: 작업 목적, 파악한 구조, 핵심 발견사항, 다음 액션을 포함
## Source Files Reviewed
- `/Volumes/Data/project/Antigravity/Datacollector/README.md`
- `/Volumes/Data/project/Antigravity/Datacollector/package.json`
- `/Volumes/Data/project/Antigravity/Datacollector/vite.config.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/src/main.tsx`
- `/Volumes/Data/project/Antigravity/Datacollector/src/App.tsx`
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
- `/Volumes/Data/project/Antigravity/Datacollector/src/store/agentStore.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/src/lib/engine.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/src/lib/gemini.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/src/lib/github.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/scripts/mcp_bridge.mjs`
- `/Volumes/Data/project/Antigravity/Datacollector/scripts/mcp_caller.py`
@@ -0,0 +1,56 @@
# Datacollector - processed 카운터 정체 및 엔진 루프 정지 감시 보강
- 작성 시각: 2026-04-25 22:52:25 KST
- 프로젝트: `/Volumes/Data/project/Antigravity/Datacollector`
- 관련 파일: `src/lib/engine.ts`, `src/components/AgentDashboard.tsx`
## 상황
사용자는 작업이 되는 것처럼 보이지만 `processed` 수치가 계속 오르지 않고, 서버를 재시작하면 1개가 추가된 뒤 다시 멈춘 것처럼 보인다고 보고했다.
## 확인한 내용
브리지 서버 상태는 정상이고 `/api/health` 기준 `pendingRequests`도 0이었다. 따라서 서버 요청이 계속 물려 있는 문제보다는 프론트엔드 엔진 루프가 한 번 처리한 뒤 다음 반복으로 자연스럽게 이어지지 않는 가능성이 높았다.
코드상 `processedCount``executeTask()`가 마크다운 생성까지 끝낸 뒤 `store.incrementProcessed()`를 호출할 때만 오른다. 즉 카운터가 오르지 않는다는 것은 다음 중 하나일 가능성이 있다.
- 다음 작업 합성이 아직 완료되지 않았다.
- 프론트엔드 엔진 루프 타이머가 끊겼다.
- UI 상태는 `running`인데 엔진 내부 싱글톤의 루프가 실제로는 잠든 상태가 되었다.
## 조치
`src/lib/engine.ts`:
- `isLoopActive`, `lastActivityAt`, `loopTimer`를 추가했다.
- `runLoop()` 중복 실행을 막으면서도, 루프가 잠든 경우 다시 깨울 수 있게 했다.
- `kickIfStalled()`를 추가해 `running` 상태인데 45초 이상 루프 활동이 없으면 자동으로 다음 루프를 시작한다.
- 다음 루프 예약을 `scheduleNextLoop()`로 통합해 타이머를 추적할 수 있게 했다.
- 작업 완료 후 `processedCount`가 반영된 값을 로그로 남기도록 했다.
`src/components/AgentDashboard.tsx`:
- 상태가 `running`일 때 15초마다 엔진 heartbeat를 실행한다.
- 엔진 루프가 잠든 것으로 판단되면 `kickIfStalled()`가 자동으로 다시 깨운다.
## 검증
다음 검증을 완료했다.
```bash
npm run lint
```
결과:
- TypeScript 검사 통과
## 운영 메모
이제 작업 하나가 완료될 때 Mission Telemetry에 다음 형태의 로그가 추가된다.
```text
[ENGINE] '토픽명' 처리 카운트 반영 완료: N
```
이 로그가 보이면 `processed` 값도 함께 올라가는 것이 정상이다. 만약 이 로그가 보이지 않고 `최종 데이터 합성 중...` 이후 오래 멈춘다면, 그때는 카운터 문제가 아니라 NotebookLM 합성 요청이 오래 걸리거나 실패 응답을 기다리는 상태로 봐야 한다.
@@ -0,0 +1,74 @@
# Datacollector Local Wiki Save Only Output Mode
Date: 2026-04-25 20:50:41 KST
Project: Datacollector
[[Repository|Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
## Summary
Datacollector의 생성 결과 저장 방식을 GitHub 업로드 중심에서 로컬 Wiki 저장 전용으로 정리했다.
앞으로 앱에서 생성되는 연구 문서는 `/Volumes/Data/project/Antigravity/Wiki/00_Raw`에 저장되고, Git 업로드는 사용자가 나중에 별도로 한 번에 처리하는 운영 방식으로 둔다.
## Previous [[Behavior|Behavior]]
기존 흐름은 결과 생성 후 두 경로가 동시에 존재했다.
- 로컬 Wiki Raw 폴더에 자동 저장
- `pendingCommits`에 결과를 쌓고 UI의 `BATCH COMMIT` 버튼으로 GitHub 업로드 가능
이 방식은 앱 안에 GitHub 토큰과 저장소 설정을 유지해야 했고, 사용자가 의도하지 않아도 Git 업로드 기능이 계속 노출되는 구조였다.
## New Behavior
새 흐름은 다음과 같다.
1. 연구 결과 Markdown 생성
2. `saved[[Reports|Reports]]`에 프리뷰용 로컬 캐시 저장
3. 브리지 서버의 `/api/wiki/save`를 통해 `/Volumes/Data/project/Antigravity/Wiki/00_Raw`에 Markdown 파일 저장
4. GitHub 업로드 버튼이나 토큰 설정 없이 완료
GitHub 업로드는 앱이 수행하지 않는다.
## Changes Made
수정 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/src/store/agentStore.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/src/lib/engine.ts`
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
- `/Volumes/Data/project/Antigravity/Datacollector/.env.example`
삭제 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/src/lib/github.ts`
핵심 변경:
- `githubToken`, `githubRepoUrl` 상태 제거
- `pendingCommits` 제거
- `addPendingCommit`, `clearPendingCommits` 제거
- `savedReports``addSavedReport` 추가
- `BATCH COMMIT` 버튼 제거
- 설정 모달의 GitHub Wiki Sync 섹션 제거
- `.env.example`의 GitHub 설정 제거
- 생성 결과는 기존 Wiki 저장 API를 통해 로컬 Raw 폴더에만 저장
## Verification
실행한 검증:
```bash
npm run lint
npm run build
```
검증 결과:
- TypeScript 타입체크 통과
- Vite 프로덕션 빌드 통과
## Notes
로컬 Wiki 저장은 기존 브리지 서버의 `/api/wiki/save` 라우트를 그대로 사용한다.
저장 대상 경로는 현재 브리지 서버에 하드코딩된 `/Volumes/Data/project/Antigravity/Wiki/00_Raw`이다.
추후 이 경로도 `.env` 설정으로 분리하면 다른 머신이나 폴더 구조에서도 더 쉽게 운영할 수 있다.
@@ -0,0 +1,50 @@
# Datacollector Mac Windows Launcher [[Scripts|Scripts]]
Date: 2026-04-25 21:09:42 KST
Project: Datacollector
[[Repository|Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
## Summary
Datacollector 실행 시 Vite 프런트엔드만 뜨고 MCP Bridge 서버가 뜨지 않아 `ERR_CONNECTION_REFUSED`가 발생할 수 있었다.
이를 막기 위해 맥용과 윈도우용 실행 파일을 명확히 정리했다.
## Main Launchers
- macOS: `/Volumes/Data/project/Antigravity/Datacollector/run_mac.command`
- Windows: `/Volumes/Data/project/Antigravity/Datacollector/run_win.bat`
두 실행 파일 모두 아래를 수행한다.
1. 프로젝트 폴더로 이동
2. `node_modules`가 없으면 `npm install`
3. 기존 `3000`, `3002` 포트 프로세스 정리
4. MCP Bridge 서버 실행
5. Vite 앱 실행
## Compatibility Wrappers
기존 실행 파일과의 호환성을 위해 아래 파일은 메인 실행 파일로 위임하도록 단순화했다.
- `run_app.sh` -> `run_mac.command`
- `run_app.bat` -> `run_win.bat`
## Verification
실행한 검증:
```bash
bash -n run_mac.command
bash -n run_app.sh
npm run lint
```
검증 결과:
- macOS shell script 문법 통과
- TypeScript 타입체크 통과
## [[Opera|Opera]]tional Note
앞으로 맥에서는 `run_mac.command`, 윈도우에서는 `run_win.bat`만 실행하면 된다.
`npm run dev` 단독 실행은 프런트엔드만 켜므로 NotebookLM, Wiki save, 인증 복구 API가 동작하지 않는다.
@@ -0,0 +1,68 @@
# Datacollector - NotebookLM 인증 브라우저 유지 및 오래된 .env 쿠키 우선순위 문제 해결
- 작성 시각: 2026-04-25 21:31:00 KST
- 프로젝트: `/Volumes/Data/project/Antigravity/Datacollector`
- 관련 파일: `[[Scripts|Scripts]]/mcp_bridge.mjs`, `auth_mac.command`, `auth_win.bat`, `.env.example`
## 상황
앱에서 `/api/check-connection` 호출이 500으로 실패했고, 화면에는 다음과 같은 메시지가 반복되었다.
- `Authentication expired`
- `인증 자동 복구 실패. 브라우저 로그인이 필요한 상태일 수 있습니다.`
- `MCP initialized: true, pending: 0`
사용자는 NotebookLM 인증 중 [[Chrome|Chrome]]이 열렸다가 닫히는 점을 보고, 인증 브라우저를 유지해야 하는 것 아니냐고 질문했다.
## 확인한 내용
`notebooklm-mcp-auth` 소스 확인 결과, 기본 자동 실행 모드는 인증 후 자신이 띄운 Chrome 프로세스를 종료한다. 반면 `--no-auto-launch --port ... --user-data-dir ...` 모드는 이미 떠 있는 Chrome 디버깅 세션에 붙기 때문에 인증 브라우저를 유지할 수 있다.
브리지에서 Chrome을 유지하도록 바꾼 뒤 인증 CLI는 성공했다. 하지만 MCP 서버의 `notebook_list`는 여전히 `Authentication expired`를 반환했다.
추가 확인 결과, `.env`에 예전 `NOTEBOOKLM_COOKIES` 값이 남아 있었다. `scripts/mcp_bridge.mjs``dotenv/config`를 로드한 뒤 MCP 서버를 자식 프로세스로 실행하면서 이 오래된 환경변수 쿠키가 `~/.notebooklm-mcp/auth.json`의 최신 인증 캐시보다 우선 적용되고 있었다.
즉 실제 핵심 원인은 다음 조합이었다.
- 인증 CLI는 최신 쿠키를 `~/.notebooklm-mcp/auth.json`에 정상 저장함.
- 브리지는 `.env`의 오래된 `NOTEBOOKLM_COOKIES`를 MCP 자식 프로세스에 전달함.
- MCP 서버는 캐시 파일보다 환경변수를 우선 사용함.
- 결과적으로 새 인증 후에도 MCP는 계속 오래된 쿠키로 NotebookLM API를 호출함.
## 조치
`scripts/mcp_bridge.mjs`에서 기본적으로 MCP 자식 프로세스와 인증 CLI 자식 프로세스에 `NOTEBOOKLM_COOKIES`, `NOTEBOOKLM_CSRF_TOKEN`, `NOTEBOOKLM_SESSION_ID`를 넘기지 않도록 수정했다.
명시적으로 환경변수 인증을 사용해야 할 경우에는 `.env`에 아래 값을 둔다.
```env
USE_NOTEBOOKLM_ENV_AUTH="true"
```
기본값은 `false`이며, 이 경우 `notebooklm-mcp-auth`가 생성한 `~/.notebooklm-mcp/auth.json` 캐시를 우선 사용한다.
또한 `auth_mac.command`, `auth_win.bat`는 별도 Chrome 프로필과 디버깅 포트를 사용해 NotebookLM 인증 브라우저를 열어두는 방식으로 변경했다.
## 검증
다음 검증을 완료했다.
```bash
node --check scripts/mcp_bridge.mjs
npm run lint
curl -sS -X POST http://127.0.0.1:3002/api/check-connection
```
결과:
```json
{"success":true,"count":0}
```
직접 Python MCP 클라이언트로도 같은 인증 캐시를 사용해 `list_notebooks` 호출이 성공했고, 노트북 89개를 읽는 것을 확인했다.
## 운영 메모
앞으로는 `.env`에 오래된 `NOTEBOOKLM_COOKIES`가 남아 있어도 기본 브리지 실행에는 영향을 주지 않는다. 다만 혼란을 줄이려면 장기적으로 `.env`에서 `NOTEBOOKLM_COOKIES` 줄을 삭제하거나 주석 처리하는 것이 좋다.
NotebookLM 인증용 Chrome 창은 닫지 않는 것이 좋다. 인증이 풀렸을 때 브리지가 같은 디버깅 포트의 Chrome 세션에 붙어 자동 복구를 시도할 수 있다.
@@ -0,0 +1,85 @@
# Datacollector NotebookLM Automatic Auth Recovery
Date: 2026-04-25 20:47:05 KST
Project: Datacollector
[[Repository|Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
## Summary
컴퓨터 포맷 이후 NotebookLM MCP 인증이 자주 실패하고, 20-30분마다 `auth_mac.command`를 수동 실행해야 하는 문제가 있었다.
이번 작업에서는 인증 만료 시 브리지 서버가 자동으로 복구를 시도하도록 개선했다.
## Root Cause Hypothesis
기존 구조는 MCP 서버의 `refresh_auth` 도구 호출에만 의존했다.
하지만 포맷 이후 로컬 토큰 저장 위치나 [[Chrome|Chrome]] 세션 상태가 달라지면서 `refresh_auth`만으로 복구되지 않는 상황이 발생할 수 있다.
사용자가 직접 실행하던 파일은 다음 명령의 래퍼였다.
```bash
/Users/g1nation_mac/.local/bin/notebooklm-mcp-auth
```
따라서 자동 복구 흐름에도 이 CLI 인증 명령을 포함시키는 것이 가장 직접적인 개선 방향이다.
## Changes Made
수정 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/[[Scripts|Scripts]]/mcp_bridge.mjs`
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
- `/Volumes/Data/project/Antigravity/Datacollector/.env.example`
핵심 변경:
- 브리지 서버가 `.env`를 읽도록 `dotenv/config`를 추가했다.
- `AUTH_PATH`, `AUTH_ARGS`, `AUTH_TIMEOUT_MS`, `AUTH_REFRESH_INTERVAL_MS` 설정을 추가했다.
- MCP 인증 에러 발생 시 `refresh_auth`를 먼저 시도한다.
- `refresh_auth` 실패 시 MCP 프로세스를 재시작하고 다시 갱신을 시도한다.
- 그래도 실패하면 `notebooklm-mcp-auth` CLI를 브리지 서버가 직접 실행한다.
- CLI 인증 후 MCP 프로세스를 재시작해 새 토큰을 읽게 만든다.
- 장시간 실행 중에는 15분 간격으로 요청이 없는 시점에 인증 상태를 사전 갱신한다.
- UI 안내 문구를 수동 재인증 중심에서 자동 복구 중심으로 수정했다.
## Runtime [[Behavior|Behavior]]
새 인증 복구 순서:
1. NotebookLM MCP 요청 실패
2. 에러 메시지가 인증 관련인지 판단
3. `refresh_auth` 호출
4. MCP 프로세스 재시작 후 `refresh_auth` 재시도
5. `notebooklm-mcp-auth` CLI 자동 실행
6. MCP 프로세스 재시작
7. 원래 실패했던 NotebookLM 요청 재시도
주기적 갱신:
- 기본 간격: 15분
- 설정값: `AUTH_REFRESH_INTERVAL_MS=900000`
- 진행 중인 MCP 요청이 있을 때는 건드리지 않고 건너뛴다.
## Verification
실행한 검증:
```bash
node --check scripts/mcp_bridge.mjs
npm run lint
npm run bridge
curl -s http://127.0.0.1:3002/api/health
```
검증 결과:
- `node --check` 통과
- TypeScript 타입체크 통과
- 브리지 서버 시작 성공
- MCP 서버 초기화 성공
- `/api/health`에서 `connected: true`, `version: 3.3.0`, `authPath` 확인
## Notes
완전히 백그라운드 인증이 가능한지는 Google/Chrome 세션 상태에 의존한다.
브라우저 로그인이 만료되어 실제 사용자 로그인이 필요한 상태라면 자동 CLI 실행도 브라우저 로그인을 요구할 수 있다.
다만 기존처럼 매번 사용자가 batch 파일을 직접 실행하는 흐름보다, 일반적인 토큰 만료와 MCP refresh 실패 상황은 브리지 서버가 먼저 복구하도록 개선되었다.
@@ -0,0 +1,60 @@
# Datacollector - NotebookLM 자동 재인증 검증 강화 및 동시 복구 잠금
- 작성 시각: 2026-04-25 22:17:33 KST
- 프로젝트: `/Volumes/Data/project/Antigravity/Datacollector`
- 관련 파일: `[[Scripts|Scripts]]/mcp_bridge.mjs`
## 상황
인증 브라우저 유지와 오래된 `.env` 쿠키 우선순위 문제를 해결한 뒤에도, 실제 작업 중 인증이 풀렸을 때 완전히 자동으로 재인증되지 않는 문제가 남아 있었다.
화면에서는 작업은 진행되지만 사용자가 기대한 "인증 만료 감지 -> 자동 재인증 -> 원래 작업 재시도" 흐름이 안정적으로 보장되지 않았다.
## 원인
브리지에는 자동 복구 로직이 있었지만 두 가지 빈틈이 있었다.
- `refresh_auth` 호출이 성공해도 실제 NotebookLM API 호출이 가능한지 검증하지 않았다.
- `/api/re-auth``/api/check-connection` 같은 요청이 동시에 들어오면 각각 MCP 재시작과 인증 복구를 시도해서 프로세스 재시작 경합이 생길 수 있었다.
추가로 인증 오류 판별 문자열에 `expired`, `RPC Error 16`, `csrf`, `만료` 같은 케이스가 충분히 포함되지 않아 일부 인증 만료 메시지가 일반 오류로 처리될 가능성이 있었다.
## 조치
`scripts/mcp_bridge.mjs`에서 다음을 수정했다.
- 재인증 성공 기준을 `refresh_auth` 성공이 아니라 실제 `notebook_list` 호출 성공으로 강화했다.
- 인증 만료 감지 시 `refreshAuth({ allowExternalAuth: true })`를 통해 자동 CLI 인증 복구까지 이어지도록 정리했다.
- 주기적 인증 점검도 필요 시 외부 인증 CLI 복구를 허용하도록 변경했다.
- `_refreshAuthPromise` 잠금을 추가해 동시 재인증/재시작 요청이 서로 충돌하지 않게 했다.
- 인증 오류 감지 키워드에 `expired`, `rpc error 16`, `csrf`, `unauthorized`, `forbidden`, `인증`, `만료`를 추가했다.
## 검증
다음 검증을 완료했다.
```bash
node --check scripts/mcp_bridge.mjs
npm run lint
curl -sS -X POST http://127.0.0.1:3002/api/re-auth
curl -sS -X POST http://127.0.0.1:3002/api/check-connection
```
결과:
- `/api/re-auth`: `success: true`
- `/api/check-connection`: `success: true`
또한 `/api/re-auth``/api/check-connection`을 동시에 호출해도 둘 다 성공하는 것을 확인했다.
## 운영 메모
이제 인증이 풀린 상태에서 NotebookLM MCP 호출이 인증 오류를 반환하면 브리지가 다음 순서로 자동 복구한다.
1. MCP의 `refresh_auth` 실행
2. 실제 `notebook_list` 호출로 인증 유효성 검증
3. 실패 시 MCP 프로세스 재시작 후 재검증
4. 그래도 실패하면 `notebooklm-mcp-auth` CLI 실행
5. 인증 캐시 정리 후 MCP 재시작 및 실제 호출 검증
NotebookLM 브라우저 세션이 완전히 로그아웃된 상태라면 자동 CLI도 브라우저 로그인을 요구할 수 있다. 이 경우 사용자가 열린 NotebookLM [[Chrome|Chrome]] 창에서 로그인만 해두면 이후 자동 복구가 다시 이어질 수 있다.
@@ -0,0 +1,84 @@
# Datacollector NotebookLM Connection Guard and MCP Restart Fix
Date: 2026-04-25 21:02:35 KST
Project: Datacollector
[[Repository|Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
## Summary
실행 중 NotebookLM 연결 체크가 500 에러를 반환한 뒤에도 미션이 계속 시작되어 Local LM fallback으로 넘어가고, 결국 `Local LM returned an empty or invalid response` 에러가 발생했다.
또한 브리지의 MCP 재시작 로직에서 자동 재시작과 수동 재시작이 겹쳐 여러 `notebooklm-mcp` 프로세스가 남는 문제가 확인되었다.
## Observed Errors
브라우저 콘솔:
```text
:3000/favicon.ico 404 (Not Found)
127.0.0.1:3002/api/check-connection 500 (Internal Server Error)
```
앱 로그:
```text
NotebookLM 연결 실패: 인증 자동 복구 실패...
GENERAL MODE
ENGINE ERROR Local LM returned an empty or invalid response.
```
## Root Causes
1. `testNotebookLmConnection()`이 성공 여부를 반환하지 않았다.
2. `handleStart`, `handleResume`, `handleGlobalResume`이 연결 실패 후에도 그대로 `running` 상태로 넘어갔다.
3. `restart()`가 MCP 프로세스 종료 이벤트를 기다리지 않고 바로 새 프로세스를 띄울 수 있었다.
4. `close` 이벤트의 자동 재시작이 수동 재시작과 겹쳐 MCP 하위 프로세스가 누적될 수 있었다.
5. favicon 파일이 없어서 브라우저가 `/favicon.ico` 기본 요청을 404로 표시했다.
## Changes Made
수정 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/[[Scripts|Scripts]]/mcp_bridge.mjs`
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
- `/Volumes/Data/project/Antigravity/Datacollector/index.html`
추가 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/public/favicon.svg`
핵심 변경:
- `testNotebookLmConnection()``Promise<boolean>`을 반환하도록 변경
- NotebookLM 연결 실패 시 신규 미션 시작, 개별 재개, 전체 재개를 보류
- 연결 실패 후 Local LM fallback으로 자동 진행되는 흐름 차단
- MCP 프로세스를 종료할 때 `close` 이벤트를 기다리는 `_stopCurrentProcess()` 추가
- 재시작 중 자동 재시작이 중복 실행되지 않도록 제어
- 재시작 테스트 후 MCP 하위 프로세스가 하나만 남는지 확인
- SVG favicon 추가 및 `index.html`에 명시
## Verification
실행한 검증:
```bash
node --check scripts/mcp_bridge.mjs
npm run lint
npm run build
npm run bridge
curl -s http://127.0.0.1:3002/api/health
curl -s -X POST http://127.0.0.1:3002/api/restart
```
검증 결과:
- 브리지 문법 체크 통과
- TypeScript 타입체크 통과
- Vite 빌드 통과
- 브리지 시작 성공
- `/api/health` 응답 정상
- `/api/restart``notebooklm-mcp` 프로세스가 하나만 남는 것 확인
## [[Opera|Opera]]tional Note
현재 실행 중이던 오래된 브리지와 누적된 MCP 하위 프로세스는 종료했다.
앱은 다시 실행해야 새 브리지 로직이 적용된다.
@@ -0,0 +1,70 @@
# Datacollector NotebookLM Progress Visibility and Auth Diagnosis
Date: 2026-04-25 21:17:24 KST
Project: Datacollector
[[Repository|Repository]]: `/Volumes/Data/project/Antigravity/Datacollector`
## Summary
사용자가 UI에서 `NotebookLM 연결 상태 점검 중...` 로그만 반복되고 실제 진행 상황을 알 수 없다고 보고했다.
확인 결과 앱이 프로젝트 생성 단계까지 가지 못하고 있었으며, 원인은 NotebookLM 연결 확인 단계에서 MCP 인증이 만료 상태로 판단되기 때문이었다.
## Observed [[State|State]]
확인한 상태:
- Vite 서버 `3000` 실행 중
- MCP Bridge 서버 `3002` 실행 중
- `notebooklm-mcp` 프로세스 실행 중
- `/api/health` 응답 가능
- `/api/check-connection`은 NotebookLM 인증 만료 오류 반환
브리지 로그상 자동 인증 CLI는 [[Chrome|Chrome]]을 열고 로그인 및 토큰 추출까지 수행했다.
그러나 MCP 서버는 이후에도 `Authentication expired`로 판단하여 NotebookLM notebook list 호출에 실패했다.
## Changes Made
수정 파일:
- `/Volumes/Data/project/Antigravity/Datacollector/[[Scripts|Scripts]]/mcp_bridge.mjs`
- `/Volumes/Data/project/Antigravity/Datacollector/src/components/AgentDashboard.tsx`
핵심 변경:
- MCP 초기화 타임아웃 추가: `MCP_INIT_TIMEOUT_MS`
- NotebookLM 연결 확인 타임아웃 추가: `MCP_HEALTH_TIMEOUT_MS`
- `/api/health`에 상세 상태 추가
- `initialized`, `processRunning`, `processPid`, `pendingRequests`, `authStatus` 노출
- 인증 CLI 진행 단계(`starting`, `running`, `restarting`, `success`, `failed`) 추적
- UI 연결 점검 중 5초마다 Bridge/MCP/auth 진행 상태 로그 출력
- 중복 연결 점검 요청은 기존 Promise를 재사용하도록 변경
## Verification
실행한 검증:
```bash
node --check scripts/mcp_bridge.mjs
npm run lint
npm run build
curl -sS --max-time 5 http://127.0.0.1:3002/api/health
curl -sS --max-time 25 -X POST -H 'Content-Type: application/json' -d '{}' http://127.0.0.1:3002/api/check-connection
```
검증 결과:
- 브리지 문법 체크 통과
- TypeScript 타입체크 통과
- Vite 빌드 통과
- Bridge/MCP 프로세스는 실행됨
- NotebookLM 연결 확인은 인증 만료 오류로 실패
## Current Diagnosis
현재 문제는 앱 실행이나 Bridge 연결 문제가 아니라 NotebookLM MCP 인증 상태 문제다.
자동 인증 CLI가 토큰을 저장해도 MCP 서버가 계속 만료로 판단하므로, 다음 단계에서는 NotebookLM MCP 패키지의 인증 저장 형식 또는 권장 인증 방식(`--file` 모드 등)을 확인해야 한다.
## [[Opera|Opera]]tional Note
확인용으로 실행했던 Bridge/Vite/MCP 프로세스는 종료했다.
새 진행 상태 로그를 보려면 앱을 `run_mac.command`로 다시 실행해야 한다.
@@ -0,0 +1,173 @@
# Skybound Core Gameplay Rebalance and Purpose Reset
**Date**: 2026-04-25
**Project**: Skybound Protocol
**Author**: Codex
**Status**: Raw corrective gameplay pass after balance regression
## 1. User Playtest Feedback
The previous balance pass made the game worse.
Observed issues:
- TAC Level Up triggered repeatedly and too quickly.
- Campaign and Blitz did not communicate a clear purpose.
- It was unclear whether the player should dodge bullets, collect upgrades, survive waves, or simply idle.
- Standing near the center could clear the stage with little interaction.
- Skill choice did not feel strategic because almost any pickup worked.
- The foundation felt like it had grown without a clear gameplay plan.
## 2. Diagnosis
The previous pass overcorrected toward reward frequency and enemy density.
Main problems:
- initial EXP requirement was too low
- EXP gem values were too high
- level-up carryover allowed too much momentum
- no cooldown existed between TAC Level Up events
- base magnet radius was too generous
- base damage multiplier was too high
- weapon cooldowns became too generous
- enemy caps became too high for the current combat model
- enemies were too weak for the amount of automatic player damage
The result was a reward flood without enough danger, movement, or tactical pressure.
## 3. New Gameplay Purpose
Skybound should not be a pure bullet hell and should not be an idle auto-clear game.
The intended player loop should be:
1. Survive incoming enemy formations and hazard pressure.
2. Move deliberately to collect EXP gems and supply rewards.
3. Choose upgrades that solve the current pressure pattern.
4. Build toward synergies and evolutions.
5. Enter boss or spike phases with a build that feels earned.
The main fun should come from:
- movement under pressure
- risk-reward EXP collection
- tactical skill choices
- visible power growth
- stage pressure that asks for different answers
The player should not be able to win reliably by standing still.
## 4. Corrective Fixes Applied
### TAC Level Up Flood Control
Applied:
- initial required EXP increased from `45` to `90`
- normal enemy EXP reduced from `7` to `4`
- elite EXP reduced from `32` to `20`
- level-up multiplier increased to `1.42 / 1.48 / 1.55 / 1.62`
- added a `360 frame` TAC Level Up lockout after each level-up
- EXP carryover is capped to `35%` of the next requirement
Expected result:
- level-up moments become meaningful beats
- no rapid-fire modal spam
- players must keep playing between upgrades
### Movement Incentive
Applied:
- base magnet radius reduced from `180` to `90`
- magnet passive now adds `35` per level instead of `60`
Expected result:
- EXP collection requires movement
- standing still misses more progression
- magnet becomes a strategic comfort/passive choice rather than free global collection
### Idle-Clear Reduction
Applied:
- base effective damage reduced from `1.5` to `1.0`
- damage passive now provides growth from deliberate investment
- several weapon cooldowns were pulled back from the previous overly generous pass
- Nova Burst was returned closer to a periodic tactical tool rather than constant auto-clear
Expected result:
- early weapons no longer erase all pressure automatically
- skill investment matters more
- AoE tools help but do not replace positioning
### Enemy Pressure Recentered
Applied:
- hard enemy cap reduced from `90` to `56`
- phase caps reduced from the previous overcorrection
- enemy HP increased from the previous too-low values
- enemies enter deeper into the playfield
- enemy speed and bullet pressure were slightly restored
- procedural spawn cadence reduced from the flood state
Expected result:
- fewer meaningless bodies
- enemies apply actual positional pressure
- player must dodge, reposition, and collect intentionally
## 5. Design Rule Going Forward
Future balance changes should follow this rule:
Do not increase rewards unless a matching risk or movement requirement exists.
Examples:
- faster level-up needs harder collection or less carryover
- more enemies need weaker auto-clear or stronger enemy pathing
- stronger skills need clearer spike counters or enemy behaviors
- more pickups need better pickup affordance and danger around pickup zones
## 6. Changed Runtime Paths
Important changed paths:
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/store/useGameStore.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/SpawnerSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/CombatTimeline.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/balance.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/weaponBehaviors.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ModularWeaponSystem.ts`
## 7. Verification
Production build completed successfully with:
```bash
npm run build
```
The existing `/sprites/player.png` static asset warning remains non-blocking.
## 8. Next Necessary Design Work
This corrective patch stabilizes the worst problems, but the project still needs a stronger core design pass.
Recommended next work:
- define Campaign as objective-based stages with unique pressure patterns
- define Blitz as score/survival mode with explicit risk-reward scoring
- add clear stage objectives to HUD
- add enemy archetypes that force movement differently
- add pickup-risk zones so rewards are not free
- review every skill for role identity: damage, crowd control, defense, mobility, economy
@@ -0,0 +1,103 @@
# Skybound Player Airframe and 8 Stage Boss Continuity Rework
작성일: 2026-04-25 09:51 KST
## 요청 요약
- 사용자 기체가 엔진에서 그린 도형 조립처럼 보여 시각적 완성도가 낮아 보이는 문제를 개선한다.
- Stage 1 클리어 후 Stage 2로 넘어가는 흐름이 결과 화면으로 끊겨 게임이 단절되는 문제를 개선한다.
- Aero Fighters처럼 보스를 처치하고 같은 런 안에서 다음 스테이지로 자연스럽게 이어지는 구조를 만든다.
- 총 8개 스테이지를 유지하고, 스테이지가 올라갈수록 난이도가 올라가도록 보스 HP, 파츠, 패턴을 재조정한다.
- 각 스테이지 보스가 서로 다른 공격 패턴을 체감할 수 있도록 실행부를 보강한다.
## 확인한 문제
### 플레이어 기체 렌더링
- `GameRenderer.renderPlayer()`에서 플레이어 스프라이트 위에 랜덤 원형 엔진 글로우를 직접 그려서, 기체 뒤쪽이 매 프레임 흔들리는 임시 도형처럼 보였다.
- `renderWeaponAttachments()`에서 일부 장착 무기를 `fillRect`, `strokeRect`, 랜덤 원형 플래시로 그려서 톤앤매너에 맞는 완성형 파츠가 아니라 디버그 박스처럼 보일 수 있었다.
- 특히 Hyper Sonic Vulcan, Gatling fallback, Missile Pod fallback이 사용자 기체 실루엣과 잘 섞이지 않았다.
### 스테이지 전환
- 보스 처치 후 `STAGE_CLEAR`가 되고, 300프레임 뒤 `BOSS_ACTION NEXT_STAGE` 이벤트가 발생한다.
- 기존 `useGameEngine`은 이 이벤트를 곧바로 `finishMission('CLEAR')`로 연결했다.
- 그 결과 Standard 캠페인에서도 Stage 1 보스 처치 후 결과 화면으로 끊기고, 다음 스테이지는 별도 런처럼 느껴졌다.
### 보스 패턴
- `bossActions.ts`에는 Stage 1부터 Stage 8까지 액션 테이블이 있다.
- 하지만 `BossSystem.executePattern()`은 일부 액션만 처리하고 있었기 때문에, 실제 전투에서는 많은 액션이 기본 단발 탄으로 떨어질 수 있었다.
- `StageDirectorSystem.instantiateBoss()`의 보스 파츠 turretId가 `T-CORE`, `T-WING`, `T-HEAVY`처럼 실제 `TURRET_CATALOG`에 없는 값이라 파츠 포탑이 의도대로 발사되지 않을 수 있었다.
- 기존 보스 HP는 Stage 2부터 `5000 * currentStage`로 급격히 올라가 캠페인 커브가 자연스럽지 않았다.
## 적용한 변경
### 플레이어 기체 완성도 개선
- 플레이어 엔진 글로우를 랜덤 원형에서 고정된 마기테크 추진 플룸으로 변경했다.
- 스프라이트 크기를 72px에서 78px로 약간 키워 중심 기체의 존재감을 높였다.
- `drawMagitechPod()` 헬퍼를 추가해 장착 무기를 작은 마기테크 포드 형태로 통일했다.
- Vulcan, Gatling fallback, Missile Pod fallback을 박스 도형 대신 다크 블루 메탈 바디, 시안/옐로/핑크 액센트, 라운드 포드 실루엣으로 렌더링한다.
- 장착 파츠의 랜덤 플래시를 줄이고 프레임 기반 pulse로 바꿔 덜 튀고 더 의도적으로 보이게 했다.
### 연속 캠페인 전환
- Standard 캠페인에서 Stage 1-7 보스 처치 후 `finishMission`을 호출하지 않고, 같은 엔진 런 안에서 다음 스테이지로 전환하도록 변경했다.
- 전환 시 다음 작업을 수행한다.
- `currentStage` 증가
- `campaignStageIndex` 저장
- `StageDirectorSystem.advanceToStage()`로 새 타임라인 로드
- 활성 총알, 적, 파티클 풀 정리
- 스포너 큐 초기화
- 보스, 탄막, hazard, airdrop, exp gem, vortex 정리
- `INTRO` 페이즈로 재시작
- 체력 25% 회복과 120프레임 무적 부여
- Stage 안내 텍스트와 HQ comms 출력
- Stage 8 보스 처치 시에는 `GAME_COMPLETE`로 결과 화면에 진입한다.
- Blitz 모드는 기존처럼 단일 전투 클리어로 유지한다.
### 8스테이지 보스 커브
- 보스 HP를 선형 폭증에서 완만한 곡선형 성장으로 변경했다.
- Stage 1은 낮게 시작하고, Stage 8은 누적 성장과 보스 패턴 난이도를 고려해 높은 난이도를 갖도록 설계했다.
- 보스 파츠 HP도 같은 stage curve를 사용해 코어, 날개, 포탑이 함께 성장한다.
- 각 스테이지에 실제 `TURRET_CATALOG`에 존재하는 turretId loadout을 지정했다.
### 보스 패턴 실행 보강
- 다음 액션들이 실제 탄막/기믹으로 실행되도록 매핑했다.
- `FAN_PART`, `DASH_PART`: 부채꼴 조준 사격
- `SIDE_WAVE`: 좌우 측면 웨이브
- `ZONE_BOMB`: 안전 구역 압박과 링 탄막
- `WALL_WAVE`: 틈이 있는 벽 형태 탄막
- `MISSILE_BARRAGE`, `HOMING_CHASE`: 유도성 탄막
- `CROSS_CHASE`: 네 방향 교차 추격 탄
- `SPIRAL_WEB`, `REVOLVING_FLAME`: 나선 탄막
- `BURST_SPLITTER`: 분열형 부채 탄
- `GEAR_STORM`: 고밀도 나선과 링 조합
- `PRECISION_LOCK`, `SNIPE_GRID`, `LASER_AIM`, `LASER_SWEEP`: 크로스헤어 기반 고속 압박
- `TELEPORT_STRIKE`: 보스 위치 변경 후 기습 사격
- `GIMMICK_PULSE`, `CC_REVERSE`, `ZONE_COLLAPSE`: 중력장/페이즈존 기믹과 링 탄막
- `ULTIMATE_SYMPHONY`: 기존 고난도 복합 패턴 유지
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/hooks/useGameEngine.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/StageDirectorSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/BossSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/EntityManager.ts`
## 검증
- `npm run build` 성공
- Vite 경고: `/sprites/player.png referenced in /sprites/player.png didn't resolve at build time`
- 위 경고는 기존 런타임 경로 관련 경고이며 이번 변경으로 인한 빌드 실패는 아니다.
## 후속 플레이테스트 포인트
- Stage 1 보스 처치 후 결과 화면 없이 Stage 2 INTRO로 자연스럽게 이어지는지 확인한다.
- Stage 8 보스 처치 후 `GAME_COMPLETE` 결과로 진입하는지 확인한다.
- 장착 무기 파츠가 기체와 과하게 분리되어 보이지 않는지 확인한다.
- Stage 3 이후 `ZONE_BOMB`, `WALL_WAVE`, `HOMING_CHASE`, `PRECISION_LOCK` 계열이 회피 목적을 명확히 만드는지 확인한다.
@@ -0,0 +1,75 @@
# Skybound Skill Concept and Hangar Layout Overlap Fix
작성일: 2026-04-25 10:09 KST
## 요청 요약
- 스킬 업그레이드 후 화면에 긴 라이트 기둥만 보이는 문제가 있어 스킬 개념과 연출을 수정한다.
- HUD/UI 관점에서 왼쪽에 여러 UI가 겹쳐 나오는 문제가 있어 필요하면 전체적으로 재설계한다.
## 확인한 문제
### Hyper-Sonic Vulcan 컨셉 불일치
- `Hyper-Sonic Vulcan`은 이름상 고속 벌컨/캐논 계열인데 실제 구현은 영구 지속되는 긴 레이저 빔이었다.
- `GameRenderer`가 플레이어 기준으로 화면 끝까지 이어지는 두꺼운 시안 빔을 그려서, 스킬이 무기라기보다 긴 조명처럼 보였다.
- `ModularWeaponSystem.updateHyperLaser()`도 라인 판정으로 지속 데미지를 넣고 있어 플레이어가 발사/탄막을 체감하기 어려웠다.
### Hangar UI 겹침
- `HangarOverlay.tsx`에서 `UPGRADE``PASS` 탭 콘텐츠가 오른쪽 `craft-area` 패널 밖에 렌더링되고 있었다.
- 그 결과 CSS Grid의 세 번째 아이템처럼 배치되어 왼쪽 패널/재료 영역과 겹쳐 보였다.
- 특히 `UPGRADE` 탭 선택 시 `PERMANENT UPGRADES` 콘텐츠가 왼쪽 재료 패널 위로 올라오는 문제가 발생했다.
### 전투 보상 텍스트 겹침
- 적 처치 보상 텍스트가 화면 가장자리에서 생성될 경우 `TechMats`, `+TAC` 같은 텍스트가 잘리거나 서로 겹쳐 보일 수 있었다.
## 적용한 변경
### Twin Arc Vulcan으로 스킬 컨셉 변경
- `HYPER_SONIC_VULCAN` 메타데이터 이름을 `Twin Arc Vulcan`으로 변경했다.
- 설명도 `Twin magitech cannons fire rapid piercing arc rounds.`로 바꿔 실제 플레이 감각과 맞췄다.
- 기존의 영구 레이저 빔 컨셉을 제거하고, 전방 관통 아크 탄환을 빠르게 발사하는 무기로 재설계했다.
- 플레이어 좌우 포드에서 3갈래 관통탄을 빠르게 발사해 “벌컨 업그레이드” 느낌을 강화했다.
- 스킬이 화면을 덮는 긴 빛이 아니라, 방향성과 탄막 밀도가 있는 공격으로 보이게 했다.
### 긴 라이트 렌더링 제거
- `GameRenderer`의 full-screen beam `fillRect()` 렌더링을 제거했다.
- 대신 기체 앞쪽 포드에 짧은 muzzle bloom과 짧은 시안 streak만 표시하도록 변경했다.
- 화면 전체를 가리는 시각 노이즈를 줄이고, 실제 공격은 projectile 렌더링이 담당하게 했다.
### Hangar 탭 레이아웃 수정
- `UPGRADE``PASS` 탭 콘텐츠를 오른쪽 `craft-area` 내부로 이동했다.
- 이제 탭 콘텐츠가 왼쪽 `Airframe Telemetry`/`Materials` 패널과 겹치지 않는다.
- 기존 스타일을 유지하면서 구조적 렌더링 오류를 먼저 제거했다.
### Floating Text 안전 영역 처리
- `ctx.spawnText()`에서 텍스트 생성 위치를 화면 안전 영역 안으로 clamp한다.
- 왼쪽 끝/오른쪽 끝에서 적이 죽어도 보상 텍스트가 화면 밖으로 잘리거나 HUD 영역에 과하게 겹치는 현상을 줄였다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ModularWeaponSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/evolutions.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/weaponBehaviors.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/HangarOverlay.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/hooks/useGameEngine.ts`
## 검증
- `npm run build` 성공
- Vite 경고: `/sprites/player.png referenced in /sprites/player.png didn't resolve at build time`
- 위 경고는 기존 런타임 경로 경고이며 이번 변경으로 인한 빌드 실패는 아니다.
## 후속 플레이테스트 포인트
- Gatling 진화 후 더 이상 긴 레이저 기둥이 보이지 않는지 확인한다.
- `Twin Arc Vulcan`이 빠른 관통 탄막 무기로 체감되는지 확인한다.
- Hangar에서 `UPGRADES`, `EVENT PASS` 탭 선택 시 왼쪽 패널과 콘텐츠가 겹치지 않는지 확인한다.
- 전투 보상 텍스트가 화면 가장자리에서 잘리지 않는지 확인한다.
@@ -0,0 +1,105 @@
# Skybound Tac EXP Direct Kill and UI Productization Pass
작성일: 2026-04-25 10:01 KST
## 요청 요약
- Tac Level 경험치는 적기를 처치했을 때 바로 획득하게 한다.
- 바닥에 경험치 파티클/젬이 떨어져 화면을 어지럽히지 않게 한다.
- 너무 빠른 레벨업으로 난이도 밸런스가 무너지는 문제를 완화한다.
- Hangar, HUD, Tac Level Up 등 아직 남아 있는 예전 UI 톤을 Stylized Casual Magitech 톤앤매너에 맞게 통일한다.
- `THRUST_OUTPUT`처럼 작동하지 않거나 내부 시스템 문자열처럼 보이는 UI 문구를 상품성 있게 정리한다.
## 확인한 문제
### Tac EXP
- `CombatSystem`이 적 사망 시 `spawnExpGem()`을 호출해 바닥에 경험치 젬을 생성하고 있었다.
- `ProgressionSystem`은 바닥 젬의 이동, 자석 흡수, 수집을 통해 경험치를 지급했다.
- 적 밀도가 올라갈수록 젬이 많이 쌓이고, 화면 가독성과 레벨업 속도 모두 불안정해질 수 있었다.
- 기존 젬 값은 일반몹/엘리트몹 기준으로 레벨업을 빠르게 밀어 올리는 구조였다.
### HUD 문구
- `SYSTEM_ACTIVE`, `TAC_LEVEL`, `HIGH_SCORE_SYNC`, `COMBO_LINK`, `ENERGY_CELL`, `LOCK_ON`, `HEAT_SIG`, `SHIELD_OS`, `THRUST_OUTPUT` 같은 내부 변수명 스타일 문구가 사용자에게 그대로 노출되고 있었다.
- `THRUST_OUTPUT``dodgeCooldownPct`를 읽지만 엔진에서 값을 갱신하지 않아 실질적으로 반응하지 않는 상태였다.
### Hangar UI
- 장비 카드가 빈 박스처럼 보이며 아이템명/레벨/스탯 정보가 충분히 드러나지 않았다.
- 탭 이름과 슬롯 이름이 기능적이지만 상품 화면처럼 자연스럽지는 않았다.
- 전체 스타일이 이전의 얇은 선, 어두운 반투명 박스 중심이라 현재 게임의 굵은 외곽선/밝은 마법 액센트 톤과 어긋났다.
## 적용한 변경
### Tac EXP 직접 지급
- `CombatSystem`에서 적 사망 시 더 이상 `spawnExpGem()`을 호출하지 않는다.
- 대신 `ctx.grantTacExp()`를 통해 처치 즉시 경험치를 지급한다.
- 일반 적: `+1 TAC`
- 엘리트 적: `+5 TAC`
- 미드 보스: `+16 TAC`
- 엘리트 이상만 짧은 `+TAC` 텍스트 피드백을 표시해 화면 노이즈를 줄였다.
- 바닥 경험치 젬은 신규 생성되지 않으므로, 플레이 중 먹을 수 없는 파란 점/구슬이 쌓이는 문제가 사라진다.
### 레벨업 속도 완화
- `ProgressionSystem.grantExp()`를 추가해 직접 경험치 지급과 기존 젬 수집 지급을 한 곳에서 처리한다.
- Spike 전 EXP 부스트는 최대 `x1.25`로 제한했다.
- 기존 레벨업 lockout과 carryover cap은 유지해 연속 레벨업 폭주를 방지한다.
### HUD 상품성 개선
- `HIGH_SCORE_SYNC``Best Run`
- `SYSTEM_ACTIVE``Falcon Online`
- `TAC_LEVEL``Tactical Level`
- `THRUST_OUTPUT``Afterburner`
- `ENERGY_CELL``Hull Core`
- `COMBO_LINK``Chain Bonus`
- `LOCK_ON``Lock-On`
- `HEAT_SIG``Heat Trace`
- `SHIELD_OS``Guard Field`
- 페이즈 표시도 `BOSS_WARNING` 같은 내부 enum 대신 `Boss Incoming`, `Horde Surge`, `Route Secured` 같은 플레이어용 문구로 매핑했다.
- 엔진에서 `setDodgeCooldownPct()`를 실제 dodge 상태에 맞게 갱신해 Afterburner 게이지가 부스트 중 반응하도록 연결했다.
### Hangar UI 톤 통일
- Hangar 배경과 패널을 Stylized Casual Magitech 톤으로 보강했다.
- 굵은 네이비 외곽선, 청록/민트/골드 마법 액센트, 둥근 카드, 명확한 hover 피드백을 적용했다.
- 장비 카드에 아이템 타입, 이름, 레벨, ATK, HP가 보이도록 개선했다.
- 탭 이름을 `LOADOUT`, `SYNTHESIS`, `SALVAGE`, `ASTRAL FORGE`, `UPGRADES` 등 더 자연스러운 메뉴명으로 바꿨다.
- 빈 슬롯 문구를 `NO MODULE`에서 `Available mount`로 바꿨다.
- `SYSTEM MOUNTS`, `MODULE STORAGE`를 각각 `Mount Bays`, `Module Storage`로 정리했다.
### Level Up 모달 문구 개선
- `TAC LV`, `TAC LEVEL UP!`, `SELECT TACTICAL ENHANCEMENT` 중심의 시스템 문자열 느낌을 줄였다.
- 일반 레벨업: `Tactical Upgrade`
- 시작 선택: `Choose First Weapon`
- 보급 선택: `Emergency Supply`
- 카드 문구도 `NEW ACQUISITION`에서 `New module`로 완화했다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/hooks/useGameEngine.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/HUDOverlay.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/HangarOverlay.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/HangarOverlay.css`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.tsx`
## 검증
- `npm run build` 성공
- Vite 경고: `/sprites/player.png referenced in /sprites/player.png didn't resolve at build time`
- 위 경고는 기존 런타임 경로 경고이며 이번 변경으로 인한 빌드 실패는 아니다.
- 주요 내부 문자열 검색 결과, 요청에서 지적된 `SYSTEM_ACTIVE`, `THRUST_OUTPUT`, `TAC_LEVEL`, `HIGH_SCORE_SYNC`, `COMBO_LINK`, `ENERGY_CELL`, `LOCK_ON`, `HEAT_SIG`, `SHIELD_OS`는 현재 게임 UI 코드에서 제거되었다.
## 후속 플레이테스트 포인트
- 적 처치 후 바닥에 경험치 젬이 신규로 생성되지 않는지 확인한다.
- 일반몹을 많이 잡아도 Tac Level이 연속 폭주하지 않는지 확인한다.
- Afterburner 게이지가 회피/부스트 중 시각적으로 반응하는지 확인한다.
- Hangar 장비 카드가 더 이상 빈 회색 박스처럼 보이지 않고 아이템 정보를 명확히 보여주는지 확인한다.
@@ -0,0 +1,116 @@
# Skybound Vampire Survivors Loop and Stage Curve Preparation
작성일: 2026-04-25 23:52 KST
## 요청 요약
- Skybound가 뱀파이어 서바이벌 계열 게임처럼 느껴지도록 재미 요소와 스테이지별 레벨 구조를 준비한다.
- 단순히 적을 많이 내보내는 것이 아니라, 성장 선택, 밀도 상승, 진화 완성, 보스 체크포인트가 자연스럽게 이어지도록 만든다.
## 핵심 방향
Skybound는 탑다운 생존 슈터이지만, 기존 구조는 스테이지 시간이 짧고 보스 진입이 빨라 빌드가 완성되기 전에 전투가 끊기는 문제가 있었다. 뱀서류 재미를 만들려면 다음 루프가 안정적으로 반복되어야 한다.
1. 초반: 첫 무기 선택 후 약한 적을 많이 처치하며 빠르게 1-2회 성장한다.
2. 중반: 적 밀도와 엘리트 압박이 올라가며 광역/관통/방어 선택의 의미가 생긴다.
3. 후반: 스웜과 미니보스가 들어오며 빌드 조합과 진화 무기가 필요해진다.
4. 보스: 완성된 빌드가 제대로 작동하는지 검증한다.
5. 다음 스테이지: 같은 빌드를 이어가되 적 밀도, 패턴, 보스 기믹이 상승한다.
## 적용한 변경
### 8스테이지 Survivor 프로필 추가
`CombatTimeline.ts``SURVIVOR_STAGE_PROFILES`를 추가했다. 각 스테이지는 아래 정보를 가진다.
- 스테이지 이름
- 스테이지 길이
- 기본 난이도 배율
- 동시 적 수 기준
- 스폰 템포
- 오프닝 웨이브
- 압박 엘리트 웨이브
- 스웜 웨이브
- 클라이맥스 엘리트 웨이브
- 미니보스 체크포인트
### 스테이지별 구조
- Stage 1 `First Contact`: 첫 무기와 기본 생존 학습
- Stage 2 `Fast Lanes`: 빠른 적과 이동 압박
- Stage 3 `Ruined Circuit`: 혼합 편대와 엘리트 압박
- Stage 4 `Crossfire Grid`: 길막/라인 클리어 압박
- Stage 5 `Magma Forge`: 고밀도 스웜 시작
- Stage 6 `Storm Foundry`: 빌드 완성 요구
- Stage 7 `Arcane Collapse`: 진화 무기 권장
- Stage 8 `Final Singularity`: 완성 빌드 검증
### 스테이지 시간 조정
기존 Standard 스테이지는 약 165초부터 시작해 빌드업 시간이 부족했다. 새 구조에서는 Stage 1이 240초, Stage 8이 420초까지 증가한다.
이렇게 하면 플레이어는 한 스테이지 안에서 다음 리듬을 경험할 수 있다.
- 0-25%: 세팅과 첫 성장
- 25-48%: 엘리트 압박
- 48-72%: 스웜 압박
- 72%-보스 전: 클라이맥스와 미니보스
- 마지막 35초 전후: 보스전 진입
### 스폰 밀도 조정
- 적 하드캡을 56에서 76으로 올렸다.
- 스웜 배치 단위를 6에서 8로 올렸다.
- 기본 절차 스폰 간격을 96프레임에서 84프레임으로 줄였다.
목표는 “가만히 있어도 클리어”가 아니라, 점점 밀려오는 압박을 움직임과 빌드 선택으로 해결하게 만드는 것이다.
### Tac EXP 커브 조정
바닥 EXP 젬을 다시 뿌리지는 않고, 처치 즉시 Tac EXP를 지급하는 현재 방향을 유지했다. 다만 뱀서류 성장 리듬을 만들기 위해 처치 경험치를 조정했다.
- 일반 적: `+2 TAC`
- 엘리트 적: `+10 TAC`
- 미드보스: `+30 TAC`
초기 요구 EXP는 `90`에서 `80`으로 낮췄다. 대신 레벨업 후 초과 EXP carryover는 25%만 유지해 연속 레벨업 폭주는 막는다.
레벨 요구량 배율은 아래처럼 조정했다.
- Level 1-4: `x1.34`
- Level 5-8: `x1.42`
- Level 9-14: `x1.52`
- Level 15+: `x1.62`
## 설계 의도
이번 변경은 “Vampire Survivors의 재미”를 다음 요소로 해석했다.
- 적은 점점 많아진다.
- 플레이어는 더 자주 선택하고 강해진다.
- 선택에는 빌드 방향성이 있다.
- 중반 이후에는 광역, 관통, 방어, 기동 중 최소 하나가 부족하면 압박을 느낀다.
- 보스는 단절된 엔딩이 아니라 빌드 검증 구간이다.
- 다음 스테이지는 새 게임이 아니라 이전 빌드의 확장 시험이다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/CombatTimeline.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/SpawnerSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/store/useGameStore.ts`
## 검증
- `npm run build` 성공
- Vite 경고: `/sprites/player.png referenced in /sprites/player.png didn't resolve at build time`
- 위 경고는 기존 런타임 경로 경고이며 이번 변경으로 인한 빌드 실패는 아니다.
## 후속 작업 제안
- 각 스테이지별 고유 몬스터 역할 비중을 더 명확히 분리한다.
- 스테이지별 보스 패턴을 현재보다 더 강하게 차별화한다.
- 진화 무기별 화면 가독성과 성능을 플레이테스트로 검증한다.
- 미니보스 처치 시 보물상자/카드 선택 보상을 확정 지급하는 구조를 추가하면 뱀서류 보상감이 더 강해진다.
@@ -0,0 +1,123 @@
# Skybound Enemy Motion Damage Pressure and Projectile Visual Pass
작성일: 2026-04-26 12:46 KST
## 요청 요약
- Stage 1 적기의 이동이 어디에 낀 것처럼 바들바들 떨리는 문제를 개선한다.
- 적 공격 데미지가 사용자 Tac Level에 정비례해서 오르는 느낌이 아니라, 소폭만 상승하도록 조정한다.
- 사용자 기체의 일반 공격 탄환과 Gatling 탄환이 단순 렌더링 도형처럼 보여 아쉬운 문제를 개선한다.
- 스킬과 탄환의 비주얼을 Skybound의 Stylized Casual Magitech 톤앤매너에 맞춰 더 상품성 있게 다듬는다.
## 핵심 문제
### 적 이동 떨림
Stage 1에서 보이는 적기의 떨림은 주로 추적형 AI가 플레이어 근처에서 목표점을 매 프레임 다시 계산하면서 발생했다. 목표를 향해 직선 이동하다가 너무 가까워지면 다음 프레임에 방향이 반대로 튀고, 여기에 회전값도 즉시 플레이어를 향해 바뀌면서 시각적으로 “끼어서 떠는” 것처럼 보였다.
### 적 데미지 상승
적 데미지는 스테이지와 페이즈 압박에 따라 올라가야 하지만, 사용자 Tac Level과 동일한 폭으로 오르면 성장 보상이 무효화된다. 따라서 Tac Level은 적 데미지에 아주 작은 압박 보정만 주는 것이 맞다.
### 플레이어 탄환 비주얼
기본 공격과 Gatling 탄환은 기존 Canvas 사각형/막대 형태가 남아 있어, 현재 게임의 마법공학 기체와 스킬 아이콘 퀄리티에 비해 완성도가 낮게 보였다.
## 적용한 변경
### 적 회전 안정화
적기의 회전을 즉시 목표 각도로 바꾸지 않고 `smoothEnemyRotation`을 통해 보간한다.
이제 적은 플레이어를 향해 부드럽게 회전하며, 근거리에서 회전값이 프레임마다 튀는 현상이 줄어든다.
### 추적형 적 이동 안정화
`chase` 패턴에 속도 보간과 근거리 감속을 추가했다.
- 목표점으로 바로 이동하지 않고 `vx`, `vy`를 보간한다.
- 플레이어와 너무 가까워지면 속도를 줄인다.
- 일정 거리 안으로 들어오면 살짝 밀려나며 겹침을 완화한다.
### 적끼리 겹침 완화
`applyEnemySeparation`을 추가했다. 적이 서로 너무 가까이 붙으면 약하게 밀어내어, 여러 적이 한 점에 몰려 떨리는 문제를 줄인다.
적 종류별 최소 거리도 다르게 적용한다.
- 일반 적: 작은 거리
- 엘리트: 중간 거리
- 미니보스: 더 큰 거리
### 적 데미지 보정 완만화
기존에는 페이즈 난이도 배율이 탄속/데미지에 직접적으로 강하게 반영될 수 있었다. 이제 아래처럼 완만하게 조정했다.
- 탄속은 페이즈 배율을 직접 곱하지 않고 작은 `phaseSpeedPressure`만 반영한다.
- 데미지는 스테이지 커브를 기본으로 하되 `phaseDamagePressure`를 제한적으로 적용한다.
- 사용자 Tac Level은 최대 `+18%`까지만 적 데미지에 반영한다.
의도는 다음과 같다.
- 플레이어가 성장해도 적이 완전히 무력해지지는 않는다.
- 하지만 플레이어 레벨이 올랐다고 적 데미지가 같은 폭으로 따라오지는 않는다.
- 성장 보상은 유지하고, 긴장감만 조금 보강한다.
### 플레이어 탄환 비주얼 개선
기본 탄환, Gatling 탄환, Rayce 탄환, 드론 탄환에 `visualKind`를 부여했다.
추가된 visualKind:
- `arc_bolt`
- `gatling_round`
- `rayce_lance`
- `micro_missile`
- `arc_vulcan`
- `drone_shot`
### Magitech Projectile Renderer 추가
`GameRenderer``renderMagitechProjectile`을 추가했다. 기존 사각형 탄환 대신 아래 요소를 가진 발사체로 렌더링된다.
- 밝은 코어
- 마법공학 외곽 라인
- 발사 방향 꼬리광
- 글로우
- 작은 룬/핀 라인
- 기체/무기별 색상 차이
Gatling은 골드빛 짧은 고속탄, 기본 Falcon 탄은 시안 아크 볼트, Rayce는 마젠타 랜스형 탄환으로 보이게 했다.
## 설계 의도
이번 변경은 조작감과 시각 품질을 동시에 개선하는 작업이다.
적 이동은 “불안정한 버그처럼 보이는 흔들림”이 아니라, 의도된 추적/회피 압박처럼 보여야 한다. 또한 적 데미지는 플레이어 성장과 같은 폭으로 따라오면 안 된다. 플레이어는 강해져야 하고, 적은 그 강함을 무효화하지 않는 선에서 압박을 유지해야 한다.
탄환 비주얼은 Skybound의 가장 자주 보는 이펙트이므로, 단순 도형이 남아 있으면 전체 완성도를 낮춘다. 이번 변경으로 기본 공격도 스킬과 같은 톤의 Magitech 무장처럼 보이게 했다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ModularWeaponSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/PlayerSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/SpawnerSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/WeaponBehaviorEngine.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
## 검증
- `npm run build` 성공
- `/sprites/player.png` 경고 없음
- 출력 디렉터리: `dist/23`
## 후속 플레이테스트 체크 포인트
- Stage 1 일반 적이 플레이어 근처에서 바들바들 떨지 않는지 확인한다.
- 적이 겹칠 때 자연스럽게 분산되는지 확인한다.
- Tac Level이 올라가도 적 데미지가 과하게 따라오지 않는지 확인한다.
- Falcon 기본탄과 Gatling 탄환이 사각형 도형이 아니라 마법공학 발사체처럼 보이는지 확인한다.
- Rayce 탄환이 Falcon과 충분히 구분되는지 확인한다.
- 이후 스킬별 전용 Canvas/PNG 이펙트를 더 세분화할지 결정한다.
@@ -0,0 +1,172 @@
# Skybound HP Scarcity and Module Cache Rewards
작성일: 2026-04-26 13:01 KST
## 요청 요약
- Stage 1 플레이 중 하트 HP 회복 아이템이 너무 자주 드롭되어 위기감이 사라지는 문제를 개선한다.
- 초반에는 어느 정도 회복을 주되, 항상 충분하게 주기보다 “조금 아쉬운” 수준으로 조정한다.
- 전투 중 모듈이 자동 지급되어 획득 재미가 떨어지는 문제를 개선한다.
- 보물 상자 혹은 모듈 상자 이미지를 만들고, 사용자 인벤토리에 stacking되게 한다.
- 상자를 열었을 때 모듈 획득 이펙트와 연출을 추가한다.
- 일반 등급은 기본 연출, 상급 이상은 개봉 중 기대감을 줄 수 있는 힌트 연출을 제공한다.
## 핵심 문제
기존 보상 구조는 적 처치 시 장비가 곧바로 `inventory`에 추가되는 방식이었다.
이 구조는 기능적으로는 빠르지만, 사용자가 다음 감각을 느끼기 어렵다.
1. 내가 무언가를 얻었다는 소유감
2. 전투 후 보상을 확인하는 기대감
3. 상자를 열 때 “이번에는 뭐가 나올까” 하는 가챠/루팅 재미
4. 등급별 보상의 차이
또한 하트 드롭은 대량의 적 처치 수와 결합되면서 체력 결핍이 거의 발생하지 않는 상태를 만들었다.
## 적용한 변경
### HP 회복 아이템 희소화
기존에는 적 처치 시 25% 확률로 필드 아이템이 나오고, 그중 일부가 HP 회복 아이템이었다.
변경 후에는 체력 상태와 쿨다운을 기반으로 HP 드롭을 계산한다.
- HP가 82% 이상이면 하트 드롭이 거의 발생하지 않는다.
- HP가 60% 미만일 때부터 하트 확률이 의미 있게 상승한다.
- HP가 35% 미만이면 긴급 회복 가능성을 열어둔다.
- 하트 드롭 후에는 기본 900프레임 쿨다운을 둔다.
- 위기 상황에서는 쿨다운을 480프레임으로 낮춰 완전한 운빨 사망은 줄인다.
- 엘리트와 미니보스는 회복/보상 드롭 가능성이 조금 더 높다.
### 회복량 조정
하트 하나가 체력을 너무 크게 회복하지 않도록 회복량을 낮췄다.
변경 전:
- 필드 하트: 최대 HP의 20%
- 회복 에어드롭: 최대 HP의 40%
변경 후:
- 필드 하트: 최대 HP의 14%
- 회복 에어드롭: 최대 HP의 32%
목표는 “살았다”는 안도감은 주되, 바로 100% 안정권으로 돌아가지 않게 만드는 것이다.
### 자동 모듈 지급 제거
일반 적 처치 시 장비가 직접 지급되는 흐름을 제거했다.
변경 후:
- 일반 적은 장비/모듈 캐시를 지급하지 않는다.
- 엘리트, 미니보스, 보스 보상은 즉시 장비 지급이 아니라 `Module Cache`로 전환된다.
- 캐시는 격납고 인벤토리에 stacking된다.
- 실제 장비는 사용자가 캐시를 열 때 생성된다.
이제 전투 중에는 “보상 상자를 회수했다”는 흐름이 되고, 장비 획득은 격납고에서 별도 개봉 경험으로 분리된다.
### Module Cache 인벤토리 추가
`useGameStore``moduleCaches` 상태와 액션을 추가했다.
추가된 액션:
- `addModuleCache(cache)`
- `openModuleCache(cacheId)`
`openModuleCache`는 캐시의 등급과 클래스 정보를 기반으로 장비를 생성하고, 해당 장비를 `inventory``isNew` 상태로 추가한다.
### Module Cache 이미지 추가
톤앤매너에 맞춘 Stylized Casual Magitech 상자 SVG를 추가했다.
특징:
- 굵은 외곽선
- 시안/라임 마력 코어
- 블루 메탈 케이스
- 골드 띠 장식
- 상자 개봉 UI에서 재사용 가능한 벡터 에셋
추가 파일:
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/module_cache.svg`
### 격납고 Module Cache UI 추가
`HangarOverlay`의 Loadout 탭에 `Module Caches` 섹션을 추가했다.
UI 동작:
- 같은 등급/클래스/출처의 캐시는 하나의 카드로 stacking 표시된다.
- 카드에는 `xN` 카운트가 표시된다.
- Elite Cache, Command Cache, Boss Cache 출처가 표시된다.
- 클릭하면 해당 캐시 1개를 개봉한다.
### 등급별 개봉 연출 추가
캐시 개봉 시 별도 오버레이가 뜨도록 했다.
연출 구성:
- 어두운 배경 블러
- 캐시 중심 이미지
- 등급 색상 기반 발광
- 회전하는 아케인 링
- 작은 마력 스파크
- 개봉 중 힌트 텍스트
- 최종 모듈 이름/타입/스탯 공개
일반 등급은 짧은 기본 개봉으로 처리하고, GOOD 이상은 개봉 중 다음 힌트를 보여준다.
- 모듈 타입 신호
- 보상 출처
- 등급 신호 안정화 문구
이를 통해 상급 이상 상자는 결과 공개 전 기대감을 주는 구조로 만들었다.
## 설계 의도
이번 패스의 목표는 Stage 1의 생존 긴장감과 보상 기대감을 동시에 살리는 것이다.
하트는 플레이어를 완전히 방치하지 않되, 항상 충분하게 주지 않는다.
모듈은 자동 지급에서 상자 개봉으로 바꿔 다음 루프를 만든다.
1. 전투에서 엘리트/보스 처치
2. 모듈 캐시 획득
3. 격납고로 복귀
4. 캐시 stack 확인
5. 캐시 개봉
6. 모듈 획득
7. 장착/합성/분해 선택
이 구조는 Vampire Survivors류의 런 성장과 Survivor.io류의 메타 보상 사이를 이어주는 역할을 한다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/public/sprites/module_cache.svg`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/store/useGameStore.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/StageDirectorSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/HangarOverlay.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/HangarOverlay.css`
## 검증
- `npm run build` 성공
- `/sprites/player.png` 경고 없음
- 출력 디렉터리: `dist/24`
## 후속 플레이테스트 체크 포인트
- Stage 1 초반 하트가 너무 부족해서 불합리하게 느껴지지 않는지 확인한다.
- Stage 1 중반 이후 체력이 즉시 100%로 복구되는 빈도가 줄었는지 확인한다.
- 엘리트/보스 처치 후 캐시 획득 문구가 보상처럼 느껴지는지 확인한다.
- 격납고에서 캐시 stack UI가 충분히 명확한지 확인한다.
- GOOD 이상 캐시 개봉 시 “뭐가 나올까” 하는 기대감이 생기는지 확인한다.
- 캐시 개봉 후 모듈이 `Module Storage`에 자연스럽게 추가되는지 확인한다.
@@ -0,0 +1,133 @@
# Skybound Invasion Response Stage Difficulty Curve
작성일: 2026-04-26 13:08 KST
## 요청 요약
- Stage 8 보스가 지구를 침략한 핵심 적이라는 스토리 구조를 난이도 곡선에 반영한다.
- 초반에는 플레이어를 얕보고 소수의 적기만 보내는 느낌으로 시작한다.
- 스테이지를 클리어할수록 보스가 플레이어를 점점 더 위험하게 판단하고, 단계적으로 더 많은 적기를 투입한다.
- 적기의 수가 줄어든 구간은 너무 쉬워질 수 있으므로 적기의 공격력을 비례해서 보정한다.
## 핵심 방향
이번 패스는 단순히 숫자를 올리는 밸런스가 아니라 “침공군의 대응 수위”를 만드는 작업이다.
설계 기준은 다음과 같다.
1. Stage 1: 정찰대. 적 수는 적지만 한 발은 무시할 수 없다.
2. Stage 2: 빠른 대응기 투입. 아직 소규모지만 반응 속도가 오른다.
3. Stage 3: 혼합 편대. 보스가 플레이어를 실제 변수로 인식한다.
4. Stage 4: 제압 작전. 십자/라인 압박이 본격화된다.
5. Stage 5: 전면 공격 승인. 적 수가 확실히 늘어난다.
6. Stage 6: 제거 함대. 빌드 완성도를 검증한다.
7. Stage 7: 예비 전력 투입. 물량과 엘리트 압박이 커진다.
8. Stage 8: 지구 침공 본대. 최대 물량과 최대 화력으로 압박한다.
## 적용한 변경
### Stage Profile 재정렬
`SURVIVOR_STAGE_PROFILES`를 8단계 침공 대응 곡선으로 재배치했다.
변경된 주요 축:
- `diffBase`
- `capBase`
- `spawnTempo`
- opening wave density
- swarm density
- climax elite density
- comms 문구
### 초반 적 수 감소
Stage 1과 Stage 2는 보스가 플레이어를 얕보는 단계로 설정했다.
Stage 1 변경:
- `capBase: 18``12`
- `spawnTempo: 1.0``1.18`
- opening density: `8``4`
- swarm density: `18``12`
- climax elite density: `3``2`
Stage 2 변경:
- `capBase: 28``16`
- `spawnTempo: 0.86``1.02`
- opening density: `14``7`
- swarm density: `24``16`
- climax elite density: `4``3`
초반에는 화면을 적으로 가득 채우기보다, 각 적기의 진입과 탄환을 플레이어가 인식할 수 있게 만들었다.
### 중후반 적 수 증가 곡선 강화
Stage 5부터는 침공군이 실제로 플레이어 제거를 목표로 움직이는 느낌을 강화했다.
후반 주요 변화:
- Stage 5 `capBase: 40``34`, 대신 `diffBase: 1.42``1.54`
- Stage 6 `capBase: 46``42`, `diffBase: 1.58``1.74`
- Stage 7 `capBase: 52``50`, `diffBase: 1.76``1.96`
- Stage 8 `capBase: 58``60`, `diffBase: 1.96``2.22`
- Stage 8 swarm density: `60``68`
- Stage 8 climax elite density: `10``12`
Stage 5-7은 성능과 가독성을 고려해 단순 물량만 폭증시키지 않고, 공격 위협을 함께 올렸다.
### 공격력 보정
적 수가 줄어든 스테이지가 너무 쉬워지는 것을 방지하기 위해 `DAMAGE_CURVE`를 상향했다.
변경 전:
- `[0.95, 1.08, 1.24, 1.44, 1.68, 1.96, 2.28, 2.65]`
변경 후:
- `[1.08, 1.16, 1.32, 1.52, 1.78, 2.08, 2.44, 2.88]`
의도는 “적 수가 적으면 회피 기회가 많아지는 만큼, 맞았을 때는 실수로 느껴지게 하는 것”이다.
### Comms 서사 반영
스테이지 시작/주요 웨이브 문구를 침공 대응 서사에 맞게 수정했다.
예시:
- Stage 1: `Scout flight detected. The invader is probing our response.`
- Stage 2: `Stage 2: the invader is testing faster response craft.`
- Stage 4: `Stage 4: the invader is no longer probing. Suppression grid active.`
- Stage 8: `Stage 8: planetary invasion force confirmed. Survive the crush.`
## 설계 의도
이번 변경의 핵심은 플레이어가 난이도 상승을 “게임이 갑자기 어려워졌다”가 아니라 “보스가 나를 점점 더 심각한 위협으로 보고 있다”라고 받아들이게 만드는 것이다.
초반은 적 수가 줄어들었기 때문에 회피와 학습의 여유가 있다.
하지만 공격력은 낮추지 않고 오히려 보정했기 때문에, 가만히 있어도 쉽게 깨지는 구조는 피한다.
후반은 플레이어 빌드가 강해지는 것을 전제로, 적 수와 공격력이 함께 올라간다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/CombatTimeline.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/balance.ts`
## 검증
- `npm run build` 성공
- `/sprites/player.png` 경고 없음
- 출력 디렉터리: `dist/25`
## 후속 플레이테스트 체크 포인트
- Stage 1 초반이 “적이 적어서 심심한지” 또는 “소수지만 긴장감이 있는지” 확인한다.
- Stage 1에서 맞았을 때 피격이 의미 있게 느껴지는지 확인한다.
- Stage 2가 Stage 1보다 확실히 대응 수위가 올라간 것처럼 느껴지는지 확인한다.
- Stage 3-4에서 혼합 편대/제압 작전으로 플레이 양상이 달라지는지 확인한다.
- Stage 5 이후부터 물량 증가가 명확하게 느껴지는지 확인한다.
- Stage 8이 최종 침공군답게 가장 강한 물량과 화력을 보여주는지 확인한다.
@@ -0,0 +1,111 @@
# Skybound Low Level First Upgrade Offer Balance
작성일: 2026-04-26 13:16 KST
## 요청 요약
- 게임 플레이 중 Tactical Level Up으로 무기/스킬 업그레이드 후보가 나온다.
- 이미 많이 레벨업한 무기가 계속 후보에 자주 나오면 특정 무기 몰빵이 쉬워진다.
- 레벨이 낮은 무기/스킬이 다음 후보에 포함될 확률을 더 높인다.
- 레벨이 높은 무기/스킬은 낮은 레벨 스킬 대비 후보 포함 확률을 낮춘다.
## 핵심 문제
기존 `ProgressionSystem.generateSkillCards()`는 이미 보유한 스킬과 near-max 스킬에 보너스를 주는 구조였다.
기존 구조의 문제:
1. 한 무기가 빠르게 고레벨까지 몰릴 수 있다.
2. Lv4 → Lv5 직전 스킬이 자주 후보에 떠서 성장 속도가 급격해진다.
3. 다양한 무기를 경험하기보다 가장 강한 무기 하나가 빠르게 완성된다.
4. Stage 1-2 중반부터 빌드가 너무 빨리 안정화될 수 있다.
## 적용한 변경
### 후보 선택 방식 변경
기존에는 카테고리별로 후보를 고르고, 보유/시너지/near-max에 가중치를 더했다.
변경 후에는 각 스킬마다 `offer weight`를 계산한다.
가중치 기준:
- 남은 레벨이 많을수록 가중치 증가
- Lv0/Lv1 스킬은 상대적으로 더 자주 등장
- Lv3 이상 스킬은 가중치 감소
- max 직전 스킬은 강하게 가중치 감소
- 시너지/EVO 보너스는 유지하되, 고레벨 스킬을 압도적으로 밀어주지는 않음
### 고레벨 몰빵 완화
Near-max 스킬은 기존에 오히려 보너스를 받았지만, 이제는 낮은 확률로만 나온다.
적용 규칙:
- `currentLevel >= maxLevel - 1`: 가중치 35%로 감소
- `currentLevel >= maxLevel * 0.6`: 가중치 58%로 감소
예시:
- Lv0/Lv1 스킬: 목록에 더 잘 등장
- Lv3/Lv4 스킬: 등장 가능하지만 낮은 빈도
- Lv4 → Lv5 완성: 운이 좋아야 뜨는 마무리 선택으로 변경
### 첫 선택 보정
아직 아무 스킬도 없는 첫 Tactical Level Up에서는 새 무기 후보를 우선 제공한다.
목표는 첫 선택이 빌드 방향을 정하는 순간으로 작동하게 하는 것이다.
### 새 무기 확장 선택 유지
이미 스킬을 보유한 이후에도 새 무기 후보가 완전히 사라지지는 않는다.
변경 후:
- 슬롯 여유가 있고 새 무기가 있으면 65% 확률로 하나의 build-expanding option을 제공한다.
- 나머지 후보는 전체 가중치 풀에서 선택한다.
### Mini-boss Reward Cache 보정
미니보스 보상 카드도 가장 높은 레벨 무기를 무조건 우선하지 않도록 변경했다.
변경 후에는 보유 무기 중에서도 낮은 레벨/남은 성장 여지가 큰 무기가 더 잘 선택된다.
### UI fallback 보정
일반적으로 카드 후보는 엔진에서 생성되지만, 예외적으로 `LevelUpModal`에서 fallback 랜덤이 동작할 수 있다.
이 fallback도 동일한 low-level-first 가중치 규칙을 따르도록 변경했다.
## 설계 의도
이번 변경의 목표는 성장 속도를 늦추는 것만이 아니다.
플레이어가 한 무기를 빠르게 완성해 “이미 빌드가 끝났다”라고 느끼는 시점을 뒤로 미루고, 여러 선택지 사이에서 더 오래 고민하게 만드는 것이 핵심이다.
원하는 플레이 감각:
1. 초반에는 새 무기와 낮은 레벨 무기가 자주 보인다.
2. 중반에는 빌드 방향을 넓히거나 약한 축을 보완하게 된다.
3. 고레벨 완성 선택은 자주 뜨지 않지만, 떴을 때 반갑다.
4. 특정 무기 하나가 너무 빨리 완성되어 난이도를 붕괴시키는 일이 줄어든다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.tsx`
## 검증
- `npm run build` 성공
- `/sprites/player.png` 경고 없음
- 출력 디렉터리: `dist/26`
## 후속 플레이테스트 체크 포인트
- Stage 1에서 같은 무기가 너무 빠르게 Lv4/Lv5까지 올라가지 않는지 확인한다.
- 낮은 레벨 무기/패시브가 기존보다 자주 후보에 뜨는지 확인한다.
- 고레벨 완성 선택이 너무 안 떠서 답답하지 않은지 확인한다.
- EVO 경로가 완전히 막힌 느낌이 들지 않는지 확인한다.
- 미니보스 보상 카드가 여전히 보상답게 느껴지는지 확인한다.
@@ -0,0 +1,109 @@
# Skybound Miniboss Treasure Cache Reward Loop
작성일: 2026-04-26 09:32 KST
## 요청 요약
- 뱀파이어 서바이벌 계열의 재미를 더 강하게 만들기 위한 다음 단계로, 미니보스 처치 보상 루프를 추가한다.
- 단순 EXP 성장만 반복되는 구조가 아니라, 중간 강적을 잡았을 때 빌드 방향을 강화하는 확정 보상을 제공한다.
- 보상은 기존 Tac Level Up 화면을 재사용하되, 보물상자 성격의 `Emergency Supply` 카드 선택으로 연결한다.
## 핵심 방향
Skybound의 현재 전투 루프는 적을 처치하면 Tac EXP를 바로 얻고, 일정 EXP에 도달하면 업그레이드를 선택하는 구조다. 이 방식은 화면 가독성에는 좋지만, 플레이 중간에 “강적을 잡아서 특별한 보상을 얻었다”는 뱀서류 특유의 보상감이 부족했다.
이번 변경의 목표는 미니보스를 다음 역할로 재정의하는 것이다.
1. 전투 흐름 중간의 압박 체크포인트
2. 플레이어 빌드가 충분히 강한지 확인하는 작은 검증 구간
3. 처치하면 현재 빌드를 더 선명하게 만드는 확정 업그레이드 보상
4. 보스 전 진화/EVO 경로를 완성할 기회를 주는 중간 보물상자
## 적용한 변경
### 미니보스 식별 플래그 추가
기존 `MINI_BOSS` 스폰은 내부적으로 `ELITE` 적을 생성했기 때문에, 처치 시 일반 엘리트와 구분되는 보상 처리가 어려웠다. `SystemEnemy`에 아래 플래그를 추가했다.
- `isMiniBoss`
- `rewardClaimed`
`SpawnerSystem``MINI_BOSS` 스폰에서는 이제 `isMiniBoss: true`를 부여한다.
### 미니보스 HP 스케일링
미니보스가 후반 스테이지에서도 너무 빨리 녹지 않도록 스테이지와 난이도 배율을 반영했다.
- 기본 HP: `620`
- 스테이지당 증가: `+22%`
- 현재 `difficultyMult` 반영
의도는 미니보스가 보스만큼 길지는 않지만, 플레이어가 위치와 공격 방향을 신경 써야 하는 짧은 전투 목표가 되게 하는 것이다.
### 처치 보상 인텐트 추가
`EngineProtocol``MINIBOSS_REWARD` 인텐트를 추가했다. `CombatSystem`은 미니보스 처치 시 직접 UI를 열지 않고, 엔진 인텐트를 통해 보상 처리를 요청한다.
이렇게 한 이유는 다음과 같다.
- 전투 시스템이 UI 상태를 직접 제어하지 않게 한다.
- 기존 `LEVEL_UP` 이벤트와 `LevelUpModal` 흐름을 재사용한다.
- 추후 보물상자 연출, 룰렛, 보상 티어를 추가하기 쉽다.
### 빌드 우선 보상 카드 생성
`ProgressionSystem``generateMiniBossRewardCards`를 추가했다. 이 보상은 일반 레벨업 카드보다 더 전략적으로 구성된다.
우선순위는 다음과 같다.
1. 이미 보유한 무기/스킬의 레벨업
2. Lv.3 이상 무기의 EVO에 필요한 서포트 패시브
3. 스웜/압박 구간 대응용 `isSpikeCounter` 스킬
4. 부족한 자리는 기존 3카드 생성 규칙으로 보충
이 구조는 플레이어가 아무 카드나 고르는 것이 아니라, “내 빌드를 완성해가는 선택”을 하도록 유도한다.
### 보상 UI 연결
미니보스 처치 시 아래 흐름으로 동작한다.
1. 미니보스 사망
2. `CombatSystem``MINIBOSS_REWARD` 인텐트 발행
3. `useGameEngine`이 현재 스킬 상태를 기반으로 보상 카드 생성
4. 게임 일시정지
5. `LEVEL_UP` 이벤트를 `isChest: true`로 발행
6. 기존 `Emergency Supply` 카드 선택 UI 표시
7. `COMMAND CACHE UNLOCKED` 피드백 텍스트 출력
## 설계 의도
이 변경은 Skybound의 목적성을 더 명확하게 만들기 위한 작업이다.
- 일반 적 처치: Tac EXP를 쌓는 기본 성장
- 엘리트 처치: 더 많은 EXP와 재료/장비 가능성
- 미니보스 처치: 확정 빌드 강화 선택
- 스테이지 보스 처치: 다음 스테이지 진행과 영구 보상
즉, 전투 중 목표가 “그냥 버티기”에서 “위험한 타이밍을 넘기고 빌드를 완성하기”로 바뀐다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/hooks/useGameEngine.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/EngineProtocol.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/SpawnerSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
## 검증
- `npm run build` 성공
- Vite 경고: `/sprites/player.png referenced in /sprites/player.png didn't resolve at build time`
- 위 경고는 기존 런타임 경로 경고이며 이번 변경으로 인한 빌드 실패는 아니다.
## 후속 작업 제안
- 미니보스 처치 순간에 실제 상자/코어가 열리는 0.6초 전용 연출을 추가한다.
- 보상 카드에 `EVO READY`, `BUILD CORE`, `SURVIVAL PICK` 같은 태그를 붙여 선택 이유를 더 명확하게 보여준다.
- 스테이지별 미니보스 외형과 탄막 패턴을 분리해 “이번 스테이지의 중간 위협” 정체성을 강화한다.
- 보물상자 보상을 1장 선택에서 3장 순차 오픈 또는 희귀도 보상으로 확장할지 플레이테스트 후 결정한다.
@@ -0,0 +1,63 @@
# Skybound Player Sprite Path Warning Fix
작성일: 2026-04-26 12:11 KST
## 요청 요약
- `npm run build` 시 반복되던 `/sprites/player.png referenced in /sprites/player.png didn't resolve at build time` 경고를 해결한다.
- 필요하다면 Skybound의 Stylized Casual Magitech 톤앤매너에 맞는 플레이어 기체 이미지를 새로 준비한다.
## 원인
경고의 원인은 실제 플레이 중 사용되는 Canvas 렌더링이 아니라, 선택 화면 CSS에서 존재하지 않는 `/sprites/player.png`를 참조하고 있었기 때문이다.
문제 위치는 `src/App.css`의 아래 클래스였다.
- `.plane-preview.falcon`
- `.plane-preview.rayce`
현재 프로젝트에는 `/sprites/player.png`가 없고, 실제 준비된 기체 에셋은 아래 파일이다.
- `/sprites/Falcon.png`
- `/sprites/rayce.png`
따라서 새 이미지를 생성하기보다, 이미 톤앤매너에 맞춰 준비된 실제 기체 에셋으로 경로를 정리하는 것이 적절했다.
## 적용한 변경
### Falcon 미리보기 경로 수정
`/sprites/player.png``/sprites/Falcon.png`로 교체했다.
### Rayce 미리보기 경로 수정
Rayce도 같은 `player.png``hue-rotate`를 걸어 임시로 표현하고 있었기 때문에, 실제 `/sprites/rayce.png`를 직접 사용하도록 바꿨다.
또한 임시 색상 변환 필터를 제거했다.
## 설계 의도
선택 화면은 사용자가 처음 기체의 정체성을 보는 곳이기 때문에, 존재하지 않는 공용 `player.png`나 임시 색상 변환보다 실제 기체별 에셋을 보여주는 편이 상품성 측면에서 낫다.
이번 수정으로 다음 효과가 있다.
- Vite 빌드 경고 제거
- Falcon/Rayce 선택 화면 미리보기 정확도 개선
- 임시 에셋 참조 제거
- 기존 Stylized Casual Magitech 기체 에셋 재사용
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/App.css`
## 검증
- `npm run build` 성공
- 기존 `/sprites/player.png` Vite 경고 사라짐
- 출력 디렉터리: `dist/21`
## 후속 작업 제안
- 선택 화면의 기체 미리보기를 정적 배경 이미지가 아니라, Canvas 렌더러와 동일한 축소 프리뷰 컴포넌트로 통일한다.
- Falcon/Rayce의 실제 플레이 성능 차이가 UI 문구와 정확히 대응되는지 점검한다.
- 선택 화면도 현재 게임 HUD/UI 톤과 완전히 맞도록 한 번 더 정리한다.
@@ -0,0 +1,104 @@
# Skybound Reward Card Clarity and Command Cache UI
작성일: 2026-04-26 09:40 KST
## 요청 요약
- 미니보스 보상 루프 다음 단계로, 보상 카드가 왜 좋은 선택인지 사용자가 즉시 이해할 수 있게 개선한다.
- 미니보스 처치 보상과 위기 보급 보상을 같은 화면처럼 보이지 않게 구분한다.
- Stylized Casual Magitech 톤앤매너 안에서 보상감 있는 카드 선택 UI를 강화한다.
## 핵심 방향
이전 단계에서 미니보스 처치 시 확정 업그레이드 선택 보상이 추가되었다. 하지만 카드 3장이 뜨는 것만으로는 사용자가 “왜 이 보상이 지금 내 빌드에 좋은지” 바로 이해하기 어렵다.
이번 변경의 목표는 보상 화면을 단순 선택지가 아니라, 플레이어에게 다음 메시지를 전달하는 UI로 만드는 것이다.
1. 이 카드는 현재 주력 빌드를 강화한다.
2. 이 카드는 EVO 진화 경로에 필요하다.
3. 이 카드는 스웜/압박 상황에서 생존에 도움이 된다.
4. 이 카드는 새로운 공격 패턴을 열어준다.
## 적용한 변경
### 보상 출처 타입 추가
`LEVEL_UP` 이벤트에 `rewardSource`를 추가했다.
- `STARTER`
- `LEVEL_UP`
- `POWER_SPIKE`
- `MINIBOSS`
기존에는 `isChest`만 있어서 미니보스 보상과 위기 보급 보상이 모두 같은 `Emergency Supply`처럼 보였다. 이제 보상 출처에 따라 헤더, 문구, 카드 태그를 다르게 표시할 수 있다.
### 미니보스 보상 헤더 차별화
미니보스 보상은 이제 `Emergency Supply`가 아니라 `Command Cache`로 표시된다.
- Badge: `Cache`
- Title: `Command Cache`
- Subtitle: `Choose one build-defining reward`
위기 보급은 기존 의도대로 `Emergency Supply`를 유지한다.
### 카드 선택 이유 태그 추가
각 카드 상단에 보상 이유 태그를 추가했다.
- `FIRST CORE`: 첫 무기 선택, 런의 시작 방향 결정
- `CORE UPGRADE`: 현재 주력 무기 강화
- `MODULE BOOST`: 보유 패시브/모듈 강화
- `EVO LINK`: 현재 무기의 진화 조건을 지원
- `EVO READY`: 진화 조건 완성
- `SURVIVAL PICK`: 스웜/압박 구간 대응
- `NEW WEAPON`: 새로운 공격 패턴 개방
- `UTILITY MOD`: 기본 성능 강화
이 태그는 단순 라벨이 아니라, 카드가 “왜 지금 의미 있는 선택인지”를 설명하는 짧은 문장과 함께 표시된다.
### Command Cache 연출 추가
보상 화면 상단에 작은 마법공학 캐시 코어를 추가했다.
- 팝 인 애니메이션
- 회전하는 점선 링
- 미니보스 캐시는 청록/라임 계열 빛
- 일반 보급은 오렌지/시안 계열 빛
실제 게임 시간을 더 지연시키지는 않지만, 화면이 뜨는 순간 보상 상자가 열린다는 감각을 강화한다.
## 설계 의도
뱀파이어 서바이벌 계열의 재미는 단순히 레벨업을 많이 하는 것이 아니라, “내가 고른 선택 때문에 빌드가 강해지고 있다”는 확신에서 나온다.
이번 변경은 그 확신을 UI로 보강한다.
- 미니보스 처치: `Command Cache`
- 위기 보급: `Emergency Supply`
- 일반 레벨업: `Tactical Upgrade`
- 시작 선택: `Choose First Weapon`
이제 각 성장 이벤트는 같은 카드 선택이라도 서로 다른 의미를 가진다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/hooks/useGameEngine.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/GameSceneRenderer.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.css`
## 검증
- `npm run build` 성공
- Vite 경고: `/sprites/player.png referenced in /sprites/player.png didn't resolve at build time`
- 위 경고는 기존 런타임 경로 경고이며 이번 변경으로 인한 빌드 실패는 아니다.
## 후속 작업 제안
- 스테이지별 미니보스 패턴을 분리해 `Command Cache`를 얻는 과정 자체를 더 재미있게 만든다.
- 보상 카드에 실제 EVO 결과 미리보기 아이콘을 추가한다.
- 보물상자 보상을 1장 선택에서 희귀도 기반 다중 보상으로 확장할지 플레이테스트한다.
- Command Cache가 열리는 짧은 0.5초 전용 컷인/상자 오픈 애니메이션을 Canvas 위에 추가한다.
@@ -0,0 +1,136 @@
# Skybound Skill Slot Limit Weapon 5 Passive 5
작성일: 2026-04-26 13:29 KST
## 요청 요약
- 사용자가 획득할 수 있는 스킬 수량에 제한을 둔다.
- 총 10개 스킬을 보유할 수 있게 한다.
- 10개 중 5개는 무기, 5개는 패시브로 분리한다.
- 슬롯이 부족한 상태에서 새 스킬을 선택하려 하면 `슬롯이 부족합니다`에 해당하는 노티가 필요하다.
- 슬롯 제한 때문에 사용하지 못하는 스킬이 목록에 나올 수 있으므로 `Skip Upgrade` 선택지도 계속 필요하다.
- 5/5 구조가 적절한지 검토한다.
## 판단
현재 Skybound에는 무기와 패시브 풀이 이미 넓고, 8스테이지까지 성장해야 한다.
따라서 지금 시점에서는 `무기 5개 + 패시브 5개`가 적절하다.
더 줄이는 선택지도 가능하지만, 아직은 권장하지 않는다.
- 4/4는 빌드 정체성이 더 강해지는 대신 초반 선택 운 영향이 커진다.
- 5/5는 Survivor.io/Vampire Survivors류의 성장 폭과 전략성을 적당히 유지한다.
- 6/6 이상은 사용자가 거의 모든 것을 들고 가는 느낌이 강해져 빌드 선택 의미가 약해진다.
그래서 이번 패스에서는 5/5를 기본값으로 적용했다.
## 적용한 변경
### Skill Slot Limit 추가
`skills.ts`에 슬롯 제한 상수를 추가했다.
```ts
export const SKILL_SLOT_LIMITS = {
WEAPON: 5,
PASSIVE: 5,
}
```
이제 시스템 전반에서 동일한 기준을 사용한다.
### 후보 생성 필터링
`ProgressionSystem.generateSkillCards()``generateMiniBossRewardCards()`에서 슬롯 제한을 반영했다.
규칙:
- 이미 보유한 스킬은 계속 레벨업 가능하다.
- 새 무기 획득은 무기 슬롯이 5개 미만일 때만 가능하다.
- 새 패시브 획득은 패시브 슬롯이 5개 미만일 때만 가능하다.
- 슬롯이 꽉 찬 타입의 새 스킬은 정상 후보 생성에서 제외한다.
### 선택 시 슬롯 부족 방어
혹시 예외 경로로 선택 불가 카드가 들어오거나, UI/엔진 동기화 타이밍 문제로 새 스킬 선택이 들어올 수 있다.
그래서 `ProgressionSystem.applySkillSelection()`에도 최종 방어를 추가했다.
슬롯이 부족하면:
- 스킬을 추가하지 않는다.
- 게임을 재개한다.
- 전투 화면에 `WEAPON SLOTS FULL` 또는 `PASSIVE SLOTS FULL` 텍스트를 띄운다.
- 보조 텍스트로 `Choose another module or skip`을 띄운다.
### Store 레벨 방어
`useGameStore.addSkill()`에도 동일한 슬롯 제한 방어를 추가했다.
이유:
- UI나 엔진 외부에서 `addSkill()`이 호출되더라도 잘못된 스킬이 저장되지 않게 하기 위함이다.
- `__skip__`도 기존처럼 저장되지 않는다.
### Level Up UI 슬롯 상태 표시
`LevelUpModal` 상단에 현재 슬롯 상태를 표시한다.
표시:
- `Weapons 0/5`
- `Passives 0/5`
슬롯이 가득 차면 해당 배지가 붉은 톤으로 바뀐다.
### SLOT FULL 카드 표시
정상 후보 생성에서는 사용 불가 카드가 거의 나오지 않지만, 예외적으로 pre-generated cards나 fallback 상태에서 들어올 수 있다.
이 경우 카드에 다음 표시를 추가했다.
- `SLOT FULL` 태그
- `No empty weapon/passive slot` 설명
- `WEAPON slots are full` 또는 `PASSIVE slots are full`
사용자는 이때 새로 추가된 `Skip Upgrade`를 선택해 넘길 수 있다.
## 설계 의도
슬롯 제한의 핵심은 빌드 선택을 더 전략적으로 만드는 것이다.
제한이 없으면 사용자는 결국 대부분의 무기와 패시브를 다 들고 가게 되고, 선택의 의미가 약해진다.
5/5 구조에서는 다음 판단이 생긴다.
1. 무기 슬롯 하나를 새 무기에 쓸 것인가?
2. 기존 무기 레벨업을 기다릴 것인가?
3. 패시브 슬롯을 EVO 재료에 쓸 것인가?
4. 생존 패시브를 포기하고 공격 패시브를 가져갈 것인가?
5. 지금 후보가 별로면 스킵할 것인가?
이번 변경은 `Skip Upgrade`의 존재 이유도 더 명확하게 만든다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/skills.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/store/useGameStore.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.css`
## 검증
- `npm run build` 성공
- `/sprites/player.png` 경고 없음
- 출력 디렉터리: `dist/28`
## 후속 플레이테스트 체크 포인트
- 무기 5개를 보유한 상태에서 새 무기 후보가 정상 레벨업 목록에서 제외되는지 확인한다.
- 패시브 5개를 보유한 상태에서 새 패시브 후보가 정상 레벨업 목록에서 제외되는지 확인한다.
- 이미 보유한 무기/패시브는 슬롯이 가득 차도 레벨업 가능한지 확인한다.
- 예외적으로 `SLOT FULL` 카드가 보일 때 선택하면 슬롯 부족 노티가 뜨는지 확인한다.
- `Skip Upgrade`가 슬롯 제한 상황에서 자연스러운 탈출구로 작동하는지 확인한다.
- 5/5가 너무 넉넉하거나 너무 답답하지 않은지 확인한다.
@@ -0,0 +1,150 @@
# Skybound Skip Upgrade and Weapon Transform Reconfiguration
작성일: 2026-04-26 13:25 KST
## 요청 요약
- Tactical Level Up 화면에서 마음에 들지 않는 업그레이드만 나올 수 있다.
- 이 경우 사용자가 강제로 원하지 않는 업그레이드를 고르지 않도록 `업글 안하기` 선택지를 추가한다.
- 새로운 무기가 장착되었을 때 사용자의 기체 외형도 그에 맞춰 변화해야 한다.
- 연출적으로는 트랜스포머처럼 기체가 재구성되고 무장이 전개되는 느낌을 표현한다.
## 핵심 문제
기존 레벨업 화면은 반드시 하나의 스킬을 선택해야 했다.
이 구조의 문제:
1. 현재 빌드와 맞지 않는 선택지만 나와도 강제로 선택해야 한다.
2. 낮은 레벨 우선 후보 확률을 적용한 뒤에는 사용자가 원치 않는 저레벨/새 무기가 뜰 가능성도 생긴다.
3. 새 무기를 획득해도 기체가 실제로 바뀌는 느낌이 약하다.
4. 무기가 생긴 순간의 시각적 보상이 부족하다.
## 적용한 변경
### Skip Upgrade 선택지 추가
`LevelUpModal``Skip Upgrade` 카드를 추가했다.
동작:
- STARTER 첫 무기 선택에서는 스킵이 나오지 않는다.
- 일반 Tactical Upgrade, Supply, Command Cache에서는 스킵 가능하다.
- 스킵을 선택하면 스킬/무기 레벨이 증가하지 않고 전투로 복귀한다.
표시 문구:
- `HOLD UPGRADE`
- `Skip Upgrade`
- `No change this time`
### Skip 안전 처리
`__skip__`이 실제 스킬처럼 저장되지 않도록 여러 지점에 방어를 추가했다.
적용 지점:
- `GameSceneRenderer`
- `ProgressionSystem`
- `useGameStore.addSkill`
`__skip__`이 선택되면:
- Zustand `skills`에 추가하지 않는다.
- 엔진 스킬 상태에도 추가하지 않는다.
- `TACTICAL UPGRADE HELD` 텍스트를 띄운다.
- 게임 pause를 해제하고 전투를 재개한다.
### 새 무기 장착 감지
`ProgressionSystem.applySkillSelection()`에서 선택 직전 스킬 레벨을 확인한다.
조건:
- 선택한 스킬이 `WEAPON` 타입
- 선택 직전 레벨이 0
이 조건을 만족할 때만 새 무기 장착 연출을 발동한다.
기존 무기 레벨업이나 패시브 선택은 변신 연출을 발동하지 않는다.
### Airframe Reconfiguration 상태 추가
`GameState`에 새 무기 장착 연출용 상태를 추가했다.
추가 필드:
- `weaponTransformStartFrame`
- `weaponTransformDuration`
- `weaponTransformSkillId`
이 값은 렌더러가 현재 프레임 기준으로 변신 진행도를 계산하는 데 사용한다.
### 기체 변신/무장 전개 연출 추가
`GameRenderer.renderPlayer()`에 새 무기 장착 연출을 추가했다.
연출 요소:
- 기체 중심에서 확장되는 아케인 스캔 링
- 무기 색상별 발광
- 좌우 장갑 패널이 바깥으로 접히듯 전개
- 전방 무장 레일이 앞으로 돌출
- 작은 locking spark
- `WEAPON LINK: 무기명`
- `AIRFRAME RECONFIGURING`
- 화면 흔들림과 파티클
무기별 액센트 컬러:
- Gatling Gun: 골드
- Missile Pod: 핑크/레드
- Nova Burst: 시안
- Energy Shield: 라임
- Sweep Laser: 화이트/시안
- Plasma Torpedo: 오렌지
- Ion Storm: 전기 시안
- Attack Drone: 라임
- Gravity Mine: 퍼플
- Plasma Fire: 오렌지/레드
- Plasma Blade: 시안
## 설계 의도
이번 변경은 업그레이드 UX에 “선택하지 않을 권리”를 추가하는 작업이다.
업그레이드는 항상 이득처럼 보여야 하지만, 빌드 방향과 맞지 않는 선택을 강제하면 사용자는 선택권을 잃었다고 느낄 수 있다.
스킵 선택지는 다음 의미를 가진다.
1. 원하지 않는 업그레이드를 강제로 먹지 않는다.
2. 빌드 순도를 유지할 수 있다.
3. 낮은 레벨 우선 후보 시스템의 부작용을 완화한다.
4. 선택 화면에서 사용자 판단 여지를 높인다.
새 무기 변신 연출은 “새 기능이 생겼다”를 UI 문구가 아니라 기체 자체 변화로 전달하기 위한 장치다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/store/useGameStore.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/GameSceneRenderer.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.tsx`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/ui/LevelUpModal.css`
## 검증
- `npm run build` 성공
- `/sprites/player.png` 경고 없음
- 출력 디렉터리: `dist/27`
## 후속 플레이테스트 체크 포인트
- 일반 레벨업 화면에서 `Skip Upgrade`가 명확하게 보이는지 확인한다.
- STARTER 첫 무기 선택에서는 스킵이 나오지 않는지 확인한다.
- 스킵 선택 시 게임이 정상 재개되는지 확인한다.
- 스킵 선택 후 `skills.__skip__` 같은 잘못된 값이 저장되지 않는지 확인한다.
- 새 무기를 처음 선택했을 때 기체 변신 연출이 충분히 눈에 띄는지 확인한다.
- 기존 무기 레벨업/패시브 선택 시 변신 연출이 과하게 반복되지 않는지 확인한다.
@@ -0,0 +1,205 @@
# Skybound Stage 1 to 3 Playtest Balance Bomb and Visual Diversity Pass
작성일: 2026-04-26 12:35 KST
## 요청 요약
- Stage 1부터 Stage 3까지 실제 플레이 후 느낀 문제를 개선한다.
- Stage 1 초반 적 탄속이 부담스럽고, 중반 이후 성장하면 너무 쉬워지는 문제를 조정한다.
- Stage 2 시작 시 이미 Tac Level 6 정도로 강해져 적이 화면에 들어오기 전에 사망하는 문제를 완화한다.
- Space/X 폭탄의 비주얼 이펙트가 약하므로 톤앤매너에 맞는 폭탄 연출을 강화한다.
- 일반 적, 엘리트, 미니보스, 보스 외형 다양성을 확보한다.
## 핵심 문제
플레이 피드백 기준으로 Skybound의 현재 문제는 초반과 중반의 난이도 감각이 반대로 작동한다는 점이었다.
1. Stage 1 초반은 적 탄속이 빠르게 느껴져 부담스럽다.
2. Stage 1 중반부터 스킬이 붙으면 플레이어 화력이 너무 급격히 상승한다.
3. Stage 2에서는 적이 화면에 들어오기 전에 사망해 긴장감이 사라진다.
4. Tac Level 성장 속도와 무기 효율이 합쳐져 “이미 완성된 빌드”처럼 느껴진다.
5. 보스/적기 외형 반복으로 스테이지 진행감이 약하다.
## 적용한 변경
### Stage 1 적 탄속 완화
`balance.ts`의 적 탄환 기본 속도와 스테이지별 탄속 커브를 낮췄다.
변경 전:
- `BULLET_BASE_SPEED: 3.75`
- `BULLET_SPEED_CURVE: [1.1, 1.28, 1.48, ...]`
변경 후:
- `BULLET_BASE_SPEED: 3.25`
- `BULLET_SPEED_CURVE: [0.82, 0.96, 1.12, ...]`
Stage 1은 회피를 학습할 수 있는 속도로 낮추고, Stage 4 이후부터 탄속이 본격적으로 올라가도록 재배치했다.
### 적 사격 템포 완화
초반 탄막 부담을 줄이기 위해 `FIRE_RATE_CURVE`도 조정했다.
변경 후:
- `[280, 248, 222, 198, 176, 154, 134, 116]`
Stage 1-2는 더 읽을 수 있게 만들고, 후반 스테이지는 기존처럼 빠르게 압박하도록 유지했다.
### Tac Level 성장 속도 완화
Tac Level이 Stage 1 중반에 너무 빨리 누적되지 않도록 조정했다.
- 시작 요구 EXP: `80``100`
- 레벨업 후 초과 EXP carryover: `25%``15%`
- 레벨업 lockout: `360프레임``480프레임`
- 일반 적 Tac EXP: `2``1`
- 엘리트 Tac EXP: `10``8`
- 미니보스 Tac EXP: `30``24`
목표는 Stage 2 시작 시 플레이어가 강해졌다는 느낌은 가지되, 이미 완성된 상태는 아니게 만드는 것이다.
### 플레이어 무기 초중반 효율 완화
무기 업그레이드가 의미는 있지만, Lv1-3에서 화면 전체를 지우지 않도록 주요 피해량을 조정했다.
- Gatling Gun 피해와 발사 효율 하향
- Hyper Laser 피해 하향
- Nova Burst 피해 하향
- Missile Pod, Rocket Launcher, Ion Storm, Gravity Mine, Blade Orbit 등 데이터 기반 무기 피해 하향
- EVO 무기도 일부 피해를 낮춰 Stage 2-3을 통째로 삭제하지 않게 조정
### 화면 밖 적 선삭제 방지
Stage 2에서 적이 화면에 나오기도 전에 사망하는 가장 큰 원인은 자동 조준/유도/빔/드론/오비트 무기가 `y < 0`에 있는 적까지 타겟팅하거나 피해를 주는 것이었다.
그래서 플레이어 무기 타겟팅과 충돌 판정에 `TARGETABLE_Y = -35` 기준을 추가했다.
적이 화면에 거의 진입하기 전까지는 다음 무기가 타겟팅하지 않는다.
- 유도탄
- 자동 조준 무기
-
- 오비트 무기
- 드론
- 설치/장판 무기
- 일반 플레이어 탄환 충돌
이제 적이 화면에 들어와 위협을 보여준 뒤 처치되는 흐름이 만들어진다.
### Stage 2-3 압박 보강
Stage 2와 Stage 3은 이미 성장한 플레이어를 전제로 난이도를 다시 올렸다.
Stage 2:
- `diffBase: 1.02``1.12`
- `capBase: 23``28`
- `spawnTempo: 0.94``0.86`
- opening density: `10``14`
Stage 3:
- `diffBase: 1.14``1.28`
- `capBase: 28``34`
- `spawnTempo: 0.88``0.78`
- opening density: `12``16`
### 적 HP 스케일링 보강
일반/엘리트 적이 스킬 몇 개에 바로 삭제되지 않도록 기본 HP 공식을 조정했다.
추가 요소:
- 스테이지별 HP 증가
- 플레이어가 예상보다 높은 Tac Level일 때 적 HP 보정
- 엘리트 HP 배율 상향
이 보정은 플레이어가 잘 성장했을 때도 적이 최소한 화면에 들어와 압박을 만들도록 하기 위한 안전장치다.
### 폭탄 비주얼 개선
기존 폭탄은 얇은 원형 렌더링에 가까워 비주얼 피드백이 약했다. 이제 폭탄 사용 시 발동 위치를 저장하고, 그 지점에서 Magitech shockwave가 확장된다.
추가된 연출:
- 고정된 폭발 원점
- 시안/라임/골드 3중 마법공학 링
- 점선 링 회전
- 중심 코어 플래시
- 방사형 에너지 라인
- 밝은 라디얼 플래시
Space/X를 눌렀을 때 “화면을 정리하는 기술”이라는 감각이 더 강해지도록 했다.
### 적기 외형 다양성 개선
기존 적기 스프라이트 선택은 역할별 고정값이 많아 반복감이 컸다. 이제 역할과 스테이지, 약간의 랜덤 salt를 반영해 더 다양한 스프라이트를 선택한다.
적용 대상:
- 일반 적
- 엘리트 적
- 미니보스
미니보스는 패턴별로 크기와 발광색도 달라져 작은 보스전처럼 보이게 했다.
### 보스 외형 다양성 개선
보스는 `spriteIdx`가 명시되지 않아 사실상 같은 보스 타일만 반복 사용되는 문제가 있었다. 이제 스테이지별 보스 비주얼 프로필을 갖는다.
프로필 요소:
- 보스 스프라이트 인덱스
- 보스 크기
- 보스 가로/세로 비율
- 날개 포탑 위치
- 하단 포탑 위치
- 발광 액센트 색상
이제 Stage 1-8 보스는 같은 시스템을 쓰더라도 외형, 크기, 포탑 배치가 다르게 보인다.
## 설계 의도
이번 패스의 핵심은 “초반은 읽기 쉽게, 중반은 무적감이 너무 빨리 오지 않게” 만드는 것이다.
원하는 플레이 감각은 다음과 같다.
1. Stage 1 초반: 탄을 보고 피하는 법을 배운다.
2. Stage 1 중반: 첫 빌드가 강해지는 재미를 느낀다.
3. Stage 1 후반: 미니보스와 보스로 빌드 검증을 한다.
4. Stage 2: 성장한 상태지만 적도 더 빨리/많이 들어와 다시 긴장감이 생긴다.
5. Stage 3: 단일 무기 강화만으로는 부족하고 광역/방어/관통 선택의 의미가 생긴다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/CombatTimeline.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/balance.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/config/weaponBehaviors.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/store/useGameStore.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ModularWeaponSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/PlayerSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/ProgressionSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/SpawnerSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/StageDirectorSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/WeaponBehaviorEngine.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
## 검증
- `npm run build` 성공
- `/sprites/player.png` 경고 없음
- 출력 디렉터리: `dist/22`
## 후속 플레이테스트 체크 포인트
- Stage 1 첫 60초 탄속이 “부담스럽지만 불공정하지 않은지” 확인한다.
- Stage 1 후반 Tac Level이 대략 3-5 사이인지 확인한다.
- Stage 2 시작 시 적이 화면 안에 들어오기 전에 삭제되는 현상이 줄었는지 확인한다.
- Space/X 폭탄 사용 시 충분히 강한 시각 피드백이 있는지 확인한다.
- Stage 1-3 보스가 서로 다른 외형과 크기로 인식되는지 확인한다.
- Stage 2-3에서 피격 압박은 생겼지만, 갑자기 불합리하게 어려워지지는 않았는지 확인한다.
@@ -0,0 +1,115 @@
# Skybound Stage Miniboss Pattern Differentiation
작성일: 2026-04-26 09:44 KST
## 요청 요약
- 미니보스 보상 루프 다음 단계로, 8개 스테이지마다 미니보스 전투 패턴을 다르게 만든다.
- `Command Cache`를 얻는 과정 자체가 작은 보스전처럼 느껴지게 한다.
- 스테이지가 올라갈수록 압박 방식이 달라져 반복감을 줄이고, 플레이어가 이동/회피/빌드 선택을 더 의식하게 만든다.
## 핵심 방향
기존 미니보스는 내부적으로 `ELITE + COMMANDER`에 가까웠고, 일반 적 사격 규칙을 타고 있었다. 그래서 미니보스를 처치하면 보상은 의미 있어졌지만, 전투 자체는 “체력이 많은 엘리트”처럼 느껴질 위험이 있었다.
이번 변경은 미니보스를 아래 역할로 재정의한다.
1. 각 스테이지 중반의 작은 실력 체크
2. 스테이지 기믹을 미리 보여주는 압박 패턴
3. `Command Cache` 보상을 얻기 위한 전투 목표
4. 보스전 전 빌드가 충분한지 검증하는 중간 관문
## 적용한 변경
### 미니보스 패턴 타입 추가
`SystemEnemy`에 미니보스 전용 패턴 상태를 추가했다.
- `miniBossPattern`
- `miniBossTimer`
- `miniBossCooldown`
- `miniBossDashFrames`
- `miniBossActionSeed`
- `dashTargetX`
- `dashTargetY`
일반 적 AI에는 영향을 주지 않고, `isMiniBoss`가 true인 적만 전용 이동/사격 로직을 사용한다.
### 스테이지별 패턴 매핑
`SpawnerSystem`에서 현재 스테이지에 따라 미니보스 패턴을 자동 부여한다.
- Stage 1: `DUELIST`
- Stage 2: `DASH_RAIDER`
- Stage 3: `DRONE_CALLER`
- Stage 4: `BARRAGE_WALL`
- Stage 5: `MINE_LAYER`
- Stage 6: `DRONE_RING`
- Stage 7: `BLINK_SNIPER`
- Stage 8: `OMEGA_COMMANDER`
### 전용 이동 AI 추가
`CombatSystem`에서 미니보스는 기존 `role` 기반 AI 대신 `updateMiniBossAI`를 탄다.
패턴별 이동/행동은 다음과 같다.
- `DUELIST`: 플레이어 x축을 따라가며 기본 팬샷 압박
- `DASH_RAIDER`: 짧은 예고 후 플레이어 방향으로 돌진
- `DRONE_CALLER`: 좌우에 스팅어 호위기를 주기적으로 소환
- `BARRAGE_WALL`: 화면 가로 라인을 오가며 안전 구멍이 있는 탄막벽 생성
- `MINE_LAYER`: 플레이어 근처에 위험 구름/지뢰형 압박 구역 생성
- `DRONE_RING`: 헌터 호위기와 링 탄막으로 공간 압박
- `BLINK_SNIPER`: 위치를 순간이동하며 빠른 저격 탄을 발사
- `OMEGA_COMMANDER`: 팬샷, 링 탄막, 지뢰, 블링크를 순환하는 최종형 미니보스
### 전용 사격 패턴 추가
`spawnMiniBossBulletPattern`을 추가해 미니보스 사격을 일반 적과 분리했다.
- 팬샷
- 빠른 저격탄
- 링 탄막
- 안전 구멍이 있는 라인 탄막
- 느린 중력/지뢰형 탄
- 최종 스테이지 혼합 패턴
스테이지가 올라가면 탄 수와 쿨다운이 자연스럽게 강해진다.
## 설계 의도
이번 변경은 “보상을 얻는 과정”을 재미있게 만들기 위한 작업이다.
이전 구조:
- 미니보스 등장
- 체력이 많은 적을 처치
- 보상 선택
변경 후 구조:
- 스테이지별 다른 압박을 가진 미니보스 등장
- 사용자는 이동/회피/빌드 강점을 이용해 작은 보스전을 해결
- 처치하면 `Command Cache`를 열고 빌드를 강화
- 다음 구간을 버틸 준비가 된다
이렇게 하면 미니보스가 단순 보상 트리거가 아니라, 스테이지 리듬의 핵심 이벤트가 된다.
## 수정 파일
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/SpawnerSystem.ts`
- `/Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts`
## 검증
- `npm run build` 성공
- Vite 경고: `/sprites/player.png referenced in /sprites/player.png didn't resolve at build time`
- 위 경고는 기존 런타임 경로 경고이며 이번 변경으로 인한 빌드 실패는 아니다.
## 후속 작업 제안
- 실제 플레이에서 Stage 4 `BARRAGE_WALL`과 Stage 7 `BLINK_SNIPER`의 탄속/쿨다운을 체감 기준으로 조정한다.
- 미니보스 등장 시 패턴 이름을 더 상품성 있는 경고 문구로 표시한다.
- 미니보스별 외형 색상, 엔진 이펙트, 코어 형태를 패턴에 맞게 분리한다.
- `Command Cache` 오픈 전 0.5초 컷인 연출을 추가해 전투 승리 보상감을 더 강화한다.
+32
View File
@@ -0,0 +1,32 @@
# 📜 2026-04-30 회사 대화록
_모든 명령·분배·산출물·대화가 시간순으로 누적됩니다. 두뇌가 자동 인덱싱·동기화합니다._
## [16:07:45] 👤 **사용자**
[모닝 브리핑] 오늘 날짜는 2026-04-30입니다. 회사 목표(goals.md)와 지금까지의 의사결정 로그를 바탕으로 오늘 우리 회사가 우선순위로 처리해야 할 작업 3가지를 결정하고, 각 작업을 적절한 에이전트에게 분배하세요.
## [16:28:10] 🧭 **CEO** · _작업 분배_
회사 목표와 로그가 초기화 상태이므로, 시장 분석을 통한 닉슈 선정 → 수익화 전략 및 KPI 도출 → 일일/주간 실행 계획 수립 순으로 3가지 우선 작업을 정의합니다.
**할당:**
- 🔍 **[[Research|Research]]er**: AI/기술/콘텐츠 관련 상위 3개 시장 트렌드와 주요 경쟁 채널의 성장 패턴을 분석한 후, 우리 회사가 1개월 내 진입 가능한 최적의 1개 닉슈와 핵심 타깃 키워드 5개를 정리해 보고하세요.
- 💰 **[[business|business]]**: re[[Search|Search]]er의 분석 결과를 기반으로 초기 수익화 모델(광고/스폰서/디지털 제품 중 1개 선택)을 제안하고, 월별 조회수·구독자·변환율 목표를 포함한 KPI 프레임워크와 가격/수익 구조를 1페이지 분량으로 작성하세요.
- 📱 **secretary**: 리서치와 비즈니스 전략 결과를 종합해 오늘 하루의 핵심 작업 3가지를 최종 확정하고, 마감 시간·담당 에이전트·진행 상태를 명시한 데일리 브리핑과 1주일 액션 플랜을 텔레그램 보고 형식으로 출력하세요.
## [16:33:10] 🔍 **[[researcher|researcher]]** · _AI/기술/콘텐츠 관련 상위 3개 시장 트렌드와 주요 경쟁 채널의 성장 패턴을 분석한 후, 우리 회사가 1개_
⚠️ Researcher 에이전트 호출 실패: aborted
## [16:37:31] 👤 **사용자**
[자율 사이클 — 2026-04-30] 사용자가 자리를 비웠습니다. 회사 목표·각 에이전트의 개인 목표(_agents/{id}/[[goal|goal]].md)·최근 의사결정·메모리를 검토해서 지금 가장 가치 있는 단일 작업 1개를 결정하고, 적절한 1~2명 에이전트에게 분배해서 실행하세요. 같은 산출물을 반복하지 마세요 — 메모리에 비슷한 항목이 24시간 내에 있으면 다른 각도로 진전시키세요.
## [16:38:10] 💰 **Business** · _researcher의 분석 결과를 기반으로 초기 수익화 모델(광고/스폰서/디지털 제품 중 1개 선택)을 제안_
⚠️ Business 에이전트 호출 실패: aborted
## [16:43:10] 📱 **Secretary** · _리서치와 비즈니스 전략 결과를 종합해 오늘 하루의 핵심 작업 3가지를 최종 확정하고, 마감 시간·담당 에이전_
⚠️ Secretary 에이전트 호출 실패: aborted
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,35 @@
---
id: P-REINFORCE-WIKI-D7150244
category: Dev
confidence_score: 0.95
tags: ['architecture-principles']
last_reinforced: 2026-05-02
---
# AI-Human Discussion Log
## Topic
Project Chronicle Guard sidebar Designer menu and Markdown record system.
## User Request Summary
The user wants a Designer menu in the sidebar and a staged implementation of a project planning, decision, and development record system.
## AI Questions
### Question
No blocking question was asked.
### Reason
The current workspace, project root, and a reasonable record location were available from local context.
### Impact On Decision
The first implementation can proceed with `ConnectAI` as the active project and `docs/records/ConnectAI` as the planning record location.
## Main Discussion
The feature should not replace code generation or existing agent execution. It should sit beside those features as a recording and decision support layer.
## Decisions
- Use an independent `src/features/projectChronicle` module.
- Add a sidebar Designer control similar to existing Brain and Agent controls.
- Keep the MVP file-based and Markdown-only.
- Do not implement full automatic transcript capture in the first stage.
@@ -0,0 +1,47 @@
---
id: P-REINFORCE-WIKI-5B04311B
category: Dev
confidence_score: 0.95
tags: ['architecture-principles']
last_reinforced: 2026-05-02
---
# Development Log: Project Chronicle Guard Feedback Response
## Purpose
Improve Chronicle Guard behavior after testing showed the assistant still answered like a general idea proposer instead of a project planning and record guard.
## Feedback Summary
The tested response understood the broad idea, but missed key guard behaviors:
- Project target check
- Record path check
- Question intent and question reasons
- Pending decision candidates
- Low-dependency MVP first
- Candidate records at the end
- Plain engineering tone
## Implementation Summary
- Made Chronicle Guard context apply by default unless explicitly disabled from the webview payload.
- Strengthened the Guard response contract for new ideas and feature requests.
- Added required response order: summary, intent, project check, record path check, blocking questions, question reasons, direction review, MVP, later expansion, candidate records.
- Added decision policy so unconfirmed decisions stay pending.
- Added tone rules against inflated consulting language and premature Vector DB / relational DB / knowledge graph suggestions.
- Extracted Guard prompt generation into `buildProjectChronicleGuardContext`.
- Added tests that lock the most important Guard rules.
- Added base system prompt guidance to prefer practical MVP-first answers for product and architecture discussions.
## Changed Files
- `src/features/projectChronicle/guardPrompt.ts`
- `src/features/projectChronicle/index.ts`
- `src/sidebarProvider.ts`
- `src/utils.ts`
- `tests/projectChronicleGuardPrompt.test.ts`
## Verification
- `./node_modules/.bin/tsc --noEmit`
- `npm run compile`
- `./node_modules/.bin/jest --runInBand`
## Result
Chronicle Guard should now behave less like a general ideation assistant and more like a project planning, decision, and record guard.
@@ -0,0 +1,56 @@
---
id: P-REINFORCE-WIKI-D4A6E581
category: Dev
confidence_score: 0.95
tags: ['architecture-principles']
last_reinforced: 2026-05-02
---
# Development Log: Project Chronicle Guard Stage 1
## Purpose
Add the first stable stage of the Designer menu and Project Chronicle Guard without coupling it tightly to chat execution.
## Implementation Summary
- Added an independent `src/features/projectChronicle` module.
- Added typed project, planning, discussion, decision, development, bug, and retrospective records.
- Added a Markdown writer with folder creation and filename collision protection.
- Added templates for project seed files and record documents.
- Added a Designer row in the sidebar with project selection and explicit record actions.
- Added VS Code-side handlers for creating/selecting record projects and writing planning, development, and bug records.
## Architecture
```text
Sidebar Designer UI
-> Webview postMessage
-> SidebarChatProvider handlers
-> ProjectChronicleManager
-> MarkdownFileWriter
-> docs/records/{Project}/...
```
## Changed Files
- `src/features/projectChronicle/types.ts`
- `src/features/projectChronicle/markdownFileWriter.ts`
- `src/features/projectChronicle/templates.ts`
- `src/features/projectChronicle/index.ts`
- `src/sidebarProvider.ts`
- `docs/records/ConnectAI/...`
## Dependency Notes
The implementation uses only TypeScript, Node `fs`/`path`, and VS Code extension APIs already available in the project.
## Verification
- `npm run compile`
- `./node_modules/.bin/jest --runInBand`
## Known Limits
- The records are generated through explicit sidebar actions.
- Full automatic conversation analysis is not implemented in this stage.
- Retrospective and ADR writing are available in the module, but the sidebar only exposes Plan, Dev, and Bug actions in this first pass.
## Next Development Notes
- Add a richer Designer panel for ADR, discussion, and retrospective creation.
- Capture AI question intent more directly during the conversation flow.
- Add tests for the Project Chronicle manager.
@@ -0,0 +1,55 @@
---
id: P-REINFORCE-WIKI-A3F62F03
category: Dev
confidence_score: 0.95
tags: ['architecture-principles']
last_reinforced: 2026-05-02
---
# Development Log: Project Chronicle Guard Stage 2
## Purpose
Expand the Designer menu from basic Plan/Dev/Bug writing into a fuller MVP record writer.
## Implementation Summary
- Reworked the Designer sidebar controls into a project selector plus a record type selector.
- Added explicit write flows for discussion, decision, and retrospective records.
- Preserved the existing planning, development, and bug writers.
- Added question intent capture in the discussion writer through optional prompts.
- Added ADR numbering for decision records and timeline updates for every record type.
- Expanded tests to verify all major record categories are written to their expected folders.
## Design Adjustment
The first pass exposed separate buttons for Plan, Dev, and Bug. Stage 2 changes this to a more scalable pattern:
```text
Designer Project Selector
Record Type Selector
Write / Open / Add actions
```
This keeps the sidebar usable as more record types are added.
## Changed Files
- `src/sidebarProvider.ts`
- `tests/projectChronicle.test.ts`
- `docs/records/ConnectAI/development/2026-05-02_project-chronicle-guard_stage-2_implementation.md`
## Verification
- `./node_modules/.bin/tsc --noEmit`
- `npm run compile`
- `./node_modules/.bin/jest --runInBand`
## Result
The Designer menu can now create the MVP record types:
- Planning
- Discussion
- Decision
- Development
- Bug
- Retrospective
## Next Development Notes
- Add a dedicated Designer panel for editing richer record content before writing.
- Add automatic conversation event capture so records can be generated with less manual input.
- Add settings for default record detail level and automatic timeline behavior.
@@ -0,0 +1,50 @@
---
id: P-REINFORCE-WIKI-718C7EBB
category: Dev
confidence_score: 0.95
tags: ['architecture-principles']
last_reinforced: 2026-05-02
---
# Development Log: Project Chronicle Guard Stages 3 to 5
## Purpose
Complete the remaining MVP support around Designer mode, record browsing, and project configuration persistence.
## Stage 3: Chronicle Guard Mode
- Added a `Guard` toggle in the sidebar header.
- When enabled, active Designer project context is injected into the agent system context.
- The guard context asks the assistant to summarize requests, infer intent, explain blocking questions, identify decisions, and name records that should be written.
- The mode is restored through webview state.
## Stage 4: Record Browser
- Added a record list selector for generated Chronicle Markdown files.
- Added refresh and open actions for selected records.
- Added record listing to `ProjectChronicleManager`.
- Added path validation before opening selected Markdown records.
## Stage 5: Project Config File
- Added `chronicle.config.json` generation under each project record root.
- The config file stores project id, project name, root, record root, description, purpose, detail level, and timestamps.
- This gives the record folder its own portable project metadata, independent of VS Code global state.
## Changed Files
- `src/agent.ts`
- `src/sidebarProvider.ts`
- `src/features/projectChronicle/index.ts`
- `src/features/projectChronicle/types.ts`
- `tests/projectChronicle.test.ts`
## Verification
- `./node_modules/.bin/tsc --noEmit`
- `npm run compile`
- `./node_modules/.bin/jest --runInBand`
## Result
The staged MVP is now functionally complete:
- Select or create Designer project
- Generate project record structure
- Persist project config
- Enable Chronicle Guard response mode
- Write all MVP record types
- Browse and open generated Markdown records
@@ -0,0 +1,30 @@
---
id: P-REINFORCE-WIKI-EC4DA38B
category: Dev
confidence_score: 0.95
tags: ['architecture-principles']
last_reinforced: 2026-05-02
---
# Development Log: Second Brain Trace Collapsible UI
## Purpose
Reduce visual noise from Second Brain Trace details while keeping the evidence available when the user wants to inspect it.
## Implementation Summary
- Wrapped Second Brain Trace output in a collapsed HTML `<details>` block.
- Added a compact summary line showing usage status and note counts.
- Kept detailed referenced notes, unused notes, grounding metrics, and debug JSON inside the expanded section.
- Updated tests to verify the collapsible structure is rendered.
## Changed Files
- `src/features/secondBrainTrace.ts`
- `tests/secondBrainTrace.test.ts`
## Verification
- `./node_modules/.bin/tsc --noEmit`
- `npm run compile`
- `./node_modules/.bin/jest --runInBand`
## Result
Trace evidence is still available, but it no longer dominates every answer by default.
@@ -0,0 +1,43 @@
---
id: P-REINFORCE-WIKI-18722064
category: Dev
confidence_score: 0.95
tags: ['architecture-principles']
last_reinforced: 2026-05-02
---
# Development Log: Second Brain Trace Mode
## Purpose
Make Second Brain usage visible and testable in AI answers.
## Implementation Summary
- Added `src/features/secondBrainTrace.ts`.
- Added trace scoring over active Second Brain Markdown files.
- Added user-facing trace Markdown with usage status, referenced documents, unused documents, and grounding metrics.
- Added debug JSON output when debug mode is enabled.
- Added Trace and Dbg sidebar buttons.
- Connected trace context into `AgentExecutor`.
- Added tests for retrieval, rendering, debug JSON, and no-use cases.
## Changed Files
- `src/features/secondBrainTrace.ts`
- `src/agent.ts`
- `src/sidebarProvider.ts`
- `tests/secondBrainTrace.test.ts`
- `docs/records/ConnectAI/planning/2026-05-02_second-brain-trace-mode.md`
- `docs/records/ConnectAI/development/2026-05-02_second-brain-trace-mode_implementation.md`
## Verification
- `./node_modules/.bin/tsc --noEmit`
- `npm run compile`
- `./node_modules/.bin/jest --runInBand`
## Result
When Trace mode is on, answers can now include:
- 2nd Brain usage status
- Reason for use or non-use
- Referenced note paths and excerpts
- Searched but unused notes
- Retrieval and grounding metrics
- Optional debug JSON
@@ -0,0 +1,51 @@
---
type: meeting_minutes
status: finished
tags: [Hi-Mart, UI/UX, AI-Chatbot, Compliance, Logging]
project: Hi-Mart Virtual Store
date: 2026-04-28
created: 2026-04-29
---
# 📑 [회의록] 하이마트/가상 스토어 UI/UX 및 기술 구현 방향성 검토
> **일시:** 2026.04.28
> **주요 안건:** 데이터 로깅 범위 축소(Mini-Logging) 및 AI 챗봇 컴플라이언스 대응
> **핵심 결정:** 사용자 행동 로그의 핵심 지표(체류시간/클릭) 집중 및 개인정보 보호 로직(48시간 후 파기) 수립
---
## 🏛️ I. 데이터 로깅 (로그 수집) 세부 합의 사항
비즈니스 가치 판단의 핵심 지표인 '체류 시간'과 '구매 유도'에 집중하여 구현 복잡성을 최소화함.
| 구분 | 최종 결정 범위 (MUST-HAVE) | 비고 / 기술적 근거 |
| :--- | :--- | :--- |
| **핵심 지표** | 1. **공간별 체류 시간 (Zone/Waypoint)**: 구역별 체류 시간 측정<br>2. **상품 링크 클릭 여부**: 외부 이탈 건수 추적 | '체류 시간'과 '클릭 유도(구매)'를 핵심 비즈니스 가치로 확정 |
| **수집 메커니즘** | **브라우저 종료/이탈 감지(Browser Exit)** 시점 로깅 | 세션 ID와 핵심 웨이포인트만 기록하여 데이터 부하 최소화 |
| **제외 항목** | 모든 비핵심적인 사용자 식별 정보 및 상세 시스템 로그 | 보안 리스크 감소를 위해 수집 항목에서 완전 배제 |
---
## 🛡️ II. AI 챗봇 컴플라이언스 및 보안 실행 계획
정보보호 규정 준수를 위해 설계 단계부터 기술적 차단 및 자동 파기 로직을 적용함.
| 영역 | 의무 처리 내용 (Must-Do) | 기술적/정책적 조치 (How To Achieve) | 담당 주체 |
| :--- | :--- | :--- | :--- |
| **개인정보 보호** | 민감 정보(주민번호, 전화번호 등) 수집 금지 | AI 챗 UI 내 **패턴 검사 필터링** 및 서버측 즉시 삭제 로직 구축 | 개발팀 / 백엔드 |
| **데이터 투명성** | 데이터 활용 및 수집 항목 투명 고지 | 로딩 화면/대화 시작 시 안내 문구 노출 및 **48시간 후 자동 삭제** 정책 적용 | 기획팀 / 개발팀 |
| **보안 심의** | 명확한 근거 기반 동의 절차 마련 | 보안 고지 문구 전문가 컨펌 및 개발 적용 여부 추적 관리 | PM / 정보보호실 |
---
## 📅 III. 향후 액션 플랜 (Next Steps & Owner)
프로젝트 완수를 위해 각 담당자는 아래 추진 방향에 따라 작업을 진행함.
| ID | 작업 항목 | 상세 목표 및 실행 방향 | 담당자 | 기한 |
| :--- | :--- | :--- | :--- | :--- |
| **A1** | **데이터 명세서 재정의** | 최소 로그 데이터 기반 상세 요구사항 정의서 작성 및 공유 | PD 김원일 / 오경득 | TBD |
| **A2** | **기술 구현 로직 설계** | Browser Exit 감지 및 웨이포인트 기반 체류 시간 산정 로직 구체화 | 김상엽 (넥서스) | TBD |
| **A3** | **보안 가이드라인 확정** | 고지 문구, 수집 항목, 삭제 정책 보안팀 공식 전달 및 컨펌 | PM 한예성 | 즉시 |
| **A4** | **사업부 최종 협의** | 데이터 로깅 최소화 방안의 비즈니스 타당성 최종 재확인 | PD 김원일 / 정현욱 | TBD |
---
"조직이 시스템이다. 실질적인 결과물과 일정으로 증명한다." - P-Reinforce Logic 🫡🚩🐟
@@ -0,0 +1,56 @@
---
type: meeting_minutes
status: in_progress
tags: [Sporty&Rich, Development, Schedule, Client, QA, Security, Biz]
project: Sporty & Rich Virtual Store
date: 2026-04-29
created: 2026-04-29
---
# 📑 [회의록] 스포티앤리치 전체 개발 일정 및 팀별 주요 업무 점검
> **일시:** 2026.04.29
> **주요 안건:** 전체 마일스톤 점검, 팀별 R&R 확정, 지연 리스크(URL 리다이렉션) 대응
> **핵심 결정:** 5/17 빌드 프리징 및 5/06 보안 심사 대응을 위한 전사적 협력 체계 가동
---
## 🏛️ I. 전체 개발 마일스톤 및 일정 합의
프로젝트 완수를 위해 각 단계별 마감 기한과 담당자를 명확히 확정함.
| 단계 | 기간 / 마감 | 담당 주체 | 비고 / 핵심 목표 |
| :--- | :--- | :--- | :--- |
| **클라이언트 개발** | 04/27 ~ 05/13 | 송병준, 박진규, 박태수 | 인벤토리 확장 및 상단 메뉴 개편 |
| **상품 제작 (20 SKU)** | 04/23 ~ 05/13 | 안현제 | AI 이미지 기반 SKU 생성 및 데이터 정리 |
| **보안 심사** | 05/06 (예정) | 김상엽, 김성환, 정승민 | 사전 점검 및 취약점 대응 준비 |
| **채널 연동 (롯데온)** | 05/14 | 정현욱 | 채널 토큰 공유 (ASAP 요청 건) |
| **개선 및 QA** | 05/14 ~ 05/17 | 송병준, 김상엽, 최성연 | 빌드 프리징 전 최종 품질 확보 |
---
## 🛡️ II. 팀별 세부 업무 및 리스크 관리
각 팀은 확정된 R&R에 따라 진행 상황을 관리하며, 지연 항목에 대해서는 즉각적인 대응을 실시함.
| 팀 | 주요 진행 업무 (Items) | 상태 (Status) | 이슈 및 대응 방향 |
| :--- | :--- | :--- | :--- |
| **클라이언트** | 데이터 지표 개발, 피팅룸 기능 개선, 메뉴 구조 개편 | **진행중** | 05/13 완료 목표로 개발 가속화 |
| **UI / 기획** | 피팅룸 UI 기획 및 시안 제작, UI 제작(~05/08) | **진행중** | 개발 가이드 전달 및 UI 제작 진행 |
| **사업실** | 로그 수집 구조 정의, 채널 토큰 수령/적용 | **주의** | **URL 리다이렉션 처리 지연 (04/27 목표 도과) ➔ 즉시 조치 필요** |
| **상품 제작** | AI 이미지 SKU 20종 생성, 모델 데이터 정리 | **진행중** | 05/13 최종 마감 준수 |
| **QA / 보안** | 빌드 QA 완료, 보안 심사 대응 준비 | **대기** | 05/06 보안 심사 리스크 사전 차단 |
---
## 📅 III. 향후 액션 플랜 (Next Steps & Owner)
| ID | 작업 항목 | 상세 목표 및 실행 방향 | 담당자 | 기한 |
| :--- | :--- | :--- | :--- | :--- |
| **A1** | **URL 리다이렉션 지연 해결** | 지연된 리다이렉션 처리 완료 및 결과 공유 | 정현욱 (사업실) | **즉시** |
| **A2** | **보안 심사 사전 리허설** | 보안 심사 대응을 위한 자체 점검 및 버퍼 확보 | 김상엽, 김성환 | 05/05 |
| **A3** | **채널 토큰 조기 수령** | 롯데온 연동 토큰 05/14 전 조기 확보 및 전달 | 정현욱 | 05/13 |
| **A4** | **빌드 프리징 준비** | 모든 개선 사항 반영 및 최종 QA 돌입 준비 | 송병준, 최성연 | 05/14 |
---
"조직이 시스템이다. 실질적인 결과물과 일정으로 증명한다." - P-Reinforce Logic 🫡🚩🐟
@@ -0,0 +1,29 @@
# [[2026년 3월 연구 드롭(March 2026 Research Drop)|2026년 3월 연구 드롭(March 2026 Research Drop)]]
## 📌 Brief Summary
2026년 3월 연구 드롭은 Descendants의 섹터 통제 시도를 물리친 후 발견된 데이터 볼트를 기반으로 한 기지 업그레이드 시스템입니다 [1]. 이 업그레이드는 '이리듐(Iridium)' 자원을 필요로 하며, 방어 플랫폼에 특정 무기 공격에 대한 50% 피해 저항력을 부여하여 게임의 전투 메타를 근본적으로 변화시켰습니다 [1-3]. 더불어 항공기를 교란하는 나이트워치 벙커(Nightwatch Bunker)와 체력이 높은 유닛을 카운터 치는 메트로노모스(Metronomos) 중포탑이 새롭게 도입되어 방어 체계의 전략적 깊이가 크게 심화되었습니다 [4-6].
## 📖 Core Content
- **연구 드롭 배경 및 필요 자원:** Corpus의 과학자들이 잔해 속에서 발견한 소형 데이터 볼트를 복구하면서 새로운 기지 방어 업그레이드 청사진이 해제되었습니다 [1]. 이 연구 레벨들을 진행하려면 '이리듐' 자원이 필요하지만, 동급의 다른 기술 연구에 비해 소요 시간이 짧은 이점이 있습니다 [1, 2].
- **새로운 방어 구조물 도입 (Operation: Western Sun 상점):**
- **나이트워치 벙커 (Nightwatch Bunker):** 10개의 새로운 레벨로 구성되며 최대 750의 수용량과 사거리 20% 증가 보너스를 제공합니다 [4]. 보병, 차량, 항공기에 대해 10%의 추가 피해를 입히며, 특히 반경 300 내의 적 항공기에 '난기류(Turbulence)'를 일으켜 이동 및 타겟팅을 교란하는 강력한 대공 전자전(electronic warfare) 능력을 보유하고 있습니다 [4, 6].
- **메트로노모스 중포탑 (Metronomos Heavy Turret):** 15개의 새로운 레벨을 가지며, 버스트(BURST) 피해를 입히는 무기입니다 [5]. 발사 중 연사 속도가 점차 증가하다가 1발의 플럭스 버블(Flux Bubble) 탄환을 발사한 후 초기화되어, 지속 타격을 견디며 진입하는 체력이 높은 전차를 상대로 매우 효과적입니다 [5, 6].
- **플랫폼 전문화 및 피해 저항 메커니즘:** 가장 핵심적인 변화로 기존 플랫폼들의 명칭이 '지원(Support)'과 '중(Heavy)' 플랫폼으로 재편되며 각각 5레벨씩 추가되었습니다 [5, 7, 8]. 업그레이드된 플랫폼들은 특정 피해 유형에 대해 50%의 피해 감소 또는 상태 이상 면역 효과를 제공합니다 [3].
- *지원/중력(Graviton)*: 지상 유닛으로부터의 피해 -50% [3, 5, 8].
- *지원/절연(Insulated)*: 광역(AREA) 피해 -50% [3, 5].
- *지원/강화(Reinforced)*: 버스트(BURST) 피해 -50% [3, 5].
- *지원/장갑(Armored)*: 지속(SUSTAIN) 피해 -50% [3, 7].
- *지원/중 항공제트(Aerojet)*: 항공 유닛으로부터의 피해 -50% [3, 7, 8].
- *지원/중 저항(Resistor)*: 모든 상태 이상 효과(Status Effects)에 면역 [3, 7, 8].
- *지원/중 방벽(Bulwark)*: 고정 수치 피해 감소 (Flat Damage Reduction) [3, 7, 8].
- **전투 메타 및 전술의 진화:** 방어 플랫폼의 세분화 및 전문화로 인해, 공격자가 단일 무기 프로파일(예: 지속 피해 보병 대규모 투입 등)에만 의존할 경우 방어자의 플랫폼 세팅에 따라 화력이 반감될 위험이 커졌습니다 [3, 9]. 이에 따라 공격자는 적의 특정 방어 시스템 구성에 구애받지 않고 안정적인 타격을 입히기 위해, 다수의 피해 유형을 포함한 `[[혼합 소대(Mixed Platoons)|혼합 소대(Mixed Platoons)]]`를 구성하는 `[[제병협동 (Combined Arms)|제병 협동(Combined Arms)]]` 전술을 필수로 채택해야만 합니다 [2, 9].
- **기타 구조물 및 무기 밸런스 조정:** 기지 운영 측면에서 딥 리액터(Deep Reactor)와 퓨전 타워(Fusion Tower)의 최대 전력 한도가 각각 250, 450으로 증가했습니다 [10]. 무기 체계에서도 데드아이(Deadeye)는 광역 범위가 줄어든 대신 피해량이 커졌고, 애시드 레인(Acid Rain)과 워프 랜스(Warp Lance)는 피해를 더욱 안정적이고 예측 가능하게 주기 위해 스플릿 거리 및 공격 패턴이 변경되었습니다 [4, 10].
## 🔗 Knowledge Connections
- **Related Topics:** `방어 플랫폼(Defense Platform)`, `이리듐(Iridium)`, `[[혼합 소대(Mixed Platoons)|혼합 소대(Mixed Platoons)]]`
- **Projects/Contexts:** `[[Operation- Western Sun|Operation: Western Sun]]`, `[[제병협동 전술 (Combined Arms)|제병 협동 전술(Combined Arms)]]`
- **Contradictions/Notes:** 소스 간의 정보 충돌은 없으며, 모든 자료가 2026년 3월 연구 드롭으로 인해 전투 시스템의 수비적 다각화 및 그에 따른 공격 전술(다기종 혼합 편성)의 변화가 발생했음을 일관되게 보여줍니다.
---
*Last updated: 2026-04-27*
@@ -0,0 +1,29 @@
# [[2026년 3월 연구 업데이트(March 2026 Research Drop)|2026년 3월 연구 업데이트(March 2026 Research Drop)]]
## 📌 Brief Summary
2026년 3월 연구 업데이트는 디센던트(Descendants) 세력의 섹터 통제 시도를 격퇴한 후 발견된 데이터 볼트를 기반으로 도입된 핵심 기술 업데이트입니다 [1]. 이 업데이트는 새로운 자원인 '이리듐(Iridium)'을 도입하고, 방어 플랫폼의 피해 저항력을 전문화하며, 신규 벙커 및 중포탑을 추가하여 게임의 전반적인 전투 메타를 크게 변화시켰습니다 [1, 2]. 특히 단일 무기 유형에 의존하는 공격의 효율을 크게 감소시켜, 공격자에게 '제병협동(Combined Arms)' 형태의 혼합 소대 전술을 강제하는 데 목적이 있습니다 [2, 3].
## 📖 Core Content
* **신규 자원 '이리듐(Iridium)' 도입**: Corpus 과학자 Matt가 복구한 이 연구 청사진들은 기지 업그레이드에 기존 자원 대신 '이리듐'을 요구합니다 [1]. 이리듐을 사용하는 연구는 동급의 일반 연구에 비해 소요 시간이 짧습니다 [1].
* **방어 플랫폼의 전문화 및 명칭 변경**: 지원(Support) 및 중형(Heavy) 플랫폼에 각각 5개의 신규 레벨이 추가되었으며, 각 플랫폼은 특정 공격 유형에 대해 50%의 피해 감소 또는 면역 효과를 제공하도록 전면 개편되었습니다 [4-7].
* *Support Graviton* (구 Airborne Platform): 지상 유닛 공격 50% 감소 [4, 7].
* *Support Insulated* (구 Insulated Platform): 범위(AREA) 피해 50% 감소 [4, 7].
* *Support Reinforced* (구 Reinforced Platform): 폭발(BURST) 피해 50% 감소 [4, 7].
* *Support Armored* (구 Armored Platform): 지속(SUSTAIN) 피해 50% 감소 [5, 7].
* *Support Aerojet* (구 Flying Platform): 공중 유닛 공격 50% 감소 [5, 7].
* *Support Resistor* (구 Resistor Platform): 모든 상태 이상(Status Effects) 면역 [5, 7].
* *Support Bulwark* (구 Plated Platform): 고정 피해 감소 (Flat Damage Reduction) [5, 7].
* Heavy 계열의 플랫폼(Aerojet, Resistor, Bulwark, Graviton, Clandestine) 역시 이와 유사한 저항 효과를 갖도록 조정되었습니다 [6, 8].
* **신규 방어 구조물 (오퍼레이션: 웨스턴 선 상점)**:
* **나이트워치(Nightwatch) 벙커**: 최대 수용량 750, 내부 유닛의 사거리 20% 증가 효과와 함께 보병, 차량, 항공기 대상 피해량이 각각 10%씩 증가합니다 [9]. 가장 큰 특징은 반경 300 내의 적 항공기에 '난기류(Turbulence)'를 일으켜 적의 공습 이동과 타겟팅을 방해하는 전자전 역할을 수행한다는 점입니다 [9, 10].
* **메트로노모스(Metronomos) 중포탑**: 15개의 신규 레벨이 추가된 이 포탑은 폭발(BURST) 피해를 주며, 강력한 '플럭스 버블(Flux Bubble)' 탄환을 쏠 때까지 발사 속도가 지속적으로 증가하다가 초기화되는 특성을 가집니다 [4, 10]. 이는 높은 체력을 가진 탱킹 유닛을 카운터 하는 데 이상적입니다 [10].
* **전술적 영향력 (Tactical Impact)**: 이러한 방어 플랫폼의 극단적인 전문화로 인해 지속(Sustain) 피해 보병 러시와 같은 단일 유닛 위주의 공격은 상대가 방어구(Armored) 플랫폼을 사용 중일 때 효율이 절반으로 떨어집니다 [3, 7]. 공격 지휘관은 방어자의 플랫폼 세팅과 무관하게 안정적인 화력을 투사하기 위해 다양한 피해 프로필이 혼합된 소대(Mixed Platoons)를 구성해야만 합니다 [3].
* **기타 주요 기술 업그레이드**: Deep Reactor (최대 전력 250), Fusion Tower (최대 전력 450)를 통해 기지 전력 한도가 증가했습니다 [8]. 또한 Warp Lance (패턴 변경 및 AREA 피해로 전환), Deadeye (스플래시 감소 및 피해량 증가), Acid Rain (분열 거리 변경으로 신뢰성 증가) 등 다수의 무기 체계에 5개의 신규 레벨이 부여되었습니다 [8, 9].
## 🔗 Knowledge Connections
- **Related Topics:** [[방어 플랫폼(Defense Platforms)|방어 플랫폼(Defense Platforms)]], 이리듐(Iridium), 나이트워치 벙커(Nightwatch Bunker), 메트로노모스 중포탑(Metronomos Heavy Turret), 제병협동 전술(Combined Arms Tactics), [[피해 유형(Damage Types)|피해 유형(Damage Types)]]
- **Projects/Contexts:** 오퍼레이션: 웨스턴 선(Operation: Western Sun)
- **Contradictions/Notes:** 소스에 따르면 기존 방어 플랫폼의 명칭(예: Airborne Platform -> Support Graviton)과 저항 기능이 완전히 재설계되었기 때문에, 이 업데이트 이후로 단일 속성에 기반한 단순 화력전 전술은 더 이상 유효하지 않게 되었습니다.
---
*Last updated: 2026-04-27*
@@ -0,0 +1,26 @@
# [[2026년 BCG 글로벌 게이밍 설문조사|2026년 BCG 글로벌 게이밍 설문조사]]
## 📌 Brief Summary
2026년 BCG 글로벌 게이밍 설문조사(Global Gaming Survey)는 약 3,000명의 전 세계 게이머를 대상으로 비디오 게임 산업의 소비자 동향과 행동을 분석한 자료입니다 [1, 2]. 이 설문조사는 3년간 이어진 게임 산업의 침체기가 끝나가고 있음을 시사하며, 새로운 성장을 견인할 주요 요소로 생성형 AI, 사용자 제작 콘텐츠(UGC), 클라우드 게이밍, 앱 스토어 개방의 네 가지 핵심 트렌드를 지목하고 있습니다 [1, 3]. 이는 성공적인 게임 경제 설계와 수익화 모델이 어떻게 변화해야 하는지에 대한 필수적인 시장 데이터를 제공합니다 [4].
## 📖 Core Content
* **게이머의 참여도 증가와 세대 간 연결**
설문조사에 따르면 게이머의 55%가 지난 6개월 동안 게임 시간을 늘린 것으로 나타났습니다 [5]. 성인들의 게임 참여도 지속적으로 증가하여 베이비붐 세대의 40%와 X세대의 50%가 주당 5시간 이상 비디오 게임을 즐기고 있습니다 [6]. 또한 부모 게이머의 44%는 자녀가 5세가 되기 전에 마인크래프트나 로블록스 등 사용자 제작 콘텐츠(UGC) 기반 게임을 통해 게임을 처음 접하게 한다고 응답하여, 세대를 거쳐 게임 사이클이 이어지고 있음을 보여줍니다 [5, 6].
* **새로운 유통 및 플랫폼 트렌드의 수용**
클라우드 게이밍과 관련하여 응답자의 60%가 이를 경험해 보았으며, 그중 80%가 긍정적인 반응을 보였습니다 [3, 7]. 이는 게임 산업이 특정 하드웨어에 얽매이지 않는 시대로 나아가고 있음을 시사합니다 [3, 8]. 한편 성인 게이머의 33%와 10대 게이머의 40%가 기존의 전통적 앱 스토어가 아닌 개발자 소유의 웹 스토어에서 직접 게임을 구매한 경험이 있다고 응답했습니다 [9]. 이러한 변화는 개발자가 폐쇄적인 앱 스토어를 벗어나 직접 유통망을 구축하고 자체적인 경제 생태계를 통제할 수 있는 새로운 비즈니스 모델의 기회를 보여줍니다 [3, 10].
* **UGC 및 생성형 AI에 대한 플레이어 반응**
게이머의 40%는 1년 전보다 더 많은 UGC를 소비하고 있다고 답했습니다 [3]. UGC는 주로 젊은 층에 집중되어 있으나, 60대 이상 게이머 중에서도 15%가 타인의 게임 스트리밍을 시청하고 28%는 UGC를 직접 시도해 볼 관심이 있다고 밝혀 잠재적 수용성이 높은 것으로 나타났습니다 [11]. 또한 생성형 AI의 게임 내 도입에 대해서도 플레이어들의 거부감은 예상보다 낮았습니다 [12]. 성인 게이머 중 10%만이 AI가 생성한 아트나 애니메이션에 대해 부정적이었고, 스토리나 퀘스트 생성은 7%, 지능형 NPC 도입에는 5%만이 부정적 반응을 보였습니다 [12].
* **게임 경제와 가격에 대한 민감성 및 수익화 전략**
성공적인 경제 설계를 위해 플레이어의 지불 의향을 분석한 결과, 응답자의 75% 이상이 게임 가격이 구매 선택에 결정적인 영향을 미친다고 응답했습니다 [13, 14]. 실제로 약 65%의 게이머는 할인을 기다리는 등의 방식으로 경제적 압박에 대응하고 있습니다 [14]. 반면 약 45%의 게이머는 진성 팬으로서 높은 가격에도 기꺼이 게임을 구매할 의향이 있는 것으로 나타났습니다 [14]. 이러한 양극화된 소비 행태는 게임 개발사들이 계층화된 가격 책정(Tiered pricing), 구독 모델, 윈도잉(Windowing), 인게임 광고 등의 고도화된 대체 수익화 전략을 게임 경제 설계에 도입해야만 성공적인 매출을 달성할 수 있음을 입증합니다 [15].
## 🔗 Knowledge Connections
- **Related Topics:** [[사용자 제작 콘텐츠(UGC)|사용자 제작 콘텐츠(UGC]], 클라우드 게이밍, 생성형 AI(GenAI), 수익화 전략(Monetization, [[가상 경제 시스템|가상 경제 시스템]]
- **Projects/Contexts:** Video Gaming Report 2026, 플랫폼 통합(Platform Convergence), [[게임 경제 설계(Game Economy Design)|게임 경제 설계(Game Economy Design]]
- **Contradictions/Notes:** 많은 게이머들이 생성형 AI나 클라우드 기반의 새로운 기술과 게임 환경의 확장에 대해서는 매우 열려있으나, 동시에 75% 이상의 플레이어가 구매 시 가격 인상에 민감하게 반응하는 모순적인 소비 성향을 보입니다. 이는 향후 혁신적인 기술이 도입된 게임이라 할지라도, 사용자의 세분화된 지불 능력을 고려한 정밀한 경제 모델 설계가 뒷받침되지 않으면 수익 창출에 실패할 수 있음을 경고합니다.
---
*Last updated: 2026-04-29*
@@ -0,0 +1,28 @@
# [[2026년 인공지능 시각 언어 생성 패러다임 전환 및 연속적 창작 워크플로우|2026년 인공지능 시각 언어 생성 패러다임 전환 및 연속적 창작 워크플로우]]
## 📌 Brief Summary
2026년의 인공지능 시각 언어 생성 기술은 단발성 이미지 추출에서 벗어나, 인간과 AI 에이전트가 긴밀하게 협업하는 '연속적 창작 워크플로우'의 패러다임으로 진화하였다 [1, 2]. 미드저니 V7의 드래프트 모드(Draft Mode)나 옴니 참조(Omni Reference)와 같은 기술의 도입으로 아이디어의 고속 대량 생산, 시각적 정체성의 일관성 유지, 정교한 사후 편집이 맞물린 체계적 작업이 가능해졌다 [3-5]. 이에 따라 이미지 프롬프트 작성법 역시 단순한 단어의 나열을 넘어, 카메라 물리 법칙이나 조명 과학 등의 시각적 전문 지식을 반영하고 각 AI 모델의 고유한 통제 언어를 다루는 고도화된 프롬프트 엔지니어링으로 격상되었다 [2, 6].
## 📖 Core Content
* **프롬프트 엔지니어링의 구조화 및 전문화**
성공적인 시각 언어 생성 프롬프트는 인공지능의 신경망 구조에 부합하도록 주체(Subject), 매체(Medium), 환경(Environment), 조명(Lighting), 기술적 매개변수(Parameters) 등 5가지 핵심 층위로 구성된다 [7, 8]. 특히 2026년에는 '85mm 렌즈', '얕은 피사계 심도' 같은 렌즈 물리학이나, '볼륨메트릭 라이팅(Volumetric Lighting)', '치아로스쿠로(Chiaroscuro)' 같은 조명 과학 기반의 정밀 키워드가 이미지의 깊이와 서사를 결정짓는 핵심 수단으로 활용된다 [6, 9].
* **연속적 창작 워크플로우와 드래프트 모드(Draft Mode)의 정착**
이미지 생성의 개념은 한 번에 완벽한 결과물을 얻는 것에서, 여러 시안을 탐색하고 정교화하는 반복적인 디자인 리뷰 루프(Design Review Loop)로 변화했다 [3, 10]. 미드저니 V7에 도입된 드래프트 모드는 기존 대비 약 10배 빠른 속도와 절반의 GPU 비용으로 아이디어를 시각화하며, 사용자가 유망한 구도를 선택해 고품질로 승격시키는 프로세스를 가능하게 했다 [1, 3, 4]. 또한, 생성 이후에도 인페인팅(Vary Region)이나 줌 아웃(Zoom Out)을 활용해 기존 맥락을 유지하면서 이미지를 부분 수정하거나 공간을 논리적으로 확장하는 사후 편집이 필수적인 단계로 자리 잡았다 [11-13].
* **모델별 맞춤형 프롬프트 제어와 참조 기능**
각 AI 플랫폼의 특성 및 구조적 '방언'에 맞춘 프롬프트 접근이 요구된다 [14].
* **미드저니(Midjourney):** 미학적 결과물 도출에 특화되어 있으며, 2026년 V7 모델의 핵심인 `--sref`(스타일 참조)와 `--oref`(옴니 참조) 매개변수를 통해 특정 캐릭터나 사물의 형태, 브랜드의 미학적 정체성을 여러 프롬프트에 걸쳐 일관되게 재현할 수 있다 [4, 5, 15, 16].
* **스테이블 디퓨전(Stable Diffusion):** `(keyword:factor)` 형식의 가중치 부여 문법과 통제된 부정 프롬프트(Negative Prompt)를 통해, 해부학적 왜곡이나 불필요한 시각적 노이즈를 픽셀 단위로 차단하는 정밀한 제어가 가능하다 [17-19].
* **DALL-E 3:** 대화형 GPT-4의 상호작용을 통해 복잡한 다중 객체의 배치나 오타 없는 정확한 텍스트 렌더링에서 우수한 성능을 보여주며, 자연어에 강하게 의존한다 [20, 21].
* **에이전틱 크리에이티브(Agentic Creative) 패러다임의 도래**
AI가 인간의 능력을 보조하는 것을 넘어 주도적으로 협력하는 2026년 '에이전틱 AI(Agentic AI)' 트렌드와 결합하여, 창작 환경에도 거대한 변화가 일어났다 [2, 22, 23]. 인간 창작자가 추상적인 비전을 제시하면, AI 에이전트가 이를 모델별 최적의 기술적 언어로 번역하고 대량의 시안을 자율적으로 생성하는 '에이전틱 크리에이티브' 시대가 열리며 소프트웨어적 상호작용 방식이 근본적으로 재정의되고 있다 [2, 24].
## 🔗 Knowledge Connections
- **Related Topics:** `프롬프트 계층 구조(Prompt Hierarchical Structure)`, `매개변수 제어(Parameter Control)`, `[[부정 프롬프트(Negative Prompt)|부정 프롬프트(Negative Prompt)]]`, `[[에이전틱 AI (Agentic AI)|에이전틱 AI(Agentic AI)]]`
- **Projects/Contexts:** `미드저니 V7 드래프트 모드(Midjourney V7 Draft Mode)`, `[[옴니 참조(Omni Reference, --oref)|옴니 참조(Omni Reference, --oref)]]`, `에이전틱 크리에이티브(Agentic Creative)`
- **Contradictions/Notes:** 모델 아키텍처에 따라 '부정 지시어'를 처리하는 메커니즘에 뚜렷한 모순과 차이가 존재한다. 스테이블 디퓨전은 이미지의 해부학적 오류(예: extra fingers)나 저화질 요소를 제거하기 위해 명시적인 부정 프롬프트 작성이 필수적이지만 [17, 19, 25], DALL-E 3 모델은 "사용하지 말 것(no, without)"과 같은 부정 지시어를 오히려 해당 피사체를 그려내라는 의미로 오인하는 한계가 있어 모든 프롬프트를 긍정형으로 작성해야 한다 [21, 26]. 또한 미드저니 V7 모델은 시각적이고 미학적인 아이디어 탐색 워크플로우에는 최적화되어 있으나, 정확한 타이포그래피나 엄격한 레이아웃을 그대로 복제해야 하는 작업에는 적합하지 않다는 제한점이 관찰된다 [27, 28].
---
*Last updated: 2026-04-30*
@@ -0,0 +1,39 @@
---
id: [[P-Reinforce|P-Reinforce]]-AUTO-EB3F3C
category: Dev
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - 20k skinned instances demo"
---
# [[20k skinned instances demo|20k skinned instances demo]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> '20k skinned instances demo'는 Three.js 기반의 오픈 소스 라이브러리인 [[InstancedMesh2|InstancedMesh2]]를 활용하여 20,000개의 개별적인 스킨드 인스턴스(Skinned instances)를 동시에 렌더링하는 성능 최적화 데모입니다 [1, 2]. 이 데모는 모바일 기기에서도 3,000개의 인스턴스를 원활하게 구동할 수 있도록 설계되었습니다 [2]. 프러스텀 컬링, 거리 기반 애니메이션 프레임 조절, 다중 LOD(Level of Detail) 생성 등 다양한 최적화 기법을 적용하여 단 5번의 드로우 콜만으로 렌더링을 처리하는 것이 특징입니다 [2, 3].
## 📖 구조화된 지식 (Synthesized Content)
이 데모는 제작자(agargaro)가 개발한 `[[InstancedMesh|InstancedMesh]]2` 라이브러리를 기반으로 하며, 대규모 스킨드 메쉬를 렌더링하기 위해 다음과 같은 세부 최적화 기술들을 사용했습니다 [2].
* **프러스텀 컬링 및 시야 기반 업데이트 ([[Frustum Culling|Frustum Culling]] & View-based Updates):**
기본적인 프러스텀 컬링을 적용하여 카메라 시야(Frustum) 내에 존재하는 인스턴스들에 대해서만 뼈대(Bones) 연산을 업데이트합니다 [2].
* **동적 애니메이션 프레임 제어:**
카메라와 각 인스턴스 간의 거리를 계산하여 애니메이션 FPS를 0에서 60 사이로 개별 설정함으로써 불필요한 연산을 줄입니다 [2].
* **LOD(Level of Detail)의 적극적 활용:**
`meshoptimizer`를 활용해 5단계의 기하학적 LOD를 생성했습니다 [2]. 거리가 먼 인스턴스에 대해서는 일부 뼈대 계산을 생략하며, 각 LOD마다 1개의 드로우 콜([[Draw Call|Draw Call]])만 발생시켜 총 5개의 드로우 콜만으로 렌더링을 완료합니다 [2, 3]. 또한, 그림자(Shadows) 렌더링 시에도 LOD를 관리할 수 있도록 구성되어 있습니다 [4].
* **개별 애니메이션 지원:**
단일 인스턴스들의 복제본들이 모두 동일한 애니메이션과 포즈를 공유하는 것이 아니라, 각 인스턴스마다 서로 다른 애니메이션을 가집니다 [5, 6]. 이 데모에서는 하나의 애니메이션 믹서(Mixer)를 사용했지만, 필요에 따라 인스턴스별로 믹서를 생성할 수도 있습니다 [6].
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** AI 분야의 자동 자산화 수행.
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[InstancedMesh2|InstancedMesh2]], [[Frustum Culling|Frustum Culling]], [[Level of Detail (LOD)|Level of Detail (LOD)]], Skinned Mesh, [[Draw Call|Draw Call]]
- **Projects/Contexts:** three.js
- **Contradictions/Notes:** 본 텍스처(Bone texture)의 부분 업데이트(Partial texture updates) 기능은 PC 환경에서 60FPS를 달성하는 데 도움이 될 수 있는 최적화 기법이지만, 모바일 기기와 파이어폭스(Mozilla Firefox) 브라우저에서는 이중 버퍼링(Double buffering) 부재로 인해 오히려 속도가 느려지는 문제가 있어 본 데모에서는 비활성화된 상태로 제공되었습니다 [2, 7].
---
*Last updated: 2026-04-19*
---
@@ -0,0 +1,37 @@
---
id: P-REINFORCE-AI-AC09DA
category: Art
confidence_score: 0.95
tags: []
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Batch 9 - Wikified 3D Gaussian Splatting (3DGS)"
---
# [[3D Gaussian Splatting (3DGS)|3D Gaussian Splatting (3DGS)]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> 3D Gaussian Splatting (3DGS)은 3D 스플랫(splat)들로 구성된 명시적 표현을 사용하여 고품질의 실시간 렌더링을 구현하는 혁신적인 기법이다 [1, 2]. 각 3D 가우시안은 중심 위치, 3D 공분산 행렬, 최대 불투명도, 그리고 구면 조화(Spherical Harmonics) 계수를 활용한 시점 종속적 색상으로 정의된다 [2]. 올바른 렌더링을 위해 카메라로부터의 거리를 기준으로 가우시안들을 뒤에서 앞으로 정렬(depth sorting)하고 알파 블렌딩(alpha-blending)하는 과정이 필수적이며 [3, 4], 미분 가능한 특성 덕분에 브라우저 환경에서 고품질 재구성 및 생성적 3D 모델링에 활발히 응용되고 있다 [1].
## 📖 구조화된 지식 (Synthesized Content)
- **기본 동작 원리와 렌더링 구조:**
3DGS는 장면을 구성하는 3D 가우시안들을 2D 이미지 평면으로 투영하여 렌더링을 수행한다 [2, 4]. 투영된 2D 공분산 행렬과 학습된 불투명도를 기반으로 각 픽셀에 대한 알파 기여도를 계산하며, 카메라 시점 방향에 따른 구면 조화 함수를 평가하여 반사 효과 및 최종 색상을 결정한다 [2, 4]. 투명도를 올바르게 처리하기 위해 수백만 개의 가우시안을 매 프레임마다 카메라와의 거리에 따라 뒤에서 앞으로 정렬해야 하는 막대한 연산이 요구된다 [3-5].
- **WebGL 환경에서의 성능 한계 및 오류:**
기존의 WebGL API는 범용적인 GPU 연산(Compute) 기능을 지원하지 않아, 3DGS의 핵심인 깊이 정렬 작업을 JavaScript나 WebAssembly를 통해 CPU에 오프로드해야 한다 [6-8]. 이는 CPU가 정렬을 마친 뒤 큰 버퍼를 GPU로 업로드하고 드로우 콜을 발생시켜야 하는 심각한 동기화 병목 현상을 유발하며, 장면이 복잡해질수록 16.67ms의 프레임 예산을 맞추지 못하게 만든다 [6, 8]. 실제로 CesiumJS와 같은 시스템에서는 대규모 데이터셋 처리 시 1프레임 내에 정렬이 끝나지 않아 여러 개의 Promise 체인이 서로 간섭하는 경합 조건(race condition)이 발생하며, 이로 인해 모델이 깜빡이거나 렌더링되지 않는 WebGL 오류 및 마이크로 스터터링(micro-stuttering)이 보고되었다 [9-12].
- **WebGPU 및 WebSplatter를 통한 GPU 파이프라인 최적화:**
WebGL의 구조적 한계를 극복하기 위해 WebGPU의 컴퓨트 셰이더(Compute Shader)를 활용하는 접근법이 대두되었다 [6, 7, 13]. 대표적으로 WebSplatter 프레임워크는 깊이 정렬과 시점 적응형 평가를 모두 GPU 연산으로 이전하여 CPU-GPU 간의 동기화 오버헤드를 제거하였다 [6, 14]. 특히 WebGPU 환경에 글로벌 아토믹(global atomics) 기능이 부족한 점을 우회하기 위해, 하드웨어 스케줄링에 구애받지 않는 '대기 없는(wait-free) 계층적 기수 정렬(radix sort)' 알고리즘을 도입하였다 [6, 15, 16]. 또한, 래스터화 이전 단계에서 불투명도 및 시야 범위(Bounding Box)를 기준으로 화면 밖 스플랫을 선제적으로 제거하는 동적 컬링(culling)을 적용하여 메모리 대역폭과 오버드로우를 크게 줄였다 [15, 17-19].
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 신규 문서로, 기존 정보와의 충돌 분석 예정.
- **정책 변화:** Graphics & Performance 카테고리의 지식 연결망 강화를 위한 표준 위키화 적용.
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[WebGPU|WebGPU]], [[WebGL|WebGL]], [[Compute Shader|Compute Shader]]
- **Projects/Contexts:** WebSplatter, [[CesiumJS|CesiumJS]]
- **Contradictions/Notes:** WebGL 기반의 기존 3DGS 구현은 정렬 작업을 CPU에 의존하므로 동기화 병목과 프레임 지연이 발생하지만, WebGPU 기반의 WebSplatter는 파이프라인 전체를 GPU에서 병렬 연산함으로써 기존 웹 뷰어 대비 최대 4.5배의 렌더링 속도 향상과 낮은 메모리 소모를 달성한다 [6, 8, 15, 20].
---
*Last updated: 2026-04-19*
- Raw Source: 00_Raw/2026-04-20/3D Gaussian Splatting (3DGS).md
---
+34
View File
@@ -0,0 +1,34 @@
---
id: P-REINFORCE-AI-074AE7
category: Business
confidence_score: 0.95
tags: []
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Batch 9 - Wikified 3D Web-based HMI"
---
# [[3D Web-based HMI|3D Web-based HMI]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> 3D Web-based HMI는 사용자가 기계 또는 자동화 시스템과 통신할 수 있도록 지원하는 소프트웨어 인터페이스로, 주로 SCADA(Supervisory Control and Data Acquisition) 시스템의 기기 모니터링 및 제어를 위한 디스플레이 역할을 수행합니다 [1, 2]. 기존 HMI 시스템의 특정 플랫폼 종속성과 별도의 소프트웨어 설치 요구라는 한계를 극복하기 위해 제안되었습니다 [3]. WebGL과 WebSocket 기술을 활용하여 사용자는 별도의 소프트웨어 설치 없이 모든 플랫폼의 HTML5 웹 브라우저에서 실시간 데이터 통신 및 3D 그래픽 렌더링을 경험할 수 있습니다 [3-5].
## 📖 구조화된 지식 (Synthesized Content)
* **도입 배경 및 기존 HMI의 한계:** 공장 및 빌딩 자동화 분야에서 널리 쓰이는 SCADA 시스템의 벤더들은 전통적으로 독점적인 HMI 소프트웨어를 제공해 왔습니다 [2]. 예를 들어, 상용 제품인 Genesis64의 GraphWorX64 컴포넌트는 Windows 운영 체제, .NET Framework, DirectX 설치 및 Internet Explorer 사용을 강제하는 플랫폼 종속적인 한계가 있었습니다 [6, 7]. 3D Web-based HMI는 이러한 문제점을 극복하고자 웹 기술을 바탕으로 고안되었습니다 [2, 3].
* **핵심 렌더링 및 통신 기술:** 3D Web-based HMI는 OpenGL ES 2.0을 기반으로 하는 크로스 플랫폼 웹 그래픽 라이브러리인 WebGL을 사용하여 3D 장면을 구성합니다 [4]. 저수준 API인 WebGL의 복잡성을 줄이기 위해 Three.js 라이브러리의 `WebGLRenderer()`를 활용하며, 화면 주사율에 맞춰 자연스러운 애니메이션을 처리하기 위해 `RequestAnimationFrame()`을 사용합니다 [4, 8]. 데이터 통신 측면에서는 HTTP 대신 WebSocket을 사용하여 서버와 클라이언트 간의 데이터가 빠르게 변경되는 상황에서도 효율적으로 대처할 수 있습니다 [3].
* **초당 프레임 수(FPS) 성능:** 상용 3D HMI 제품(GraphWorX64)과 성능을 비교 평가한 결과, 3D Web-based HMI는 브라우저(Internet Explorer 및 Chrome) 환경에서 큐브(Cube) 개수가 0.5K~0.8K일 때 목표 최대 성능인 60 FPS를 안정적으로 유지했습니다 [1, 9]. 큐브 개수가 증가하여 1.1K~1.6K에 도달했을 때는 인간의 눈이 프레임 건너뛰기를 감지하지 못하는 최소 기준인 30 FPS를 기록했습니다 [1, 9, 10].
* **프레임 지연 시간(Frame Time Latency) 및 디스플레이 품질:** FPS가 높더라도 프레임 시간이 불규칙하면 화면 끊김(Stuttering)이 발생할 수 있습니다 [10]. 실험 결과, 3D Web-based HMI는 객체가 5K에 이를 때까지 상용 제품보다 각 프레임을 렌더링하는 데 걸리는 시간 편차가 적어 훨씬 부드럽고 일관된 디스플레이를 제공했습니다 [1, 11, 12].
* **시스템 리소스 소모:** CPU 사용량은 약 40%, 메모리 사용량은 약 180MB 수준으로 상용 HMI(약 240MB)보다 메모리를 더 적게 사용하여 안정적인 모습을 보였습니다 [5, 13]. 다만 GPU 사용량은 상용 제품과 비교했을 때 평균적으로 약 5% 정도 더 높게 나타났습니다 [5, 13].
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 신규 문서로, 기존 정보와의 충돌 분석 예정.
- **정책 변화:** Automation & Industry 카테고리의 지식 연결망 강화를 위한 표준 위키화 적용.
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[SCADA|SCADA]], [[WebGL|WebGL]], [[Three.js|Three.js]], WebSocket, Frame Time Latency
- **Projects/Contexts:** Genesis64 상용 제품과의 웹 기반 3D 렌더링 성능 벤치마크
- **Contradictions/Notes:** 3D Web-based HMI는 프레임의 부드러움(일관성)에서는 상용 제품보다 뛰어나지만, 전체 프로세스 소요 시간 중 약 96% 이상이 객체를 생성하는 실행 시간(Execution Time)이 아닌 렌더링 시간(Rendering Time)에 집중되어 있습니다. 이는 향후 렌더링 코드 최적화를 통해 성능을 더욱 개선해야 할 주요 병목 지점임을 시사합니다 [9, 14].
---
*Last updated: 2026-04-19*
- Raw Source: 00_Raw/2026-04-20/3D Web-based HMI.md
---
+29
View File
@@ -0,0 +1,29 @@
---
id: [[P-Reinforce|P-Reinforce]]-3DGS-001
category: Dev
confidence_score: 0.95
tags: [graphics, rendering, ai]
last_reinforced: 2026-04-20
github_commit: "initial-reinforce"
---
# [[3D_Gaussian_Splatting|3D Gaussian Splatting]] (3DGS)
## 📌 한 줄 통찰 (The Karpathy Summary)
> 포인트 클라우드를 넘어서 공간을 가속화된 가우시안 타원체로 표현함으로써 실시간 렌더링의 새로운 지평을 열다.
## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** 복잡한 메시 구조 없이도 밀도 있는 포인트 클라우드에서 가우시안 파라미터를 최적화하여 사실적인 부피감을 구현하는 비선형 최적화 패턴.
- **세부 내용:**
- 타일 기반의 가시성 정렬을 통한 고속 렌더링.
- 미분 가능한 렌더링(Differentiable Rendering)을 통한 파라미터 학습.
- NeRF 대안으로서의 압도적 렌더링 속도 확보.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 메시에 기반한 전통적인 래스터화 방식과 개념적으로 충돌하나, 성능 면에서 우위를 점함.
- **정책 변화:** 렌더링 효율성(w1) 가중치를 높게 평가하여 그래픽스 카테고리의 최상단 지식으로 배치.
## 🔗 지식 연결 (Graph)
- **Parent:** 10_Wiki/💡 Topics/Graphics
- **Related:** NeRF, Point-Cloud, Radiance-Fields
- **Raw Source:** 00_Raw/2026-04-20/3D Gaussian Splatting (3DGS).md
+29
View File
@@ -0,0 +1,29 @@
---
id: [[P-Reinforce|P-Reinforce]]-HMI-001
category: Dev
confidence_score: 0.90
tags: [web, hmi, interface, 3d]
last_reinforced: 2026-04-20
github_commit: "initial-reinforce"
---
# 3D Web-based HMI
## 📌 한 줄 통찰 (The Karpathy Summary)
> 산업용 제어 인터페이스를 브라우저 환경에서 3D로 시각화하여 정보의 직관성과 조작성을 극대화하다.
## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** 물리적 장비의 디지털 트윈을 웹 소켓 기반 실시간 데이터와 바인딩하여 3D 공간에서 인터랙션을 구현하는 추상화 패턴.
- **세부 내용:**
- Three.js/React Three Fiber를 활용한 저사양 기기 최적화.
- 실시간 텔레메트리 데이터의 가상화 매핑.
- 사용자 경험(UX) 중심의 직관적 물리 인터페이스 설계.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 2D 평면 스카다([[SCADA|SCADA]]) 시스템에서 입체적 모니터링 환경으로의 전환.
- **정책 변화:** 구조적 연결성(w2) 관점에서 디지털 트윈 아키텍처와 통합 분석 필요성 제기.
## 🔗 지식 연결 (Graph)
- **Parent:** 10_Wiki/💡 Topics/Graphics
- **Related:** Three.js, Digital-Twin, [[SCADA|SCADA]]
- **Raw Source:** 00_Raw/2026-04-20/3D Web-based HMI.md
+34
View File
@@ -0,0 +1,34 @@
---
id: e9f8d7c6-b5a4-3210-9876-54321fedcba0
category: Dev
confidence_score: 1.0
tags: [4x-[[Strategy|Strategy]], [[Game-Mechanics|Game-Mechanics]], explore-expand-exploit-exterminate, mmo-strategy, genre-blending]
last_reinforced: 2026-04-27
github_commit: "[[P-Reinforce|P-Reinforce]]-game-update"
---
# [[4X Strategy|4X Strategy]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> 4X 전략은 4가지 핵심 루프(Explore, Expand, Exploit, Exterminate)를 기반으로 고도의 리스크 관리와 소셜 엔지니어링을 결합하여 모바일 시장 최고의 LTV를 창출하는 장르다.
## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** 시간 제한(Time-gating)과 영구 손실([[Permanent Loss|Permanent Loss]])을 활용한 과금 모멘텀 및 장르 블렌딩을 통한 유저 확장.
- **핵심 루프:**
- **Explore & Expand:** 지도 정찰과 요새(Citadel) 확장을 통한 초기 성장 동력 확보.
- **Exploit:** '적자 경제(Deficit economy)'와 '시간 제한(Time-gating)' 병목 현상을 통한 자원/가속 아이템 결제 유도.
- **Exterminate:** 병력의 영구적 손실(Zeroing)과 복수 심리를 자극하여 폭발적인 매출 피크 달성.
- **수익화 접근 전략:**
- **Immediate (즉각적):** 초반부터 빽빽한 UI와 다층적 이벤트를 통해 결제 루프를 강제 (예: Evony).
- **Gradual (점진적):** 초기 몰입과 신뢰 구축 후 후반부에 가성비 오퍼를 통해 지출을 유도 (예: [[Rise of Kingdoms|Rise of Kingdoms]]).
- **진화 및 트렌드:**
- **Genre-blending:** 매치3, 머지(Merge), RPG 요소를 결합하여 하드코어 장르의 진입 장벽을 낮추고 신규 유저층 확보.
- **Social Power Structure:** 왕/황제 등 봉건적 권력 구조와 동맹 간의 소셜 압박을 통한 유지력 극대화.
## 🔗 지식 연결 (Graph)
- **Parent:** Genre & Mechanics
- **Related:** [[Monetization (BM)|Monetization (BM]], Staircase Monetization, Alliance, VIP System, [[Permanent Loss|Permanent Loss]]
- **Raw Source:** 00_Raw/4X Strategy, 00_Raw/4X Strategy Games, 00_Raw/4X Strategy Monetization
---
*Last updated: 2026-04-27*
@@ -0,0 +1,24 @@
# [[4X 시스템 (4X System)|4X 시스템 (4X System)]]
## 📌 Brief Summary
4X 시스템은 탐험(eXplore), 확장(eXpand), 활용(eXploit), 섬멸(eXterminate)의 네 가지 핵심 요소를 기반으로 하는 전략 게임의 장르 및 구조이다 [1-3]. 초기에는 PC 게임을 설명하기 위해 만들어진 용어였으나, 모바일 환경에서는 실시간 자원 관리, 대규모 전술 전투 및 외교와 전쟁을 아우르는 강력한 소셜 시스템과 결합하여 발전했다 [1, 2, 4]. 특히 *Game of War*와 같은 모바일 미드코어 4X 게임은 플레이어를 지속적인 경쟁과 위협으로 몰아넣어 높은 지출을 유도하는 게임 경제 및 BM의 핵심 뼈대로 작동한다 [3, 5].
## 📖 Core Content
* **4X 시스템의 핵심 기둥 (The 4 Pillars of 4X Strategy)**
* **탐험 (Explore):** 거대한 지도를 정찰하여 주변 영토, 자원 및 다른 플레이어의 위치를 파악하는 시스템이다 [2]. *Game of War*에서는 플레이어가 지도의 안개를 걷어내는 것이 아니라 정찰을 통해 몬스터, 자원 타일, 그리고 적군의 거점을 파악하는 정보전의 형태로 구현된다 [5].
* **확장 (Expand):** 새로운 정착지를 개척하거나 기존 영토의 영향력을 넓히는 과정이다 [2]. 모바일 4X에서는 성채(Citadel)를 중심으로 병영, 아카데미, 병원 등의 인프라를 건설하고 업그레이드하는 형태로 나타나며, 이 과정에서 긴 대기 시간을 요구하는 타임 게이팅(Time-gating) 요소가 처음으로 도입된다 [6-8].
* **활용 (Exploit):** 통제 구역 내의 자원 생산과 소비를 최적화하여 경제 효율성을 극대화하는 단계이다 [2]. 특히 강력한 병력을 유지하기 위해 막대한 식량과 자원이 지속적으로 소모되는 '적자 경제(Deficit economy)' 상황을 관리해야 하며, 이는 플레이어가 게임을 지속하거나 아이템을 구매하게 만드는 동기로 작용한다 [8, 9].
* **섬멸 (Exterminate):** 적대적인 라이벌 플레이어를 공격하고 제거하는 시스템이다 [2]. 보병, 원거리, 기병, 공성 병기 간의 가위바위보식 상성에 따라 전투가 이루어지며, 병력을 잃으면 완전히 소멸해버리는 '영구적 손실(Permanent loss)' 구조를 띠어 플레이어가 이를 복구하기 위해 막대한 과금을 하도록 유도한다 [10, 11].
* **모바일 4X 게임의 구조적 진화**
* 모바일 기기로 넘어오면서 4X 시스템은 세밀한 전술 조작보다 메타게임(Metagame) 중심의 상호작용으로 변화했다 [4]. 협력과 배신, 실시간 채팅 번역을 통한 글로벌 동맹 등 고도로 발달된 소셜 엔지니어링이 게임 플레이의 중심이 되었다 [4, 12, 13].
* 이러한 시스템은 끝없이 확장 가능한 경제 스케일과 결합하여 끊임없는 파워 인플레이션(Power Creep)을 만들어내며, 이는 업계 최고 수준의 LTV(고객 생애 가치)를 창출하는 원동력이 된다 [1, 14, 15].
* 최근 4X 장르의 경쟁이 치열해지면서, 더 넓은 유저층을 유입시키기 위해 기존 4X 메커니즘 위에 RPG, 매치3 퍼즐, 머지(Merge) 요소 등을 결합하는 '장르 혼합(Genre-blending)' 전략이 핵심 트렌드로 자리 잡았다 [16-18].
## 🔗 Knowledge Connections
- **Related Topics:** 모네타이제이션 (Monetization), [[영구적 손실 (Permanent Loss)|영구적 손실 (Permanent Loss)]], 타임 게이팅 (Time-gating), 장르 혼합 (Genre-blending)
- **Projects/Contexts:** [[Game of War- Fire Age|Game of War: Fire Age]], [[Machine Zone|Machine Zone]], Kingdoms of Camelot
- **Contradictions/Notes:** 전통적인 PC 4X 게임(예: 에이지 오브 엠파이어)은 플레이어가 전투의 모든 과정을 시각적으로 확인하고 통제하지만, 모바일 4X 게임은 전투 과정을 생략하고 결과만 보고서 형태로 제공하여 전투 최적화를 계산적인 메타게임의 영역으로 넘겼다는 차이점이 있습니다 [4, 19].
---
*Last updated: 2026-04-27*
@@ -0,0 +1,29 @@
# [[4X 전략 게임 수익화 모델|4X 전략 게임 수익화 모델]]
## 📌 Brief Summary
4X 전략 게임의 수익화 모델은 플레이어의 진행 상황, 소셜 상호작용, 그리고 감정적 몰입(예: 전투 패배 후의 복수심)을 극대화하여 지속적인 지불을 유도하는 정교한 시스템입니다 [1-3]. 시장을 주도하는 주요 전략으로는 게임 초반 최고조에 달한 흥미를 이용해 즉각적으로 소비를 유도하는 방식과 장기적인 신뢰 및 몰입을 구축한 뒤 점진적으로 결제를 제안하는 방식이 있습니다 [1, 4]. 특히 'Game of War'와 같은 선구적인 게임들은 개인의 지불 의향(Willingness to Pay)을 최대화하는 알고리즘 기반의 '계단식(Staircase)' 가격 모델, 끊임없이 활성화가 필요한 VIP 시스템, 그리고 플레이어의 마찰 지점(Friction point)을 공략한 맞춤형 판매를 통해 모바일 게임 역사상 최고 수준의 LTV(고객 생애 가치)와 ARPPU(결제 유저당 평균 수익)를 달성했습니다 [1, 3, 5, 6].
## 📖 Core Content
**1. 4X 전략 게임의 수익화 단계별 주요 전략**
* **초기 단계 (1~2주차):** 무과금 유저의 이탈을 막으면서 첫 결제를 유도하는 기간입니다 [7]. 튜토리얼과 함께 저렴하고 혜택이 많은 '스타터 팩'이나 첫 충전 보너스 등을 제공하며, 빠른 성장 속도를 통해 게임에 안착하게 만듭니다 [7].
* **중기 단계 (3주~3개월차):** 건설 및 연구 타이머가 눈에 띄게 길어지고, 제한적인 자원 관리와 동맹 간의 협력/경쟁이 심화됩니다 [8]. 시즌 이벤트 번들, 영웅 조각, 장비 자원, 배틀 패스 및 구독 모델 등이 도입되어 안정적인 수익 흐름을 창출합니다 [8].
* **후기 단계 (4개월차 이후):** 대규모 서버전(KvK)과 동맹의 왕좌 쟁탈전 등 높은 경쟁 시스템이 도입됩니다 [9]. 플레이어의 경쟁력을 유지하기 위해 스피드업(가속), 치료 등의 일일 자원 소진(Resource Sinks)이 강제되며, 하드 커런시(Hard currency) 소비와 지속적인 고액 패키지 결제가 필수적으로 요구됩니다 [9]. 실제 상위 4X 게임 IAP 수익의 70% 이상은 이러한 하드 커런시에서 발생합니다 [10].
**2. 두 가지 핵심 접근법: 즉각적 vs 점진적 수익화**
* **즉각적 수익화 (Immediate Monetization):** 게임의 첫 세션부터 복합적인 이벤트(동시에 최대 15개 진행 등)와 수많은 알림 팝업을 통해 적극적으로 결제를 유도하는 방식입니다 [11, 12]. 잦은 무료 보상을 미끼로 삼아, 결국은 결제가 필요한 시스템에 플레이어를 끌어들여 지속적인 소액 결제 루프를 형성합니다 [13, 14].
* **점진적 수익화 (Gradual Monetization):** 초기에는 과금 배너를 최소화하여 깔끔한 UI를 제공하고, 메인 코어 루프와 내러티브 등 게임플레이 몰입 자체에 집중하는 방식입니다 [15, 16]. 플레이어가 엑스트라 빌더나 프리미엄 영웅의 가치를 명확히 이해하게 된 시점(예: 주요 건물 업그레이드 완료 후)에 맞추어 결제를 제안함으로써 플레이어의 거부감을 줄이고 장기적인 신뢰를 구축합니다 [16, 17].
**3. 'Game of War'가 정립한 고도화된 BM 메커니즘**
* **계단식 가격 에스컬레이션 (Staircase Model):** 고정된 가격의 상점이 아닌, 유저의 지불 의향에 따라 가격이 오르는 구조를 띄고 있습니다 [6]. 유저가 $4.99의 초반 패키지를 구매하면 이 옵션은 사라지고 $19.99 팩이 나타나며, 종국에는 $99.99 팩이 결제의 기본 단위(Spend floor)로 자리 잡게 됩니다 [6, 18-20].
* **데이터 기반 개인화 및 마찰 지점(Point of Friction) 타겟팅:** 실시간 엔진(RTE)을 이용해 플레이어의 행동 데이터를 세밀하게 분석합니다 [3]. 예를 들어, 플레이어의 군대가 전멸했을 때 잃어버린 군대를 재건하는 데 정확히 필요한 양의 자원과 가속 아이템을 담은 $99.99짜리 '복수 팩(Revenge Pack)'을 즉각적으로 제안하여 결제를 유도합니다 [3, 21].
* **적자 경제(Deficit Economy)와 영구적 손실:** 플레이어의 군대가 거대해지면 자연적인 자원 생산량을 초과하여 식량을 소비하는 '적자 경제'에 빠지게 됩니다 [22, 23]. 또한, 꽉 찬 병원 용량을 넘어서 전투에서 패배하면 부대가 서버에서 영구적으로 삭제되어 막대한 시간과 금전적 투자가 순식간에 날아가 버립니다 [24, 25]. 이 잔혹한 시스템은 플레이어가 순위를 복구하기 위해 값비싼 '즉시 훈련' 팩을 사도록 강제합니다 [24, 26].
* **이중 VIP 시스템 (Layered VIP System):** 누적 과금액으로 영구적인 VIP '레벨'이 오르지만, 이 레벨에 따른 강력한 버프 혜택을 실제로 받기 위해서는 일정 시간만 지속되는 'VIP 활성화(Activation)' 아이템을 지속적으로 소비해야 합니다 [27, 28]. 활성화 비용 때문에 고래(Whale) 유저조차도 혜택을 유지하려면 게임 경제에 계속해서 돈을 지불해야 합니다 [29, 30].
## 🔗 Knowledge Connections
- **Related Topics:** [[계단식 수익화 모델 (Staircase Monetization)|계단식 수익화 모델 (Staircase Monetization)]], 마찰 지점 공략 (Point of Friction), [[적자 경제 (Deficit economy)|적자 경제 (Deficit Economy)]], 이중 VIP 시스템 (Dual-layer VIP System), 즉각적 수익화 vs 점진적 수익화
- **Projects/Contexts:** [[Game of War- Fire Age|Game of War: Fire Age]], [[Fate War|Fate War]], [[Rise of Kingdoms|Rise of Kingdoms]], [[Puzzles & Survival|Puzzles & Survival]], Evony
- **Contradictions/Notes:** 소스 [11, 14]는 초기부터 적극적인 팝업과 압박적인 이벤트 구조로 즉각적인 결제를 유도하는 것이 성공적인 수익화 모델이라 분석하는 반면, 소스 [15-17]은 오히려 초반 과금 압박을 배제하고 게임플레이 몰입도를 높인 뒤 유저가 스스로 필요성을 느낄 때 자연스럽게 결제를 제안하는 '점진적 방식'이 장기적인 신뢰와 리텐션 형성에 동등하게 효과적인 전략이라고 설명하며, 장르 내에서도 상반된 디자인 철학이 공존함을 보여줍니다.
---
*Last updated: 2026-04-27*
+25
View File
@@ -0,0 +1,25 @@
# [[4X 전략|4X 전략]]
## 📌 Brief Summary
4X 전략은 1990년대 PC 게임에서 처음 유래한 용어로, 탐험(Explore), 확장(Expand), 활용(Exploit), 섬멸(Exterminate)의 네 가지 핵심 요소를 기반으로 하는 전략 게임 장르를 의미한다 [1-3]. 모바일 시장에서 4X 전략 게임은 복잡한 경제 시스템, 장기적인 성장, 고도화된 소셜 인프라를 통해 모바일 게임 중 가장 높은 수준의 유저 생애 가치(LTV)를 창출하는 미드코어 장르로 자리 잡았다 [1, 4, 5]. 특히 'Game of War'와 같은 게임은 이 4X 루프를 모바일에 최적화된 실시간 다중 사용자(MMO) 환경에 접목하고, 정교한 계단식 수익화 모델(BM)을 결합하여 업계에 지대한 영향을 미쳤다 [6-8].
## 📖 Core Content
**4X 장르의 핵심 구조 (The 4X Core)**
'Game of War'를 비롯한 4X 게임은 아래의 4가지 행동을 중심으로 끊임없는 자원 소비와 성장의 순환 구조를 가진다.
* **탐험(Explore):** 광활한 월드 맵을 정찰하여 자원 지대, 몬스터, 적의 위치 등 주변 영토와 비밀을 파악하는 활동이다 [2, 9, 10]. 'Game of War'에서는 512x1024 크기의 격자 맵 위에서 거리를 계산하고 적군을 정찰하는 것이 핵심 전략이 된다 [9].
* **확장(Expand):** 새로운 정착지를 건설하거나 성채(Citadel), 병영, 병원 등 도시의 건물을 업그레이드하여 세력을 넓히는 과정이다 [2, 10-12]. 이 과정에는 시간이 소요되는 '타임 게이트(Time-gating)'가 존재하며, 레벨이 오를수록 몇 달이 걸리기도 하여 '시간 단축(Speed Ups)' 아이템의 구매를 강력하게 유도한다 [13-15].
* **활용(Exploit):** 점령한 지역에서 자원을 수집하고 경제 효율성을 최적화하는 단계다 [2, 10]. 게임 내 군대의 규모가 커질수록 자원의 자연 생산량보다 군대 유지비(Upkeep)가 더 커지는 '적자 경제(Deficit Economy)'가 발생하며, 이는 유저가 계속해서 자원 패키지를 구매하거나 월드 맵에서 위험을 감수하고 자원을 채집하도록 강제한다 [13, 16].
* **섬멸(Exterminate):** 경쟁 플레이어의 도시를 공격하고 병력을 제거하는 활동이다 [2, 10, 17]. 4X 게임의 전투는 유저의 병력이 한 번 파괴되면 서버에서 영구적으로 소멸하는 '영구적 손실(Permanent Loss)' 메커니즘을 따르기 때문에, 유저는 자신의 투자와 권력을 잃지 않기 위해 끊임없이 병력을 회복하고 과금하도록 자극받는다 [18-21].
**모바일 4X 게임의 BM 및 소셜 시스템**
* **수익화(Monetization) 전략:** 4X 장르의 선두 게임들은 플레이어를 결제로 이끌기 위해 두 가지 주요 접근법을 사용한다. 흥미가 최고조에 달한 초반부터 다양한 혜택과 중첩되는 이벤트를 통해 결제를 유도하는 **'즉각적 수익화(Immediate Monetization)'**와 초기에는 게임 플레이와 몰입에 집중하게 한 뒤 점진적으로 큰 결제를 요구하는 **'점진적 수익화(Gradual Monetization)'**가 그것이다 [1, 22-25]. 'Game of War'는 구매할 때마다 다음 패키지의 가격이 갱신되어 점차 높아지는 '계단식(Staircase)' 모델과 활성화(Activation) 상태에서만 버프를 제공하는 이중 구조의 VIP 시스템을 통해 지출을 극대화했다 [26-28].
* **소셜 엔지니어링 및 봉건적 정치 구조:** 4X 게임은 동맹(Alliance) 중심의 고도화된 정치 및 사회적 생태계를 지닌다 [29-31]. 실시간 번역 기능을 통한 전 세계 유저 간의 소통, 권력을 잡은 자가 타인에게 버프나 디버프 칭호를 내리는 '왕(King)' 시스템, 동맹원 간의 상호 자원 및 시간 단축 지원 시스템 등은 유저들이 사회적 책임감과 압박감(Peer pressure)을 느끼게 하여 이탈을 막고 더 많은 금액을 투자하도록 묶어둔다 [32-36].
* **엔드게임(Endgame) 및 장르 융합(Genre-Blending):** 4X 게임의 최종 목표는 왕국 내의 'Wonder' 쟁탈전이나 다른 서버와 통째로 맞붙는 '왕국 간 전쟁(KvK)'에 참전하는 것이다 [37-40]. 최근 치열해진 시장 경쟁 속에서 새로운 4X 게임들은 매치3, 퍼즐, RPG 등의 캐주얼 요소를 도입하여 더 넓은 대중을 유입시킨 후 심도 있는 4X 후반부로 연결하는 '장르 융합' 전략을 통해 성공을 거두고 있다 [41-44].
## 🔗 Knowledge Connections
- **Related Topics:** 수익화 모델(BM), [[VIP 시스템|VIP 시스템]], [[소셜 엔지니어링 (Social Engineering)|소셜 엔지니어링(Social Engineering)]], 왕국 간 전쟁(KvK), 장르 융합(Genre-Blending)
- **Projects/Contexts:** [[Game of War- Fire Age|Game of War: Fire Age]], Machine Zone(MZ), [[Mobile Strike|Mobile Strike]], [[Puzzles & Survival|Puzzles & Survival]], State of Survival
- **Contradictions/Notes:** 4X 게임의 과금 전략과 관련하여 소스들은 두 가지 뚜렷한 대비를 보여줍니다. 초기 세션부터 HUD에 과금 알림과 이벤트 팝업을 가득 띄워 반복적인 소액 결제를 유도하는 방식(예: Evony)이 있는 반면, 초기에는 결제 압박을 피하고 게임 서사와 핵심 루프에 몰입시킨 후 필요해지는 시점에 선택적 과금으로 신뢰를 쌓아가는 방식(예: Rise of Kingdoms)이 서로 공존하며 성공을 거두고 있습니다 [22-24, 45].
---
*Last updated: 2026-04-27*
+19
View File
@@ -0,0 +1,19 @@
# [[5R Structure|5R Structure]]
## 📌 Brief Summary
컨설팅 케이스 인터뷰의 최종 단계에서 지원자가 분석한 결과와 권고사항을 논리적이고 효과적으로 종합하여 발표하기 위해 사용하는 5단계 커뮤니케이션 프레임워크입니다. 피라미드 원칙을 응용하여 결론과 근거를 앞세우고, 이에 더해 리스크 및 비즈니스 유지 방안까지 포괄하여 단순한 답변을 넘어선 전략적 통찰력을 보여줍니다. 이를 통해 면접관에게 지원자의 체계적인 사고력과 비즈니스 감각을 각인시킬 수 있습니다.
## 📖 Core Content
* **Recap (요약):** 클라이언트가 직면했던 **초기 문제와 목표를 다시 한번 상기**시켜 인터뷰어와 인터뷰이 간의 상황적 맥락을 일치시킵니다 [51].
* **Recommend (권고):** 문제에 대한 핵심 해결책을 1~2문장으로 요약하여 **결론부터 명확하게 제시**합니다. 이는 피라미드 원칙의 최상단에 해당합니다 [51].
* **Reasons (근거):** 제시한 권고사항을 뒷받침하는 **3가지 세부적인 데이터나 분석적 주장**을 논리적으로 제시합니다 [51].
* **Risk (위험 요소):** 권고안을 실행할 때 클라이언트가 직면할 수 있는 잠재적 리스크를 식별하고, 이를 최소화할 수 있는 현실적인 완화(Mitigation) 방안을 함께 제안합니다 [52].
* **Retention (비즈니스 유지/다음 단계):** 이번 프로젝트의 다음 단계에서 컨설팅 팀이 어떻게 추가적인 가치를 창출하고 클라이언트의 후속 비즈니스를 유치할 수 있을지 전략적으로 제안합니다 [52].
## 🔗 Knowledge Connections
- **Related Topics:** Case Interview Synthesis, [[Pyramid Principle|Pyramid Principle]]
- **Projects/Contexts:** 전략 컨설팅 케이스 인터뷰 최종 결론 발표, 클라이언트 대상 제안서 및 최종 보고
- **Contradictions/Notes:** 앞의 3가지 R(Recap, Recommend, Reasons)은 피라미드 원칙에 따른 필수적인 구조화 작업인 반면, 뒤의 2가지 R(Risk, Retention)은 질문의 직접적인 요구 범위를 넘어서는 내용입니다. 하지만 이 두 가지를 추가함으로써 지원자는 일반적인 합격 수준을 넘어 '돋보이는(distinctive)' 우수한 평가를 받을 수 있습니다 [51, 52].
---
*Last updated: 2026-04-27*
@@ -0,0 +1,29 @@
---
id: UX-DATA-TEST-001
category: Dev
confidence_score: 1.0
tags: [ux, ab-[[Testing|Testing]], data-driven-design, cro, micro-conversions, product-growth]
last_reinforced: 2026-04-26
---
# A/B Testing and Data-Driven UX (A/B 테스트 및 데이터 기반 UX)
## 📌 한 줄 통찰 (The Karpathy Summary)
> "디자인의 주관적 미학을 통계적 객관성으로 치환하고, 사용자의 실제 행동 데이터를 나침반 삼아 비즈니스 전환율의 임계점을 돌파하라" — 가설을 검증하고 사용자 경험의 마찰을 수치로 정밀 타격하는 현대 프로덕트 성장의 핵심 엔진.
## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** "Empirical Validation and Iterative [[Optimization|Optimization]]" — 직관이나 가정에 의존하는 대신, 트래픽을 대조군(Control)과 실험군(Test)으로 분리하여 특정 UI 변경이 미치는 인과관계를 데이터로 증명하는 패턴.
- **핵심 방법론 및 도구:**
- **A/B & Multivariate Testing:** 단일 또는 다중 변수의 변경이 최종 전환율에 미치는 영향을 분리 및 검증.
- **Micro-conversions:** 최종 목표(구매 등) 이전의 행동(스크롤, 클릭, 시청)을 추적하여 사용자 의도 파악.
- **[[Behavior|Behavior]]al [[Analysis|Analysis]]:** 히트맵(Heatmaps)과 세션 녹화(Session Recording)를 통해 정량적 지표 뒤에 숨겨진 정성적 마찰 지점 식별.
- **Progressive Rollouts:** 리스크 최소화를 위해 신규 디자인을 특정 세그먼트에게만 점진적으로 노출.
- **의의:** 디자인 결정의 불확실성을 제거하고, 지속적인 실험 루프를 통해 제품의 비즈니스 가치를 과학적으로 극대화함.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 과거에는 디자인을 '완성된 작품'으로 보았으나, 현재 정책은 제품을 '지속적 실험의 대상'으로 간주함. 특히 상관관계(Correlation)와 인과관계(Causation)를 혼동하지 않기 위한 엄격한 통계적 유의성 검증 정책이 강화됨.
- **정책 변화:** Antigravity 프로젝트는 모든 주요 UI 변경 시 최소 10%의 트래픽에 대해 A/B 테스트를 선행하며, 데이터 기반의 근거 없이는 레이아웃 변경을 승인하지 않는 'Evidence-based Design' 정책을 고수함.
## 🔗 지식 연결 (Graph)
- User-Centered-Design, Conversion-Rate-Optimization-CRO, [[Hypothesis-Testing|Hypothesis-Testing]], Product-[[Management|Management]]-Best-Practices
- **Raw Source:** 00_Raw/A-B 테스트 및 데이터 기반 UX 검증 환경.md
@@ -0,0 +1,58 @@
# [[A2A (Agent-to-Agent Protocol)|A2A (Agent-to-Agent Protocol)]]
## 📌 Brief Summary
A2A(Agent-to-Agent Protocol)는 2025년 Google이 공개한 에이전트 간 통신 및 작업 위임을 위한 오픈 프로토콜이다. 단일 하네스(Harness) 내부의 도구 접근을 표준화하는 MCP와 달리, 서로 다른 하네스에 존재하는 에이전트 간의 원격 통신, 작업 위임, 상태 공유를 표준화한다. HTTPS와 Server-Sent Events(SSE)를 전송 계층으로 활용하여 에이전트 간의 장기 실행 작업을 스트리밍하고 통제 가능한 다중 에이전트 생태계를 구축하는 데 핵심적인 역할을 한다.
## 📖 Core Content
* **다중 에이전트 오케스트레이션(E-component) 표준화**: A2A는 에이전트 하네스의 실행 루프(E-component)에서 서브 에이전트나 외부 에이전트에게 작업을 위임하기 위한 표준 메커니즘을 제공한다. 위임하는 하네스는 대상 에이전트의 내부 구현 방식을 알 필요 없이 A2A의 작업 명세(Task specification)를 통해 작업을 전달할 수 있다.
* **Agent Card를 통한 기능 탐색**: A2A는 에이전트가 다른 에이전트의 능력(Capabilities)과 통신 인터페이스를 동적으로 발견(Discovery)할 수 있도록 `Agent Cards`라는 개념을 지원한다. 이를 통해 에이전트들이 잘 알려진 URL(well-known URLs)을 통해 서로를 탐색하고 라우팅할 수 있다.
* **상태 유지(Stateful) 및 비동기 스트리밍**: HTTP POST 및 SSE를 기반으로 작동하여 작업 진행 상황을 실시간으로 스트리밍한다. Task ID를 통해 상태를 유지하는(Stateful) 작업 관리를 기본적으로 지원하며, 연결이 끊긴 클라이언트나 작업에 대한 푸시 알림 기능도 제공한다.
* **메시지와 아티팩트의 분리**: A2A 프로토콜은 채팅 메시지와 작업 아티팩트(Artifacts)를 명시적으로 분리하여, 위임된 작업의 결과가 단순한 텍스트 형태의 메시지가 아닌 구조화된 작업 아티팩트로 반환되도록 모델링한다.
* **하네스 통합 및 MCP와의 보완적 관계**: A2A는 에이전트와 도구 간의 통신을 담당하는 MCP(Model Context Protocol)와 경쟁하지 않고 보완적인 프로토콜 스택을 형성한다. MCP가 하네스 내부의 도구 인터페이스(T-component)를 표준화한다면, A2A는 하네스 간, 혹은 에이전트 간의 작업 위임 및 조정 경계(E-component)를 표준화한다.
* **인증 및 거버넌스**: OAuth 기반의 인증 모델과 HTTPS 강제화를 기본적으로 포함하여 다른 프로토콜보다 강력한 보안 및 신원(Identity) 관리 기능을 제공한다. 다중 에이전트 체인에서 하네스는 A2A 통신을 관찰 및 로깅하여 무한 위임 루프, 권한 우회, 그리고 예기치 않은 패턴을 차단할 수 있는 신뢰 경계(Trust Boundary)를 설정해야 한다.
## ⚖️ Trade-offs & Caveats
* **통신 지연 시간(Latency) 문제**: A2A의 HTTPS 및 SSE 전송 방식은 인터넷 규모의 조직 간 통신을 위해 설계되었기 때문에 로컬 도구 호출(예: MCP의 stdio 전송)에 비해 통신에 50~200ms 이상의 기본 지연 시간 오버헤드가 발생한다. 따라서 단일 하네스 내의 밀접하고 빠른 도구 실행 루프에는 부적합할 수 있다.
* **보안 및 통합 경계 관리의 복잡성**: A2A는 하네스 간의 위임을 처리하므로 위임받는 하네스의 보안 컨텍스트, 상태 상속 정책, 평가 및 감사 책임 구조(Evaluation Accountability)를 명확히 정의해야 한다. A2A를 통한 위임이 기존 커넥터 정책이나 데이터 경계를 우회하는 데 악용되지 않도록 하네스 수준의 엄격한 거버넌스가 필수적이다.
* **프로토콜 간 권한 변환의 부재**: 현재 A2A 작업을 통해 받은 권한 정보를 하네스 내부의 MCP 도구 권한(Permissions)으로 어떻게 변환할 것인지에 대한 표준화된 통합 사양이 아직 불명확하여, 배포자가 이 권한 매핑을 임시방편(ad-hoc)으로 직접 해결해야 하는 구조적 한계가 존재한다.
## 🔗 Knowledge Connections
### Related Concepts
#### [아키텍처 및 기반 기술]
* [[MCP (Model Context Protocol)|MCP (Model Context Protocol)]]
* 연결 이유: A2A가 하네스 외부의 에이전트 간(Agent-to-Agent) 통신을 담당한다면, MCP는 하네스 내부의 에이전트와 도구 간(Agent-to-Tool) 통신을 담당하여 함께 통합된 하네스 통신 스택을 이룬다.
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 하네스 아키텍처 내에서 도구 제어(T-component)와 에이전트 위임(E-component) 사이의 구조적 역할 분담 및 상호작용.
* [[E-component (Execution Loop)|E-component (Execution Loop)]]
* 연결 이유: A2A 프로토콜은 에이전트의 실행 루프를 다중 에이전트로 확장할 때, 하네스의 E-component가 다중 에이전트 조정을 표준화하고 위임하는 통로 역할을 한다.
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 에이전트 간 통신이 단순한 API 호출을 넘어, 상태 머신 및 실행 루프의 제어 흐름(Control Flow)에 어떻게 안전하게 통합되는지 이해할 수 있다.
* [[ACP (Agent Communication Protocol)|ACP (Agent Communication Protocol)]]
* 연결 이유: IBM이 개발한 상위 수준의 의도(Intent) 통신 프로토콜로, 2025년에 A2A와 통합되어 에이전트 상호운용성 표준을 단일화했다.
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: "의도 전달(ACP) -> 작업 위임(A2A) -> 도구 실행(MCP)"으로 이어지는 다중 에이전트 시스템의 3계층 통신 추상화 모델.
#### [운영 및 거버넌스 프레임워크]
* Zoned Governance Framework
* 연결 이유: A2A를 통한 에이전트 간 위임 시 데이터 유출이나 권한 남용을 막기 위해 환경과 권한을 여러 존(Zone)으로 분리하고 제한하는 정책적 프레임워크가 요구된다.
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 높은 보안이 요구되는 에이전트가 낮은 권한의 에이전트를 호출하거나 그 반대의 상황이 발생할 때 요구되는 신뢰 경계(Trust Boundary) 설정 방법.
### Deeper Research Questions
* A2A를 통해 전달된 원격 작업 위임 컨텍스트가 하네스 내부의 MCP 도구 권한(Permissions)으로 안전하게 매핑 및 변환되는 표준화된 구조는 어떻게 설계되어야 하는가?
* HTTPS와 SSE를 사용하는 A2A의 높은 네트워크 지연 시간(50~200ms)을 완화하여, 에이전트 네트워크에서 실시간(Low-latency) 스트리밍 상호작용을 보장할 수 있는 대안적 전송 계층은 무엇인가?
* 다중 하네스 배포 환경(Federated Multi-Harness Deployment)에서 A2A를 통한 에이전트 간 통신 중 발생할 수 있는 에이전트 간 프롬프트 인젝션(Cross-agent prompt injection) 공격을 하네스 계층에서 어떻게 탐지하고 격리하는가?
* A2A 환경에서 다수의 에이전트가 공유 상태(Shared State)에 동시 접근할 때, 하네스 일관성(Consistency)과 충돌 해결을 관리하는 표준화된 S-component 인터페이스는 어떻게 구현될 수 있는가?
* IETF draft-klrc-aiagent-auth와 같은 토큰 교환(Token Exchange) 사양은 A2A 기반의 에이전트 인증 및 권한 위임을 어떤 기술적 메커니즘을 통해 구현하는가?
### Practical Application Contexts
* **Implementation:** CrewAI, Google ADK와 같은 오픈소스 에이전트 프레임워크에서 A2A 프로토콜을 도입하여 서로 다른 에이전트들이 Agent Card를 통해 상대방의 기능을 동적으로 검색하고 원격 작업을 위임하도록 구현할 수 있다.
* **System Design:** 시스템 아키텍처 설계 시 프로토콜의 역할을 엄격히 분리하여, 로컬 도구 접근은 MCP로 처리하고 원격 에이전트 위임 및 비동기 작업 스트리밍은 A2A로 처리하는 모듈형 하네스 통신 스택을 구성한다.
* **Operation / Maintenance:** A2A 호출 내역을 관찰(Observability)하고 로깅하여, 에이전트 간의 무한 위임 루프나 예기치 않은 우회 호출 패턴을 탐지하고 보안 거버넌스(Trust Boundaries)를 유지하는 감사(Audit) 인프라를 운영한다.
### Adjacent Topics
* Multi-Agent Orchestration
* 확장 방향: 다수의 에이전트를 조율하는 아키텍처 패턴(Hierarchical, Market-based, Role-Based 등)을 연구하여 A2A 통신이 실제 에이전트의 작업 분배 토폴로지와 어떻게 결합되는지 탐구한다.
* [[Agent Identity Management|Agent Identity Management]]
* 확장 방향: 에이전트가 서로를 원격으로 호출할 때 필요한 식별 체계(Entra ID, OAuth2 토큰 위임 등)와 분산 시스템에서의 에이전트 인증 기술을 깊이 있게 확장하여 학습한다.
---
*Last updated: 2026-05-01*
+41
View File
@@ -0,0 +1,41 @@
---
id: b3c4d5e6-f7a8-4b9c-0d1e-2f3a4b5c6d7e
category: Dev
confidence_score: 0.97
tags: [a2a, agent, protocol, multi-agent, communication, infrastructure]
last_reinforced: 2026-05-01
github_commit: "wikification-a2a"
---
# Agent-to-Agent (A2A)
## 📌 한 줄 통찰 (The Karpathy Summary)
> A2A는 서로 다른 하네스나 원격지에 위치한 에이전트들이 작업을 위임하고 상태를 공유하며 협업할 수 있도록 돕는 상호운용성 네트워크 표준 프로토콜이다.
## 📖 구조화된 지식 (Synthesized Content)
### 1. A2A의 정의 및 목적
- **에이전트 간 통신망**: 단일 하네스를 넘어 분산된 에이전트 생태계를 연결한다.
- **작업 위임(Delegation)**: 상위 오케스트레이터 에이전트가 특정 도메인 전문가 에이전트에게 하위 작업을 맡기고 결과를 회수하는 과정을 규격화한다.
### 2. 주요 메커니즘
- **메시지 라우팅**: 요청-응답(Request-Response) 및 이벤트 발행-구독(Pub-Sub) 모델을 통해 에이전트 간 정보를 교환한다.
- **컨텍스트 전파**: 작업을 위임할 때 필요한 최소한의 문맥(Context)과 권한(Authorization)을 안전하게 전달한다.
- **역할 정의**: 송신자(Requester)와 수신자(Worker) 간의 인터페이스 및 책임 범위를 명시한다.
### 3. MCP와의 관계
- **수평적/수직적 확장**: MCP가 '에이전트-도구' 간의 수직적 통합을 담당한다면, A2A는 '에이전트-에이전트' 간의 수평적 협업을 담당하여 완전한 통신 스택을 형성한다.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **보안 경계**: 원격 에이전트 호출 시 신뢰할 수 없는 데이터가 주입될 위험이 있으며, 교차 인증 및 데이터 검증 계층이 필수적이다.
- **오케스트레이션 복잡성**: 에이전트가 많아질수록 통신 지연과 상태 불일치 문제가 발생하며, 이를 관리하기 위한 분산 시스템 수준의 설계가 요구된다.
## 🔗 지식 연결 (Graph)
- **Parent**: 10_Wiki/Topics/AI
- **Related**: [[Agent Harness|Agent Harness]], [[Model Context Protocol (MCP)|Model Context Protocol (MCP)]], [[Agentic_Software_Engineering|Agentic Software Engineering]]
- **Raw Source**: 00_Raw/Agent-to-Agent (A2A)
## 💻 GitHub 동기화 자동화 워크플로우
1. Stage: git add .
2. Commit: `git commit -m "[P-Reinforce] Wikify Agent-to-Agent (A2A) Protocol"`
3. Push: `git push origin main`
@@ -0,0 +1,25 @@
---
id: P-REINFORCE-AI-91A92D
category: Business
confidence_score: 0.95
tags: []
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Batch 9 - Wikified ABA(Applied Behavior Analysis)"
---
# [[ABA(Applied Behavior Analysis)|ABA(Applied Behavior Analysis)]]
## 📌 한 줄 통찰 (The Karpathy Summary)
>
## 📖 구조화된 지식 (Synthesized Content)
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 신규 문서로, 기존 정보와의 충돌 분석 예정.
- **정책 변화:** Psychology & Behavior 카테고리의 지식 연결망 강화를 위한 표준 위키화 적용.
## 🔗 지식 연결 (Graph)
- Raw Source: 00_Raw/2026-04-20/ABA(Applied Behavior Analysis).md
---
+29
View File
@@ -0,0 +1,29 @@
---
id: ABA-001
category: Dev
confidence_score: 1.0
tags: [[Psychology|[Psychology]], [[Behavior|Behavior]]al-science, [[Reinforcement-Learning|Reinforcement-Learning]], aba, pedagogy]
last_reinforced: 2026-04-26
---
# ABA (Applied Behavior [[Analysis|Analysis]], 응용 행동 분석)
## 📌 한 줄 통찰 (The Karpathy Summary)
> "행동의 원인을 분석하고, 보상 설계를 통해 바람직한 변화를 이끌어내라" — 행동주의 심리학에 근거하여 인간의 행동을 객관적으로 측정하고, 환경 조절과 강화를 통해 사회적으로 유의미한 행동 변화를 유도하는 과학적 방법론.
## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** ABC(Antecedent-Behavior-Consequence) 패러다임을 통해 행동 전후의 맥락을 분석하고, 보상(Reinforcement) 체계를 설계하여 특정 행동의 발생 빈도를 조절하는 기능적 분석 패턴.
- **핵심 요소:**
- **ABC Analysis:** 선행 사건(A), 행동(B), 결과(C)의 연쇄 고리 파악.
- **Positive Reinforcement:** 바람직한 행동 뒤에 보상을 주어 행동의 재발 확률을 높임.
- **prompting & Fading:** 초기에는 보조(Prompt)를 통해 행동을 유도하고, 점차 보조를 줄여 독립적 수행을 도움.
- **Generalization:** 학습된 행동이 치료실 밖의 실제 환경에서도 유지되도록 유도.
- **의의:** 자폐 스펙트럼 장애 치료뿐만 아니라 조직 관리, 교육, 그리고 인공지능 에이전트의 보상 함수 설계에 광범위하게 응용됨.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 단순히 행동을 교정하는 '훈련'으로 치부되기도 했으나, 현대에는 개인의 삶의 질 향상을 목표로 하는 인본주의적 가치가 결합된 과학적 분석법으로 정착.
- **정책 변화:** Antigravity 에이전트의 강화학습 보상 모델 설계 시, ABA의 '기능적 행동 평가' 원칙을 도입하여 에이전트가 왜 특정 오류 행동을 반복하는지 분석하고 교정함.
## 🔗 지식 연결 (Graph)
- [[Psychology-of-Learning|Psychology-of-Learning]], [[Reinforcement-Learning|Reinforcement-Learning]], [[Alignment|Alignment]], [[Habit-Formation|Habit-Formation]]
- **Raw Source:** 10_Wiki/Topics/AI/ABA.md
+42
View File
@@ -0,0 +1,42 @@
---
id: a2b3c4d5-e6f7-4a8b-9c0d-1e2f3a4b5c6d
category: Dev
confidence_score: 0.98
tags: [aci, agent, interface, llm, infrastructure, harness]
last_reinforced: 2026-05-01
github_commit: "wikification-aci"
---
# Agent-Computer Interface (ACI)
## 📌 한 줄 통찰 (The Karpathy Summary)
> ACI는 인간 중심의 UI를 넘어, LLM 에이전트가 컴퓨터 시스템(OS, 파일, 도구)을 효율적으로 조작할 수 있도록 최적화된 추상화 인터페이스이며, 에이전트의 관찰(Observation) 및 행동(Action) 공간의 품질을 결정하는 핵심 설계 요소이다.
## 📖 구조화된 지식 (Synthesized Content)
### 1. ACI의 정의 및 필요성
- **모델을 위한 인터페이스**: 인간에게는 시각적 UI(GUI)가 필요하지만, 에이전트에게는 구조화된 데이터(JSON, XML)나 간결한 텍스트 출력이 더 효율적이다.
- **인지 부하 감소**: 불필요한 시각적 노이즈를 제거하고 에이전트가 행동의 결과와 시스템 상태를 정확히 파악할 수 있도록 정보를 재구성한다.
### 2. ACI 설계 원칙
- **구조적 명확성**: 도구의 인자 스키마(Schema)와 반환값 형식을 엄격하게 정의하여 모델의 파싱 오류를 줄인다.
- **에러 피드백의 풍부함**: 단순한 실패 메시지가 아닌, 모델이 다음 행동을 수정할 수 있는 구체적인 힌트(예: "파일이 없습니다. 현재 경로의 파일 목록은 다음과 같습니다...")를 제공한다.
- **상태의 가시성**: 현재 작업 디렉토리, 샌드박스 상태, 환경 변수 등 에이전트가 추론에 필요한 문맥을 명시적으로 노출한다.
### 3. 하네스 내에서의 역할
- **입출력 래퍼**: 하네스는 컴퓨터의 원시 출력을 ACI 표준에 맞춰 가공하여 모델에게 전달하며, 모델의 자연어 요청을 시스템 명령어로 변환한다.
- **인터페이스 최적화**: 특정 모델의 특성(예: 긴 JSON에 강함, 특정 태그 형식 선호)에 맞춰 ACI를 튜닝하여 작업 성공률(Pass@1)을 높인다.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **추상화 vs 제어권**: 인터페이스를 너무 고수준으로 추상화하면 에이전트의 세밀한 제어가 불가능해지고, 너무 저수준(예: raw byte stream)으로 두면 인지 부하가 급증한다.
- **범용 표준의 부재**: 각 하네스마다 ACI 설계가 상이하여 에이전트의 행동 패턴이 특정 인터페이스에 고착화(Coupling)되는 현상이 발생한다.
## 🔗 지식 연결 (Graph)
- **Parent**: 10_Wiki/Topics/AI
- **Related**: [[Agent Harness|Agent Harness]], [[Model Context Protocol (MCP)|Model Context Protocol (MCP)]], [[Context Engineering|Context Engineering]]
- **Raw Source**: 00_Raw/Agent-Computer Interfaces (ACI)
## 💻 GitHub 동기화 자동화 워크플로우
1. Stage: git add .
2. Commit: `git commit -m "[P-Reinforce] Wikify Agent-Computer Interface (ACI) Design Principle"`
3. Push: `git push origin main`
+71
View File
@@ -0,0 +1,71 @@
---
id: P-REINFORCE-WIKI-3FC2171D
category: Dev
confidence_score: 0.95
tags: ['acid-transactions', 'microservices-architecture', 'eventual-consistency', 'saga-pattern', 'base', 'architecture-principles']
last_reinforced: 2026-05-02
---
# [[ACID Transactions]]
## 📌 Brief 소스에 관련 정보가 부족합니다.
ACID 트랜잭션은 작업의 구현을 더 쉽게 만들어주는 전통적인 데이터베이스 트랜잭션 관리 방식입니다 [1]. 그러나 각 서비스가 자체 데이터베이스를 가져야 하는 마이크로서비스 아키텍처(분산 시스템)에서는 도입이 매우 어려워, 시스템 설계 시 최종 일관성(Eventual Consistency) 모델이나 BASE, Saga 패턴 등으로 대체되는 특성을 지닙니다 [2, 3]. 소스에 ACID의 구체적인 원리나 4가지 속성(Atomicity, Consistency, Isolation, Durability)에 대한 상세한 정의 등 관련 정보가 부족합니다.
## 📖 Core Content
소스에 관련 정보가 부족합니다. 다만, 제공된 소스에서 파악할 수 있는 ACID 트랜잭션의 아키텍처적 맥락은 다음과 같습니다:
* **구현의 용이성 우위:** 일반적으로 최종 일관성(Eventual Consistency)을 가지는 Saga 패턴이나 BASE 모델을 구현하는 것보다, 전통적인 ACID 트랜잭션으로 작업을 구현하는 것이 훨씬 더 쉽고 직관적입니다 [1].
* **분산 아키텍처에서의 적용 한계:** 마이크로서비스 아키텍처는 느슨한 결합(Loose coupling)을 달성하기 위해 '서비스당 데이터베이스(Database per service)' 패턴을 따라야 합니다 [2]. 이로 인해 여러 서비스의 데이터베이스에 걸친 비즈니스 트랜잭션을 중앙에서 관리해야 할 때, 기존의 ACID 트랜잭션을 그대로 적용하는 것은 불가능에 가깝거나 매우 어렵습니다 [2, 3].
* **비-ACID(non-ACID) 모델로의 전환:** 여러 서비스에 걸친 복잡한 트랜잭션을 관리하기 위해 현대 분산 아키텍처에서는 ACID 트랜잭션을 포기하는 대신, 결국에는 상태가 동기화됨을 보장하는 비-ACID 방식인 최종 일관성 관리(예: Saga 패턴)를 대안으로 도입하게 됩니다 [2, 3].
## ⚖️ Trade-offs & Caveats
소스에 ACID 트랜잭션 자체의 원리적 한계에 대한 정보는 부족하나, 아키텍처 선택 관점에서의 반대 급부는 다음과 같습니다:
* **느슨한 결합(Loose Coupling)과의 충돌:** 애플리케이션의 유연성과 확장성을 위해 마이크로서비스 아키텍처를 도입할 경우, ACID 트랜잭션이 보장하는 강력한 데이터 일관성을 포기해야 하는 구조적 제약이 발생합니다 [2, 3].
* **대안 선택 시의 복잡성 증가:** ACID 트랜잭션을 유지할 수 없는 분산 환경에서 최종 일관성 모델(Saga 패턴 등)을 도입하면, 트랜잭션 처리와 관련된 구현 및 테스트 난이도가 급격히 상승하는 반대 급부가 따릅니다 [3]. 비즈니스 로직에 실패 시 롤백을 처리하는 복잡한 보상 트랜잭션(Compensating transaction) 등을 추가로 구현해야 하는 부담이 생깁니다 [4].
## 🔗 Knowledge Connections
### Related Concepts
(소스에 관련 정보가 부족하여 분산 시스템에서의 트랜잭션 관리 맥락을 중심으로 연결합니다.)
#### [아키텍처/기반 기술]
- [[Microservices Architecture]]
- 연결 이유: 각 서비스가 개별 데이터베이스를 가지는 특성으로 인해 ACID 트랜잭션 적용이 어렵다는 맥락의 배경이 됩니다 [2].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 단일 모놀리식 아키텍처에서 쉽게 보장되던 ACID 속성이 시스템이 분산됨에 따라 왜 깨지게 되는지 근본적인 아키텍처 원리를 이해할 수 있습니다 [2, 3].
#### [구현/활용 도구]
- [[Eventual Consistency]]
- 연결 이유: 분산 시스템 환경에서 ACID 트랜잭션의 강력한 일관성을 대체하기 위해 채택되는 데이터 일관성 모델입니다 [1-3].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 아키텍처가 ACID를 포기할 때, 시스템이 데이터를 동기화하고 최종적으로 상태를 일치시키는 메커니즘을 파악할 수 있습니다 [2, 3].
- [[Saga Pattern]]
- 연결 이유: 여러 마이크로서비스에 걸친 트랜잭션을 관리하기 위해 ACID 트랜잭션 대신 구체적으로 도입되는 구현 패턴입니다 [3].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 비-ACID(non-ACID) 환경에서 분산 트랜잭션의 순서와 롤백 과정을 어떻게 설계해야 하는지 배울 수 있습니다 [2, 3].
- [[BASE]]
- 연결 이유: 마이크로서비스 설계 시 전통적인 ACID 트랜잭션 모델과 대조되는 개념으로 언급됩니다 [1].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: ACID 방식이 불가능한 분산 시스템 환경에서 적용하는 데이터베이스 트랜잭션 철학을 이해할 수 있습니다 [1].
### Deeper Research Questions
(소스에 관련 정보가 부족하여 ACID 트랜잭션의 깊이 있는 탐구를 위해 추가 외부 조사가 필요한 질문들입니다.)
- 분산 아키텍처에서도 ACID 트랜잭션을 보장하기 위해 2PC(Two-Phase Commit) 등의 프로토콜을 사용할 경우 발생하는 성능 및 가용성 저하의 구체적인 원리는 무엇인가?
- ACID의 핵심 속성(원자성, 일관성, 고립성, 지속성) 중 분산 환경에서 가장 달성하기 어렵고 성능 병목을 일으키는 속성은 무엇이며 그 이유는 무엇인가?
- 금융 시스템과 같이 강한 데이터 일관성(ACID)이 절대적으로 필요한 도메인에서 마이크로서비스를 도입할 때, 일관성과 가용성 사이의 트레이드오프를 해결하는 현대적인 하이브리드 아키텍처 전략은 무엇인가?
- 이벤트 기반 아키텍처(EDA)와 이벤트 소싱(Event Sourcing) 환경에서 전통적인 ACID 트랜잭션과 같은 데이터 무결성을 검증하는 방법론은 어떻게 구성되는가?
- 마이크로서비스의 Saga 패턴 내에서 일시적인 데이터 불일치(Eventual Consistency)가 발생하는 시간(Window) 동안 사용자에게 발생할 수 있는 이상 현상(Anomalies)을 UI/UX 측면에서 어떻게 방어해야 하는가?
### Practical Application Contexts
- **Implementation:** 모놀리식 시스템의 경우 단일 데이터베이스 구조이므로 ACID 트랜잭션을 활용한 쉽고 안전한 데이터 작업 구현이 가능하지만, 향후 마이크로서비스로 전환할 때는 이 구현 방식을 Saga 등으로 전면 수정해야 합니다 [1-3].
- **System Design:** 소프트웨어 설계 시, 시스템이 반드시 강한 데이터 일관성(ACID)을 요구하는지, 아니면 최종 일관성만으로도 충분한지를 비즈니스 도메인에 맞춰 분석하고 그에 따라 데이터베이스 분리 여부를 결정해야 합니다 [2, 3].
- **Operation / Maintenance:** 단일 시스템의 ACID 환경과 달리 최종 일관성 모델 도입 시 트랜잭션 실패 추적 및 디버깅이 매우 복잡해집니다. 따라서 분산 추적(Distributed Tracing) 및 로그 집계와 같은 강력한 관측성(Observability) 확보 계획이 운영 맥락에서 필수적입니다 [3].
- **Learning Path:** 단일 데이터베이스에서의 전통적 ACID 속성(외부 지식 필요) 이해 ➔ 마이크로서비스 분산 환경의 제약사항(Database per Service) 인식 ➔ CAP 정리 및 BASE 모델 학습 ➔ 비-ACID 환경 극복을 위한 분산 트랜잭션 및 Saga 패턴 설계 단계로 아키텍처 학습을 확장할 수 있습니다.
- **My Project Relevance:** 현재 대규모 시스템을 작은 서비스 단위로 분해하려는 프로젝트(예: 모놀리스에서 MSA로의 마이그레이션)를 계획 중이라면, 기존에 의존하던 ACID 트랜잭션 보장이 불가능해진다는 점을 사전에 식별하고, 데이터 무결성 보장을 위한 대안 설계를 프로젝트 초기부터 준비하는 데 직결됩니다.
### Adjacent Topics
- [[Database per Service Pattern]]
- 확장 방향: 마이크로서비스 구조에서 각 서비스의 독립성을 보장하기 위해 데이터가 어떻게 격리되는지 살펴보고, 이 패턴이 분산 트랜잭션 관리와 ACID 트랜잭션 포기에 미치는 직접적인 영향을 연구할 수 있습니다.
---
*Last updated: 2026-05-02*
+29
View File
@@ -0,0 +1,29 @@
---
id: [[P-Reinforce|P-Reinforce]]-HEALTH-001
category: Dev
confidence_score: 0.89
tags: [health, sports, injury, prevention]
last_reinforced: 2026-04-20
github_commit: "batch-reinforce-01"
---
# ACL Injury Prevention [[Protocols|Protocols]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> 전방십자인대 부상 위험을 최소화하기 위해 바이오메카닉 분석과 신경근 훈련을 결합한 과학적 예방 체계.
## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** 점프 착지 및 방향 전환 시 무릎 정렬을 최적화하는 신경근 제어(Neuromuscular Control) 강화 패턴.
- **세부 내용:**
- 고유수용성 감각([[Proprioception|Proprioception]]) 훈련을 통한 관절 안정화.
- 햄스트링 강화 및 콰드-햄스트링 균형 최적화.
- 연령 및 성별에 따른 맞춤형 부상 방지 프로그램 설계.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 단순 근력 강화에서 움직임의 질(Quality of Movement) 중심 예방으로 진화.
- **정책 변화:** 지식 연결성(w2) 관점에서 바이오메카닉과 스포츠 심리학의 연계성 강화.
## 🔗 지식 연결 (Graph)
- **Parent:** 10_Wiki/💡 Topics/Health
- **Related:** [[Neuromuscular-Control|Neuromuscular-Control]], Sports-Science, [[Proprioception|Proprioception]]
- **Raw Source:** 00_Raw/2026-04-20/ACL-Injury-Prevention-Protocols.md
@@ -0,0 +1,46 @@
# [[ACP (Agent Communication Protocol)|ACP (Agent Communication Protocol)]]
## 📌 Brief Summary
ACP(Agent Communication Protocol)는 에이전트 간의 고수준 의도(High-level intent), 목표(Goals), 그리고 복잡한 협업 시퀀스를 정의하기 위해 설계된 통신 규약이다. 2025년 Google의 A2A(Agent-to-Agent Protocol)와 IBM의 기존 에이전트 프레임워크가 통합되면서 다중 에이전트 시스템의 상호운용성을 보장하는 핵심 표준으로 자리 잡았다. 단순한 데이터 전달을 넘어 에이전트 간의 '의도 파악'과 '동적 협상'을 가능하게 한다.
## 📖 Core Content
* **의도 기반 통신 추상화**: ACP는 메시지를 'Intent(의도)'와 'Action(행동)'으로 구조화한다. 이를 통해 에이전트는 상대방의 내부 로직을 알 필요 없이 "데이터 분석 보고서 작성 의도"와 같은 고수준의 목표를 공유하고 협업을 시작할 수 있다.
* **A2A와의 통합 표준**: 초기에는 독립적인 프로토콜로 개발되었으나, 현재는 A2A의 작업 위임(Task Delegation) 메커니즘 위에서 작동하는 상위 계층 프레임워크 역할을 한다. "의도(ACP) -> 위임(A2A) -> 도구 실행(MCP)"으로 이어지는 3계층 통신 스택을 완성한다.
* **동적 협상 및 재구성**: 에이전트가 제안된 작업에 대해 비용, 시간, 리소스 가용성을 바탕으로 역제안(Counter-proposal)을 하거나 거절할 수 있는 협상 인터페이스를 제공한다. 이는 동적인 멀티 에이전트 오케스트레이션을 가능하게 하는 핵심 요소이다.
* **보안 및 신뢰 모델**: 에이전트 간의 신뢰 등급(Trust Level)을 정의하고, 높은 보안 등급의 작업 요청 시 추가적인 증명(Proof-of-capability)을 요구하는 거버넌스 기능을 포함한다.
* **상태 추적 및 컨텍스트 공유**: 다중 에이전트 간의 대화 이력과 작업 상태를 공유 컨텍스트 윈도우(Shared Context Window) 형태로 관리하여, 협업 과정에서 발생하는 정보의 파편화를 방지한다.
## ⚖️ Trade-offs & Caveats
* **추상화 오버헤드**: 고수준의 의도를 정의하고 해석하는 과정에서 단순 API 호출보다 더 많은 토큰과 추론 시간이 소모될 수 있다. 매우 단순한 작업에는 과도한 프로토콜 설계가 될 수 있다.
* **의도 해석의 모호성**: LLM 기반 에이전트들이 서로의 의도를 해석할 때 미묘한 의미 차이(Semantic gap)로 인해 오해가 발생할 수 있으며, 이는 복잡한 협업 체인에서 예기치 않은 오류로 이어질 수 있다.
* **구현 복잡성**: ACP를 완벽히 지원하기 위해서는 하네스 수준에서 복잡한 상태 머신과 협상 로직을 갖추어야 하므로, 초기 시스템 구축 비용이 높다.
## 🔗 Knowledge Connections
### Related Concepts
#### [통신 및 상호운용성]
* [[A2A (Agent-to-Agent Protocol)|A2A (Agent-to-Agent Protocol)]]
* 연결 이유: ACP가 고수준의 협업 의도를 다룬다면, A2A는 실제 작업의 실행 위임과 데이터 스트리밍을 담당하는 하위 전송/실행 계층이다.
* [[MCP (Model Context Protocol)|MCP (Model Context Protocol)]]
* 연결 이유: 에이전트가 ACP를 통해 협업을 결정하고 A2A로 작업을 위임받은 후, 실제 시스템 도구를 호출할 때 사용하는 가장 하위의 도구 접근 표준이다.
#### [실행 및 거버넌스]
* Multi-Agent Orchestration
* 연결 이유: ACP는 다중 에이전트 환경에서 에이전트들이 스스로 역할을 분담하고 목표를 달성하기 위해 소통하는 '언어' 역할을 한다.
* [[Agent Identity Management|Agent Identity Management]]
* 연결 이유: 안전한 ACP 통신을 위해서는 메시지를 보내는 에이전트의 신원과 권한을 명확히 검증할 수 있는 신뢰 기반의 인증 시스템이 선행되어야 한다.
### Deeper Research Questions
* 서로 다른 모델(예: Claude vs GPT)을 사용하는 에이전트 간에 ACP Intent 명세의 의미적 일관성(Semantic Consistency)을 어떻게 보장할 수 있는가?
* ACP의 협상 과정에서 발생할 수 있는 교착 상태(Deadlock)나 무한 루프를 방지하기 위해 하네스는 어떤 타임아웃 및 정책 게이트를 두어야 하는가?
* 복잡한 의도를 전달할 때 발생하는 토큰 소모를 최적화하기 위해 ACP 메시지를 압축하거나 정형화된 스키마로 변환하는 가장 효율적인 방법은 무엇인가?
* ACP 기반의 협업 시스템에서 특정 에이전트의 오작동이 전체 에이전트 체인의 목표를 하이재킹하는 것을 막기 위한 '협업 무결성 검증' 모델은 어떻게 설계되어야 하는가?
### Practical Application Contexts
* **Implementation:** 복잡한 소프트웨어 엔지니어링 프로젝트에서 기획 에이전트, 코딩 에이전트, 리뷰 에이전트가 ACP를 통해 작업의 우선순위를 협상하고 피드백을 주고받는 워크플로우를 구축한다.
* **System Design:** 엔터프라이즈급 에이전트 플랫폼 설계 시, 외부 파트너사의 에이전트와 우리 시스템의 에이전트가 안전하게 협업할 수 있도록 ACP를 표준 인터페이스로 채택한다.
* **Operation:** 에이전트 간의 ACP 메시지 로그를 분석하여 협업 병목 지점을 찾고, 에이전트들의 '협업 지능'을 개선하기 위한 강화 학습 데이터로 활용한다.
---
*Last updated: 2026-05-01*
+31
View File
@@ -0,0 +1,31 @@
---
id: SYS-COMP-ACC-GLOBAL-001
category: Dev
confidence_score: 1.0
tags: [[Accessibility|[Accessibility]], compliance, ada, eaa, wcag-2-2, pour-[[Principles|Principles]], digital-inclusive, legal-risk]
last_reinforced: 2026-04-26
---
# ADA and EAA Accessibility Compliance (글로벌 디지털 접근성 규정 준수)
## 📌 한 줄 통찰 (The Karpathy Summary)
> "디지털 장벽을 허물어 모든 인간의 평등한 정보 접근권을 보장하고, ADA(미국)와 EAA(유럽)라는 강력한 법적 표준을 통해 글로벌 비즈니스의 윤리적/법적 정당성을 확보하라" — WCAG 2.2를 기반으로 한 웹 및 모바일 접근성의 글로벌 통합 가이드라인.
## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** "Harmonized Global Standards and Proactive Inclusivity" — 미국(ADA)의 WCAG 2.1 AA 권고와 유럽(EAA 2025)의 EN 301 549 표준을 통합하여, 코드 레벨에서부터 보편적 설계(Universal Design)를 관철시키는 패턴.
- **글로벌 규제 현황:**
- **ADA (Americans with Disabilities Act):** 미국 내 모든 디지털 콘텐츠의 접근성 의무화. 최근 소송 건수 급증 추세.
- **EAA (European Accessibility Act):** 2025년 6월 발효. 유럽 내 전자상거래, 뱅킹 등 주요 서비스의 접근성 준수 강제.
- **WCAG 2.2 핵심 업데이트 (2023):**
- **Focus Not Obscured:** 레이어 등에 의해 포커스 표시가 가려지지 않아야 함.
- **Dragging Movements:** 복잡한 드래그 동작에 대한 단일 클릭 대안 제공 필수.
- **Accessible Authentication:** 기억력에 의존하지 않는 로그인 방식(생체 인식 등) 권장.
- **의의:** 장애인뿐만 아니라 고령자, 일시적 부상자, 저속 인터넷 사용자 등 모든 잠재 고객의 이탈을 방지하고 브랜드 가치를 고양함.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 과거에는 '접근성 위젯(Overlay)'이 법적 방패가 될 것으로 보았으나, 2025년 기준 소송의 22% 이상이 위젯 설치 사이트를 대상으로 함. 따라서 '코드 레벨의 직접 수정'만이 유일한 안전 정책임.
- **정책 변화:** Antigravity 프로젝트는 모든 UI 컴포넌트에 대해 WCAG 2.2 AA 수동 테스트와 스크린 리더 검증을 의무화하며, 유럽 시장 진출을 위해 EAA 표준을 기본 아키텍처에 반영함.
## 🔗 지식 연결 (Graph)
- Web-Accessibility, POUR-Principles, Inclusive-Design, User-Centered-Design-Approach
- **Raw Source:** 00_Raw/ADA Website Compliance.md, 00_Raw/Accessibility Compliance (ADA-EAA).md, 00_Raw/Accessibility Compliance (WCAG).md
@@ -0,0 +1,73 @@
---
id: P-REINFORCE-WIKI-0FAC099B
category: Dev
confidence_score: 0.95
tags: ['adr-(architecture-decision-record)', 'atam-(architecture-tradeoff-analysis-method)', 'architecture-anti-patterns', 'software-architecture-erosion-(소프트웨어-아키텍처-침식)', 'software-architecture-knowledge-management-(소프트웨어-아키텍처-지식-관리)', 'process-methodology']
last_reinforced: 2026-05-02
---
# [[ADR (Architecture Decision Record)]]
## 📌 Brief Summary
ADR(Architecture Decision Record)은 소프트웨어 프로젝트에서 내려진 아키텍처 결정과 그에 대한 기술적 및 비즈니스적 근거를 기록하는 단일 문서입니다 [1]. 이 문서는 시스템과 팀이 진화함에 따라 과거의 결정 배경이 잊혀지거나 오해받는 것을 방지합니다 [1, 2]. 접근 가능한 저장소에 관리되는 ADR은 의사결정의 이력을 투명하게 유지하여 아키텍처가 이해 가능하고 검증 가능하며 미래의 변화에 대비할 수 있도록 하는 핵심 자산입니다 [3, 4].
## 📖 Core 소스 Content
* **ADR의 목적과 가치**
아키텍처 결정은 한 번 내려지면 되돌리기 어렵고, 시간이 흐를수록 그 배경과 이유가 잊혀지기 쉽습니다 [2]. 결정을 문서화하지 않으면 동일한 논의가 해결 없이 반복되는 안티패턴(anti-pattern)이 발생할 수 있습니다 [1]. ADR은 이러한 지식 증발을 막고, 새로운 팀원, 감사자, 이해관계자 및 미래 시스템의 진화를 위해 이해하기 쉬운 근거와 맥락을 제공하는 중요한 역할을 수행합니다 [2, 3].
* **표준 구성 요소**
ADR은 결정을 내린 과정을 포괄적으로 담고 있으며 일반적으로 다음 항목들로 구성됩니다 [2, 3]:
* **Context (맥락):** 결정이 내려지게 된 초기 상황 및 기술적 배경.
* **Decision (결정):** 실제로 무엇이 결정되고 선택되었는가.
* **Reason/Justification (이유/근거):** 이 선택을 한 기술적 및 비즈니스적(비용, 출시 시간, 사용자 만족도 등) 이유 [1, 3].
* **Alternatives (대안):** 검토 후 거절된 옵션들과 그 거절 사유.
* **Risks and consequences (위험과 결과):** 이 결정이 단기 및 장기적으로 시스템에 미치는 의미와 위험 요소.
* **유지 및 관리 프로세스**
ADR은 분산된 이메일 소통을 피하고, 위키(wiki)와 같이 중앙 집중화된 접근 가능한 저장소에 유지되어 단일 진실 공급원(single source of truth) 역할을 해야 합니다 [1]. 또한, 아키텍처는 고정된 것이 아니라 사용자 행동, 트래픽 부하, 팀 구조 등 컨텍스트가 변화함에 따라 함께 적응해야 합니다 [3, 5]. 이러한 변화가 발생할 때마다 아키텍처를 검토하고 그 경로를 단계별로 ADR에 갱신하거나 새롭게 기록해야 합니다 [3, 6].
## ⚖️ Trade-offs & Caveats
소스에 ADR 자체의 구조적인 제약 사항이나 부작용에 대한 상세한 정보가 부족합니다. 다만, 소스에서 확인되는 의사결정 및 문서화 과정에서의 한계와 관리적 책임(Trade-off)은 다음과 같습니다.
* **지속적인 유지보수 책임:** 아키텍처와 ADR은 한 번 작성되고 끝나는 것이 아닙니다. 요구사항, 부하, 팀의 운영 현실 등 컨텍스트가 변경되면 아키텍처 역시 변경되어야 하며, 이에 맞춰 ADR 문서도 반드시 지속적으로 업데이트되어야 하는 관리 비용이 발생합니다 [5, 6].
* **비즈니스 가치 불일치 위험:** ADR에 기록된 아키텍처 결정이 가시적인 비즈니스 가치를 제공하지 못하거나, 이해관계자의 비즈니스 목표와 어긋난 채로 확정되어 문서화될 경우, 시스템 구현에 악영향을 미치므로 해당 결정을 다시 전면적으로 재고해야 하는 리스크가 있습니다 [1].
## 🔗 Knowledge Connections
### Related Concepts
#### [의사결정 및 평가 방법론]
* [[ATAM (Architecture Tradeoff Analysis Method)]]
* 연결 이유: 특정 아키텍처가 비즈니스 목표를 얼마나 잘 지원하는지 평가하고 트레이드오프와 위험 요소를 식별하는 방법론으로, 이 분석의 최종 선택 결과가 ADR에 문서화됩니다 [2, 7, 8].
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 아키텍처 결정 과정에서 추상적인 목표 대신 구체적인 시나리오를 바탕으로 어떻게 타협점(Trade-off)을 찾고, 그 근거를 ADR의 '대안' 및 '위험' 항목에 객관적으로 채워 넣는지 이해할 수 있습니다.
* [[Architecture Anti-patterns]]
* 연결 이유: 아키텍처 결정을 미루거나 문서화하지 않아 반복적인 논의만 발생하는 현상으로, ADR의 도입이 이 안티패턴을 해결하는 핵심 해결책입니다 [1].
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 의사결정 기록의 부재가 프로젝트 개발 속도를 늦추고 분석 마비(analysis paralysis)를 일으키는 과정을 이해할 수 있습니다.
#### [시스템 유지보수 및 진화]
* [[Software Architecture Erosion (소프트웨어 아키텍처 침식)]]
* 연결 이유: 시스템이 노후화되고 지식 증발(knowledge vaporization)이 발생하여 의도한 아키텍처와 실제 구현 사이에 격차가 생기는 현상이며, ADR은 이를 예방하는 수단이 됩니다 [2, 9, 10].
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 문서화 누락이 장기적으로 시스템 성능 저하와 기술 부채(technical debt) 축적으로 이어지는 공학적 원리를 배울 수 있습니다.
### Deeper Research Questions
* 컨텍스트(사용자 부하, 비즈니스 요구사항 등)가 변경되어 시스템 아키텍처를 수정해야 할 때, 기존 ADR을 폐기하고 새로 작성해야 하는가, 아니면 기존 ADR을 버전 관리하여 업데이트해야 하는가?
* ATAM을 통한 시나리오 기반 분석 결과는 ADR의 '대안(Alternatives)' 및 '위험(Risks)' 섹션에 정량적으로 어떻게 기술되어야 하는가?
* 단순한 소프트웨어 설계(Design) 결정과 아키텍처(Architecture) 결정을 구분하여 ADR에 필수적으로 기록해야 하는 기준점이나 규모는 어떻게 정해지는가?
* 애자일(Agile) 환경에서 "마지막 책임 순간(last responsible moment)"에 결정을 내리는 전략과 ADR의 즉각적인 문서화 프로세스를 어떻게 마찰 없이 통합할 수 있는가?
* 분산된 마이크로서비스 아키텍처 환경에서 여러 팀이 각기 다른 서비스의 ADR을 작성할 때, 전체 시스템 관점에서의 무결성을 어떻게 유지할 수 있는가?
### Practical Application Contexts
* **Implementation:** 이메일이나 파편화된 메신저가 아닌 위키(Wiki) 등 중앙 집중화된 접근 가능한 저장소에 단일 진실 공급원(Single source of truth)으로 문서를 구축하고 관리해야 합니다 [1].
* **System Design:** 품질 요구사항(확장성, 성능 등)에 기반하여 여러 아키텍처 패턴을 비교 평가한 뒤, 최종적으로 선택한 패턴의 근거와 감수한 타협점(Trade-off)을 ADR에 명시하여 설계의 타당성을 조직 내에 입증합니다 [2, 8, 11].
* **Operation / Maintenance:** 시스템 운영 중 특정 장애에 대처하거나 리팩토링을 진행할 때, 과거에 특정 기술이나 제약 사항을 왜 수용했는지 감사자(Auditors)와 운영팀이 쉽게 추적하고 이해할 수 있도록 돕습니다 [3].
* **Learning Path:** 팀에 새로 합류한 인원(New team members)이 시스템 구조가 현재와 같이 발전하게 된 역사적 맥락과 과거의 결정들을 빠르게 학습하기 위한 필수 온보딩 자료로 활용됩니다 [2, 3].
* **My Project Relevance:** 프로젝트 중 유행하는 기술(Hype)이나 개인적 선호가 아닌, 측정 가능한 우선순위에 입각해 기술 결정을 내리도록 강제하고, 끝없는 논쟁을 방지하기 위한 핵심 규칙으로 적용할 수 있습니다 [1, 2, 12].
### Adjacent Topics
* [[Software Architecture Knowledge Management (소프트웨어 아키텍처 지식 관리)]]
* 확장 방향: 아키텍처 설계 과정에서 이해관계자의 머릿속에만 머물기 쉬운 암묵적 지식(tacit knowledge)을 발굴하고 소통하며 체계적으로 보존하는 포괄적인 관리 체계를 연구합니다 [13].
* [[Agile Software Development (애자일 소프트웨어 개발)]]
* 확장 방향: 아키텍처의 초기 선행 설계(Big design up front)를 지양하면서도, 지속적으로 변화하는 요구사항 속에서 필수적인 기반 구조를 마련하고 의사결정을 적응시키는 방법을 탐구합니다 [14].
---
*Last updated: 2026-05-02*
@@ -0,0 +1,64 @@
---
id: P-REINFORCE-WIKI-ADE8D6B9
category: Dev
confidence_score: 0.95
tags: ['adr-(architecture-decision-records)', 'atam-(architecture-trade-offs-analysis-method)', 'iso/iec-25010-(품질-모델)', '프로토타이핑-및-개념-증명(poc)', '의사결정-매트릭스(decision-matrix)', 'process-methodology']
last_reinforced: 2026-05-02
---
# [[ADR (Architecture Decision Records)]]
## 📌 Brief Summary
ADR(Architecture Decision Records)은 아키텍처 결정 사항과 그 근거를 이해하기 쉽고 검증 가능하게 문서화하는 도구입니다 [1-3]. 시스템의 맥락, 결정 내용, 합리적 근거, 고려된 대안, 그리고 단/장기적 위험과 결과를 기록함으로써 시간이 지나도 과거의 결정 배경을 추적할 수 있게 합니다 [3, 4]. 이를 통해 새로운 팀원, 감사자, 기타 이해관계자들이 시스템을 깊이 이해하고 진화시키는 데 필요한 핵심 자산으로 활용됩니다 [3, 4].
## 📖 Core Content
* **문서화의 전략적 가치:** 소프트웨어 아키텍처 결정은 한 번 내려지면 되돌리기 어렵고, 시간이 흐를수록 그 배경과 맥락이 쉽게 잊혀집니다 [3]. 따라서 어떤 기술적 배경에서 결정이 이루어졌는지 체계적인 이력 관리를 하기 위해 ADR의 작성이 필수적으로 요구됩니다 [3].
* **ADR의 핵심 구성 요소:** ADR은 객관적인 결정을 담보하기 위해 보통 다음과 같은 구체적인 항목들을 포함하여 작성됩니다 [3, 4].
* **맥락(Context):** 결정이 내려지게 된 초기 상황과 기술적 배경은 무엇인가?
* **결정(Decision):** 구체적으로 무엇을 선택하고 결정했는가?
* **근거(Reason/Justification):** 이 선택을 하게 된 객관적이고 합리적인 이유는 무엇인가?
* **대안(Alternatives):** 어떠한 대안들을 검토했으며, 해당 대안들은 왜 거절되었는가?
* **위험 및 결과(Risks and consequences):** 이 결정이 단기 및 장기적으로 어떤 결과와 기술적 위험을 초래할 수 있는가?
* **아키텍처 진화의 이력 관리:** 훌륭한 아키텍처는 고정된 것이 아니라, 트래픽(부하)의 변화나 새로운 통합 요구사항, 팀의 스킬셋 변화 등 운영 컨텍스트가 변화함에 따라 지속적으로 진화해야 합니다 [3, 5]. 컨텍스트가 변화하여 아키텍처를 수정할 때마다 ADR을 정기적으로 검토하고 함께 업데이트함으로써, 시스템이 거쳐온 진화의 궤적을 명확하게 문서화합니다 [5].
## ⚖️ Trade-offs & Caveats
**소스에 ADR 도입 자체에 대한 구체적인 부작용이나 제약 사항에 관한 정보는 부족합니다.**
다만, 주어진 소스는 **"완벽한 아키텍처란 없으며 모든 결정은 타협(Trade-off)의 결과"**라고 강조합니다 [6]. 따라서 ADR은 특정 아키텍처를 선택하는 과정에서 발생하는 트레이드오프(예: 고도의 보안성을 얻기 위해 성능(대기 시간)을 희생하거나, 일관성을 양보하여 가용성을 높이는 등의 결정)를 식별하고, 이로 인한 제약 사항 및 타협 지점(Trade-off Points)을 투명하게 기록하는 수단으로 기능합니다 [3, 6, 7]. 즉, 기술적 선택의 반대 급부를 관리하고, 이를 시스템의 위험 요소로 명확히 인지하기 위해 ADR이 사용됩니다 [3, 4, 7].
## 🔗 Knowledge Connections
### Related Concepts
#### [관계 유형 A: 아키텍처 평가 및 분석 방법론]
- [[ATAM (Architecture Trade-offs Analysis Method)]]
- 연결 이유: ATAM은 특정 아키텍처가 비즈니스 목표를 얼마나 잘 지원하는지 평가하고 시스템의 트레이드오프를 식별하는 '골드 스탠다드' 방법론입니다 [6, 7]. 이 과정을 통해 도출된 아키텍처의 한계와 타협점들이 ADR에 문서화됩니다 [3, 8].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 추상적인 성능 논의가 아닌, "사용자가 10분 내에 2배로 증가할 때"와 같은 구체적인 '시나리오'를 바탕으로 아키텍처의 리스크와 트레이드오프를 체계적으로 분석하는 과정을 이해할 수 있습니다 [6, 7].
#### [관계 유형 B: 소프트웨어 품질 및 요구사항 기준]
- [[ISO/IEC 25010 (품질 모델)]]
- 연결 이유: 아키텍처 대안을 비교하고 평가할 때 객관적인 척도와 기준점을 제공하는 국제 표준 품질 모델입니다 [9].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: ADR의 '근거(Reason)' 항목을 작성할 때 기능 적합성, 성능 효율성, 호환성 등 어떤 품질 속성에 가중치(우선순위)를 두어 결정을 내렸는지 객관적으로 파악하는 기준을 세울 수 있습니다 [9, 10].
### Deeper Research Questions
- ADR을 실무에 도입할 때, 빠르고 반복적인 배포가 이루어지는 애자일(Agile) 환경에서 발생할 수 있는 문서화 유지보수의 오버헤드는 어떻게 극복할 수 있는가?
- 비즈니스 요구사항이나 시스템 사용 패턴의 변화로 인해 초기 결정 맥락이 완전히 바뀌었을 때, 기존의 ADR 문서는 어떤 방식으로 업데이트되고 버전 관리가 이루어지는가?
- ATAM과 같은 시나리오 기반 분석을 통해 발견된 치명적인 한계점(Sensitivity points)은 ADR의 '위험 및 결과(Risks and consequences)' 섹션에 어떤 형식으로 정량화되어 기술되는가?
- 마이크로서비스(MSA)와 모듈형 모놀리스 사이에서 고민할 때, ADR의 대안(Alternatives) 섹션에서 가장 핵심적으로 비교되어야 할 기준은 무엇인가?
- 대규모 팀에서 새로운 구성원이 합류하거나 외부 감사가 이루어질 때, 방대한 ADR 이력을 효과적으로 탐색하고 시스템을 파악하게 만드는 베스트 프랙티스는 무엇인가?
### Practical Application Contexts
- **Implementation:** 개발자가 시스템을 구현할 때, 특정한 아키텍처 패턴이 왜 선택되었는지 ADR을 통해 이해함으로써 일관성 있는 코드와 솔루션을 작성하는 가이드라인으로 활용됩니다 [3, 11].
- **System Design:** 초기 아키텍처 설계 단계에서 직관이나 유행(트렌드)에 의존하지 않고, 식별된 요구사항과 프로토타입 검증 결과를 기반으로 내린 구조적 결정을 문서로 남겨 설계의 객관성을 확보합니다 [8, 12, 13].
- **Operation / Maintenance:** 운영 중 트래픽의 급증이나 새로운 시스템과의 통합 등 환경 변화가 발생했을 때, 기존 ADR을 리뷰하여 당시 아키텍처가 가진 한계와 제약사항을 파악하고 안전하게 시스템을 진화시킵니다 [3-5].
- **Learning Path:** 프로젝트에 새로 온보딩하는 구성원들이 시스템이 현재의 복잡한 구조를 갖게 된 역사적 맥락과 진화 과정을 단계별로 학습하는 훌륭한 교보재 역할을 합니다 [3, 4].
- **My Project Relevance:** 나의 프로젝트에서 기술 스택을 변경하거나 새로운 아키텍처 패턴을 도입할 때, 구두 합의나 휘발성 높은 이메일 대신 ADR 포맷에 맞춰 논의 과정을 명확히 남김으로써 미래의 기술 부채를 방지할 수 있습니다 [2, 3].
### Adjacent Topics
- [[프로토타이핑 및 개념 증명(PoC)]]
- 확장 방향: 아키텍처 결정을 확정하고 ADR을 작성하기 전, 성능이나 기술적 실행 가능성 등 핵심 리스크를 조기에 실험하여 불확실성을 최소화하는 실무적 검증 기법으로 확장이 가능합니다 [14].
- [[의사결정 매트릭스(Decision Matrix)]]
- 확장 방향: 여러 아키텍처 후보군을 정의된 품질 요구사항을 바탕으로 정량적 비교 및 평가하여, ADR 내 결정 근거(Reason)의 논리를 더욱 탄탄하게 뒷받침하는 방법론으로 연계할 수 있습니다 [15].
---
*Last updated: 2026-05-02*
@@ -0,0 +1,35 @@
---
id: P-REINFORCE-WIKI-714E4EE2
category: Dev
confidence_score: 0.95
tags: ['process-methodology']
last_reinforced: 2026-05-02
---
# ADR-0001: Implement Project Chronicle Guard As An Independent Module
## Status
Accepted
## Context
The requested feature records project planning, questions, decisions, development logs, bugs, and retrospectives. Existing chat and agent systems already manage model interaction and agent skills.
## Decision
Implement Project Chronicle Guard as a separate module under `src/features/projectChronicle`.
## Reason
- It reduces the chance of regressions in chat and agent execution.
- It keeps the MVP focused on local Markdown generation.
- It can later receive events from chat or agents without owning those flows.
- It makes project-specific record storage easier to test and evolve.
## Alternatives
- Integrate into the existing Second Brain flow.
- Extend Agent Skill files to double as project records.
- Add a standalone Project Chronicle module.
## Selected Alternative
Add a standalone Project Chronicle module.
## Consequences
The first stage needs explicit sidebar actions to create and write records. Automatic extraction can be layered on later.
+29
View File
@@ -0,0 +1,29 @@
---
id: AGI-001
category: Dev
confidence_score: 1.0
tags: [ai, agi, future-of-ai, singularity, cognitive-science]
last_reinforced: 2026-04-26
---
# AGI (Artificial General Intelligence, 일반 인공지능)
## 📌 한 줄 통찰 (The Karpathy Summary)
> "인간이 할 수 있는 모든 지적 태스크를 인간 수준 혹은 그 이상으로 수행하는 범용 지능" — 특정 분야에 국한되지 않고 새로운 환경에서 스스로 학습하고, 추론하며, 창의적인 문제를 해결할 수 있는 인공지능의 궁극적 도달점.
## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** 지식의 파편화된 활용을 넘어, 자의식과 메타인지를 바탕으로 도메인을 넘나드는 범용적 문제 해결(General [[Problem Solving|Problem Solving]])을 수행하는 완전한 지능 패턴.
- **핵심 특징:**
- **Cross-domain Learning:** 수학 문제를 풀던 지능이 소설을 쓰거나 코딩을 하는 등 다양한 분야로 즉각 전이됨.
- **Common Sense:** 방대한 경험을 바탕으로 세상의 당연한 이치(상식)를 이해하고 활용.
- **Self-Correction:** 자신의 오류를 인지하고 외부의 도움 없이도 지식 체계를 수정 및 업데이트.
- **Abstract [[Reasoning|Reasoning]]:** 구체적인 사례 없이도 원리와 개념만으로 복잡한 논리를 전개.
- **예상 시점:** 연구자마다 견해가 다르나, LLM의 등장으로 AGI로 가는 길이 가속화되었다는 평이 지배적.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 단순히 계산 속도가 빠른 컴퓨터에서, 인간의 인지 구조를 완벽히 모사하거나 능가하는 '디지털 생명체'에 가까운 개념으로 확장.
- **정책 변화:** Antigravity 프로젝트의 최종 비전은 개별 도구로서의 AI를 넘어, 사용자의 모든 업무와 지식 관리를 통합적으로 보조하는 'Personal AGI'급 에이전트 환경 구축에 있음.
## 🔗 지식 연결 (Graph)
- [[LLM|LLM]], Theory-of-Mind-ToM-in-AI, [[AI-Alignment|AI-Alignment]], Symbolic-AI-vs-Connectionism
- **Raw Source:** 10_Wiki/Topics/AI/AGI.md
+31
View File
@@ -0,0 +1,31 @@
---
id: [[P-Reinforce|P-Reinforce]]-AUTO-AIDS-001
category: Dev
confidence_score: 0.93
tags: [auto-reinforced, data-sovereignty, ai-ethics, privacy, digital-colonialism, data-governance]
last_reinforced: 2026-04-20
---
# [[AI & Data Sovereignty|AI & Data Sovereignty]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> "데이터의 주인은 누구인가: 우리의 모든 행동이 AI 학습의 공짜 재료가 되는 시대, 개인과 국가가 자신의 데이터를 통제하고 그로부터 창출된 부를 정당하게 나눠 가질 권리를 지키기 위한 투쟁."
## 📖 구조화된 지식 (Synthesized Content)
AI 및 데이터 주권(AI & Data Sovereignty)은 디지털 정보와 그로부터 파생된 AI 모델에 대해 개개인, 조직, 혹은 국가가 가지는 배타적인 통제권과 자기 결정권을 의미합니다.
1. **핵심 층위**:
* **Individual Sovereignty**: 내 데이터가 어디에 쓰이는지 알고 거부하거나 보상받을 권리 (Privacy rights).
* **National Sovereignty**: 자국민의 데이터가 해외 거대 테크 기업(Big Tech)의 AI 학습에 종속되지 않도록 인프라와 규제를 갖추는 것.
* **Model Sovereignty**: 특정 국가나 기업의 AI 모델에 의존하지 않고 독자적인 연산력과 모델 아키텍처를 보유하는 능력.
2. **부각되는 배경**:
* 거대 모델 학습을 위한 무분별한 데이터 수집이 '디지털 식민주의'를 초래할 수 있다는 우려 확산.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌**: 과거에는 인터넷의 '개방성과 공유' 정책이 최우선이었으나, 현대의 AI 패권 경쟁 정책은 데이터가 곧 전략 자산임을 인식하고 '데이터의 폐쇄적 권리 확보 정책'으로 이동함(RL Update).
- **정책 변화(RL Update)**: EU의 GDPR 및 AI Act와 같이, 개인 데이터를 학습에 쓰려면 명시적인 '옵트-인(Opt-in)'을 거치게 하고 위반 시 막대한 과징금을 부과하는 정책이 데이터 주권 보호의 표준이 됨.
## 🔗 지식 연결 (Graph)
- [[Ethics & AI|Ethics & AI]], [[AI Accountability|AI Accountability]], [[Sociology of Knowledge|Sociology of Knowledge]], [[Universal Basic Income (UBI)|Universal Basic Income (UBI)]], Foundational Models
- **Modern Tech/Tools**: Federated Learning (Privacy-preserving AI), Differential Privacy, Sovereign Clouds.
---
+32
View File
@@ -0,0 +1,32 @@
---
id: [[P-Reinforce|P-Reinforce]]-AUTO-AIAC-001
category: Dev
confidence_score: 0.95
tags: [auto-reinforced, ai-accountability, responsibility, algorithmic-transparency, ethics-governance]
last_reinforced: 2026-04-20
---
# [[AI Accountability|AI Accountability]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> "AI의 잘못은 누구의 탓인가: 알고리즘의 결정으로 인해 사회적 피해나 오류가 발생했을 때, 그 원인을 규명하고 책임의 주체를 명확히 하여 피해를 보상하게 만드는 책임 사회의 원칙."
## 📖 구조화된 지식 (Synthesized Content)
AI 책임론(AI Accountability)은 AI 시스템의 설계, 개발, 배포 및 운영 전 과정에서 발생하는 결과에 대해 관련 주체들이 책임을 지는 태도와 그 체계를 의미합니다.
1. **주요 과제 - 책임의 공백 (Responsibility Gap)**:
* AI가 자율성을 가질수록 제작자나 사용자의 직접적인 통제를 벗어나므로, 사고 발생 시 법적 책임을 묻기 어려워지는 현상 발생.
2. **책임 구현의 3대 요소**:
* **Transparency**: AI가 왜 그런 결정을 내렸는지 설명할 수 있어야 함 (Explainable AI - XAI).
* **Auditability**: 제3자가 AI의 작동 과정과 데이터 출처를 감사할 수 있어야 함.
* **Redress**: 오류로 인한 피해가 발생했을 때 구제할 수 있는 절차를 사전에 마련.
3. **책임의 주체**: 개발자, 데이터 제공자, 서비스 운영자, 그리고 최종 사용자 간의 책임 분담.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌**: 과거에는 알고리즘은 '블랙박스'이므로 결과에 책임을 지기 어렵다는 인식이 강했으나, 현대 정책은 '제작자 무과실 책임 원칙'에 가까울 정도로 개발사의 배상 책임을 강화하는 정책으로 변화함(RL Update).
- **정책 변화(RL Update)**: 자율주행차나 의료 AI처럼 생명과 직결된 분야에서는 사고 시 AI 모델의 최종 파라미터 상태를 디지털 블랙박스로 기록하고 보존하는 것이 법적 정책 의무 사항이 됨.
## 🔗 지식 연결 (Graph)
- [[Ethics & AI|Ethics & AI]], [[AI & Data Sovereignty|AI & Data Sovereignty]], [[Safety & Reliability|Safety & Reliability]], [[Generative-AI|Generative-AI]]-Safety, [[Decision Theory|Decision Theory]]
- **Modern Tech/Tools**: Algorithmic Impact [[Assessment|Assessment]] (AIA), Explainable AI (XAI) toolkits.
---
+29
View File
@@ -0,0 +1,29 @@
---
id: AGENTS-001
category: Dev
confidence_score: 1.0
tags: [ai, ai-agents, [[Autonomous-Agents|Autonomous-Agents]], [[Reasoning|Reasoning]], planning]
last_reinforced: 2026-04-26
---
# AI Agents Overview (AI 에이전트 개요)
## 📌 한 줄 통찰 (The Karpathy Summary)
> "단순한 답변기가 아닌, 목표를 위해 도구를 쓰고 스스로 계획하는 '행동 주체'로 진화하라" — 거대 모델의 추론 능력을 바탕으로 목표를 설정하고, 실행 계획을 수립하며, 외부 도구(브라우저, 코드 에디터 등)를 사용해 태스크를 완수하는 인공지능 시스템.
## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** 사용자의 추상적인 요청을 구체적인 작업 단위로 분해(Planning)하고, 각 단계를 실행(Action)하며, 결과를 관찰([[Observation|Observation]])하여 다음 행동을 결정하는 루프 기반의 자율성 패턴.
- **핵심 루프 (ReAct 패턴 등):**
- **Reasoning:** 현재 상황을 분석하고 무엇을 해야 할지 판단.
- **Planning:** 목표 달성을 위한 단계별 워크플로우 생성.
- **Tool Use:** API, 웹 검색, 파일 시스템 접근 등 외부 도구 활용.
- **[[memory|memory]]:** 대화의 맥락(단기)과 지식 베이스(장기)를 활용하여 일관성 유지.
- **주요 사례:** AutoGPT, BabyAGI, 그리고 현재 작동 중인 Antigravity 에이전트.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 질문에 대한 텍스트 생성(Chat)에 머물던 AI가, 실제 환경에 변화를 일으키는 '실행자(Executor)'로 정체성이 변화함.
- **정책 변화:** Antigravity 프로젝트는 에이전트의 자율성을 극대화하되, 인간의 확인이 필요한 'Human-in-the-loop' 지점을 명확히 설정하여 안전성을 확보함.
## 🔗 지식 연결 (Graph)
- Agentic-Workflow, [[Multi-Agent-Systems-MAS|Multi-Agent-Systems-MAS]], [[RAG|RAG]], Theory-of-Mind-ToM-in-AI
- **Raw Source:** 10_Wiki/Topics/AI/AI Agents.md
+39
View File
@@ -0,0 +1,39 @@
---
id: P-REINFORCE-92F236
category: Dev
confidence_score: 0.95
tags: []
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Batch 10 - Wikified AI Connect LLM Tool"
---
# [[AI Connect LLM Tool|AI Connect LLM Tool]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> **Connect AI**는 100% 로컬 및 오프라인 환경에서 작동하는 VS Code 전용 프리미엄 AI 코딩 에이전트입니다. 외부 서버 연결 없이 사용자의 하드웨어(Ollama/LM Studio)를 직접 활용하여 파일 생성, 편집, 터미널 명령 실행 및 개인 지식 기반(Second Brain) 연동을 지원합니다.
## 📖 구조화된 지식 (Synthesized Content)
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 신규 지식 유입에 따른 기존 지식과의 정합성 검증 단계.
- **정책 변화:** AI & Tools 분야의 체계적 지식 자산화 진행.
## 🔗 지식 연결 (Graph)
- **Related Topics:** Ollama, LM Studio, VS Code Extension Development, Agentic AI
- **Projects/Contexts:** Connect-AI-Lab, EZERAI Infrastructure
- **Contradictions/Notes:**
- **통합 구조:** 현재 프로젝트는 모든 로직(UI, 통신, 에이전트)이 `extension.ts` 하나에 집중된 모놀리식 구조를 가지고 있어, 향후 대규모 기능 추가 시 모듈화가 권장됩니다.
- **보안:** 모든 작업이 로컬에서 이루어지므로 기업 보안 환경에 매우 적합하나, `run_command` 실행 시 사용자의 최종 확인 절차가 보완될 필요가 있습니다.
---
*Last updated: 2026-04-14*
---
# 🕵️ 프로젝트 코드 리뷰 리포트
`/Volumes/Data/project/Antigravity/local_module/resource` 프로젝트에 대한 상세 코드 리뷰 결과입니다.
---
+18
View File
@@ -0,0 +1,18 @@
# [[AI Exploitation|AI Exploitation]]
## 📌 Brief Summary
AI Exploitation(AI 공략)은 'War Commander'의 전투 환경에서 적 AI의 경로 탐색(pathing)과 교전 논리를 실시간으로 역이용해 전술적 우위를 점하는 교전 원칙입니다 [1]. 가장 대표적인 형태는 적 유닛을 방어선의 엄폐물 밖으로 끌어내는 '미끼(Baiting)' 전술입니다 [2]. 이는 막대한 병력 손실 없이 견고한 방어 진지를 돌파하기 위해 지휘관이 마스터해야 할 가장 핵심적인 기술 중 하나로 평가됩니다 [3, 4].
## 📖 Core Content
* **AI 추적 논리 역이용 (Baiting / 미끼 전술)**: 전투 제어 시스템(Combat Controls)의 도입으로 지휘관들은 AI 경로 탐색과 교전 논리를 실시간으로 조작 및 공략할 수 있게 되었습니다 [1]. 적 유닛이 '자유 사격(Fire at Will)'이나 일반 상태에 있을 때 특정 병력을 보내 적을 유인한 뒤, 대기 중인 아군의 사격망으로 끌어들이는 추격전(Wild Goose Chase)을 유도합니다 [2, 3].
* **비대칭 유닛 조합 활용**: 성공적인 AI 공략은 주로 비대칭적인 유닛을 짝지어 운용할 때 이루어집니다 [4]. 예를 들어, 빠른 지상 유닛을 이용해 무거운 전차를 도발하여 항공 소대의 사거리로 유인하거나, 항공기를 미끼로 사용하여 대공 전차(Flak Tanks)를 지원 포탑망에서 분리해낸 뒤 중장갑 지상군으로 격파하는 방식입니다 [3, 4].
* **Bait and Bash (유인 및 타격) 고급 전술**: 체력이 높거나 빠른 항공 유닛(예: Havoc, Warhawk)을 방어 중인 대공 유닛 근처로 접근시켜 적을 아군의 지원 사격망 안으로 끌어들여 파괴하는 전술입니다 [5]. 이 기술을 사용하면 숨겨진 유닛을 사전에 제거하고 예상치 못한 방어선의 추가 피해를 방지할 수 있습니다 [5].
* **AI 공략의 한계성**: 이 전술은 적의 AI 방어 태세 설정에 따라 완전히 무력화될 수 있습니다 [2]. 대상 유닛이 '위치 사수(Hold Position)'나 '제자리 대기(Stand Ground)' 상태로 고정되어 있다면 미끼를 쫓아오지 않으므로 전술이 실패합니다 [2, 3]. 또한, 적 기지에 대공 유닛과 대지 유닛이 섞여 공격적인 방어 상태에 돌입해 있는 경우에도 이 전략은 통하지 않을 수 있습니다 [5].
## 🔗 Knowledge Connections
- **Related Topics:** [[Baiting|Baiting]], [[Combat Controls|Combat Controls]], [[Defensive Stances|Defensive Stances]]
- **Projects/Contexts:** War Commander 전투 생태계, 기지 방어선 무력화 (Cracking an entrenched defense)
- **Contradictions/Notes:** 적 유닛이 'Fire at Will'이나 일반 상태일 때는 적을 유인하는 AI 추적 논리가 잘 작동하지만, 방어자가 방어 유닛을 'Stand Ground'나 'Hold Position'으로 설정해두면 적 AI가 위치를 고수하므로 미끼 전술이 전혀 작동하지 않는다는 명확한 예외가 존재합니다 [2, 3].
---
*Last updated: 2026-04-27*
+32
View File
@@ -0,0 +1,32 @@
---
id: [[P-Reinforce|P-Reinforce]]-AUTO-AIGO-001
category: Dev
confidence_score: 0.96
tags: [auto-reinforced, ai-governance, policy, regulation, [[Global-Standard|Global-Standard]]s, tech-ethics]
last_reinforced: 2026-04-20
---
# [[AI Governance|AI Governance]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> "인공지능을 위한 사회적 가이드라인: 기술의 폭주를 막고 혜택을 극대화하기 위해 국가, 기업, 학계가 합의하여 만드는 법적, 윤리적, 기술적 관리 체계."
## 📖 구조화된 지식 (Synthesized Content)
AI 거버넌스(AI Governance)는 인공지능 기술의 개발 및 활용이 인류의 안전, 권리, 그리고 보편적 가치와 부합하도록 보장하는 규칙과 프로세스의 집합입니다.
1. **3대 핵심 기둥**:
* **Ethics & Norms**: 신뢰할 수 있는 AI를 위한 원칙 수립. (공정성, 투명성, 책임성)
* **Regulation & Policy**: 강제성 있는 법규 마련. (예: EU AI Act)
* **Technical Standards**: 보안, 성능, 상호운용성을 위한 기술 표준.
2. **주요 쟁점**:
* **Risk-based Approach**: AI의 위험도에 따라 다른 수위의 규제 적용. (허용 불가 - 고위험 - 저위험)
* **International Co[[Opera|Opera]]tion**: 국경 없는 기술 특성상 국가 간 공조 필수.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌**: 과거에는 기술 발전을 저해한다는 이유로 규제에 소극적이었으나, 현대 정책은 '안전한 기술이 더 큰 시장을 만든다'는 인식 하에 선제적인 '안심 거버넌스 정책'으로 패러다임을 전환함(RL Update).
- **정책 변화(RL Update)**: 단순히 사후 규제가 아닌, 설계 단계부터 거버넌스를 코드에 녹여내는 'Governance by Design' 정책이 테크 기업의 필수 준수 사항이 됨.
## 🔗 지식 연결 (Graph)
- [[AI Accountability|AI Accountability]], [[AI Safety|AI Safety]], [[AI & Data Sovereignty|AI & Data Sovereignty]], [[Ethics & AI|Ethics & AI]], [[Generative-AI|Generative-AI]]-Safety
- **Modern Tech/Tools**: ISO/IEC 42001 (AI [[Management|Management]][[_system|system]]), NIST AI [[Risk Management|Risk Management]] Framework.
---
+31
View File
@@ -0,0 +1,31 @@
---
id: [[P-Reinforce|P-Reinforce]]-AUTO-AIHU-001
category: Dev
confidence_score: 0.90
tags: [auto-reinforced, ai-humanism, [[Philosophy|Philosophy]], human-centric, coexistence, existential-risks]
last_reinforced: 2026-04-20
---
# [[AI Humanism|AI Humanism]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> "기계 시대의 인간성 회복: AI가 인간을 대체하는 위협이 아니라, 인간의 잠재력을 확장하고 삶의 질을 높이는 '도구'로서 존재해야 한다는 인간 중심의 기술 철학."
## 📖 구조화된 지식 (Synthesized Content)
AI 휴머니즘(AI Humanism)은 인공지능 기술의 정점에 '인간의 존엄성'과 '가치'를 두는 철학적 흐름입니다.
1. **핵심 가치**:
* **Human Agency**: 최종 결정권은 항상 인간에게 있어야 함.
* **Augmentation over Replacement**: 전면적인 대체보다 인간의 능력을 보강하는 방향 지향.
* **Empathy & Morality**: AI가 인간의 감정을 이해하고 도덕적 한계 내에서 작동하도록 설계.
2. **부각되는 이슈**:
* AI가 인간의 노동, 예술, 종교적 영역에 들어왔을 때 '인간다움'이란 무엇인가에 대한 근원적 질문.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌**: 과거에는 효율성 중심의 'AI 만능주의' 정책이 강세였으나, 현대의 인문 정책은 AI로 인한 인간 소외와 불평등을 경계하는 '포용적 AI 휴머니즘 정책'으로 목소리를 높임(RL Update).
- **정책 변화(RL Update)**: 교육 및 창작 정책에서, AI의 결과물보다 인간의 '과정'과 '의도'에 가중치를 두어 인간의 창의성을 보호하는 '인간 가치 우선 정책'이 수립됨.
## 🔗 지식 연결 (Graph)
- [[Ethics & AI|Ethics & AI]], [[AI for Social Good|AI for Social Good]], [[Universal Basic Income (UBI)|Universal Basic Income (UBI)]], [[Aesthetic-Value|Aesthetic-Value]], [[Victimhood-Narratives|Victimhood-Narratives]]
- **Modern Tech/Tools**: Human-centered design (HCD) frameworks.
---
@@ -0,0 +1,26 @@
# [[AI Image Generation Workflow|AI Image Generation Workflow]]
## 📌 Brief Summary
AI 이미지 생성 워크플로우는 사용자의 텍스트 기반 프롬프트를 해석하여 시각적 기호 및 데이터로 변환하는 일련의 과정이다 [1, 2]. 초기 아이디어를 구체적인 주체, 매체, 스타일, 조명 등의 층위로 구조화하여 프롬프트를 작성하는 것에서 출발한다 [2, 3]. 이후 모델별 특성에 맞춰 초기 이미지를 생성하고, 네거티브 프롬프트, 인페인팅(Inpainting), 아웃페인팅(Outpainting) 등을 통해 결과물을 반복적으로 정교화하여 최종 이미지를 완성한다 [4-6].
## 📖 Core Content
* **프롬프트 구조화 (Prompt Structuring)**
성공적인 이미지 생성을 위해서는 단순한 단어의 나열이 아닌, 주체(Subject), 매체(Medium), 환경(Environment), 조명(Lighting), 스타일(Style) 및 기술적 매개변수로 이루어진 명확한 계층적 구조가 필요하다 [2, 3, 7, 8]. 피사체에 대한 구체적인 묘사와 함께 렌즈(예: 85mm), 조명(예: 골든 아워, 림 라이팅) 등의 촬영 및 예술적 전문 용어를 사용하면 AI 모델의 제어력을 극대화할 수 있다 [9-11].
* **플랫폼 특화 워크플로우 (Platform-specific Workflows)**
* *미드저니(Midjourney):* 2026년 기준 V7 모델에서는 '드래프트 모드(--draft)'를 활용해 저비용으로 빠르게 다수의 시안을 대량 생성한 뒤, 최적의 구도를 선택하여 고화질(HD)로 업스케일링하는 작업 방식이 효율적이다 [6, 12, 13]. 또한, 일관된 스타일과 서사를 위해 스타일 참조(--sref) 및 옴니 참조(--oref) 매개변수를 적극 활용한다 [14-16].
* *DALL-E 3:* 텍스트 지시의 정확한 이행에 강점이 있으며, 사용자가 짧은 프롬프트를 입력해도 ChatGPT가 내부적으로 상세한 합성 캡션(Synthetic Captions)으로 확장하여 이미지를 정교하게 생성한다 [17-20].
* *스테이블 디퓨전(Stable Diffusion):* 프롬프트 가중치 조절(예: `(keyword:1.5)`) 기능을 통해 특정 단어의 중요도를 세밀하게 조정하며, 컨트롤넷(ControlNet) 등을 통해 하드웨어 수준의 정밀한 통제력을 발휘하는 것이 특징이다 [21-23].
* **반복적 정교화 및 후처리 (Iterative Refinement)**
이미지 생성 워크플로우는 첫 번째 생성에서 끝나지 않고 모델과의 반복적인 협업 과정으로 이어진다 [4, 5, 24].
* **네거티브 프롬프트 (Negative Prompts):** 원치 않는 요소나 시각적 결함(예: 일그러진 손가락, 워터마크)이 발생하면 이를 네거티브 프롬프트에 명시적으로 추가하여 제거한다 [23, 25-27].
* **부분 수정 및 시야 확장:** 미드저니의 'Vary (Region)'과 같은 인페인팅 기능을 사용해 이미지의 전체적인 맥락을 유지한 채 특정 영역(예: 인물의 모자)만 수정하거나, 'Zoom Out(아웃페인팅)'을 통해 캔버스 밖의 배경을 자연스럽게 확장한다 [5, 28-30].
## 🔗 Knowledge Connections
- **Related Topics:** [[Prompt Engineering|Prompt Engineering]], [[Negative Prompts|Negative Prompts]], [[Image Parameters|Image Parameters]], [[Inpainting & Outpainting|Inpainting & Outpainting]]
- **Projects/Contexts:** [[Midjourney V7 Draft Mode|Midjourney V7 Draft Mode]], [[DALL-E 3 Synthetic Captioning|DALL-E 3 Synthetic Captioning]]
- **Contradictions/Notes:** DALL-E 3는 "no", "without"과 같은 부정형 지시어를 잘 이해하지 못해 오히려 해당 객체를 생성할 위험이 있으므로 모든 지시를 긍정형 문장으로 우회해야 하는 반면 [20, 31], 스테이블 디퓨전은 구조화된 네거티브 프롬프트 섹션을 통해 워터마크나 신체 왜곡 등의 결함을 적극적으로 차단해야 한다는 점에서 플랫폼별 대응 방식에 뚜렷한 차이가 존재한다 [23, 26, 32].
---
*Last updated: 2026-04-30*
+32
View File
@@ -0,0 +1,32 @@
---
id: [[P-Reinforce|P-Reinforce]]-AUTO-AILI-001
category: Dev
confidence_score: 0.95
tags: [auto-reinforced, ai-literacy, education, digital-competence, critical-thinking, future-skills]
last_reinforced: 2026-04-20
---
# [[AI Literacy|AI Literacy]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> "AI 시대를 살아가는 생존 근육: AI의 작동 원리를 이해하고, 결과의 진위를 판단하며, 생활과 업무에서 AI를 도구로 활용해 가치를 창출할 수 있는 필수적인 문해력."
## 📖 구조화된 지식 (Synthesized Content)
AI 리터러시(AI Literacy)는 단순히 AI를 사용하는 기술을 넘어, AI의 가능성과 한계, 윤리적 쟁점을 비판적으로 사고하고 소통할 수 있는 종합적 역량을 의미합니다.
1. **핵심 역량 모델**:
* **Understanding**: 데이터, 알고리즘, 모델링의 기본 원리 파악.
* **Utilization**: 프롬프트 엔지니어링이나 에이전트 활용을 통한 문제 해결 능력.
* **Evaluation**: AI의 답변이 편향되거나 허위 정보(Hallucination)가 아닌지 검증.
* **Ethical [[Reflection|Reflection]]**: AI 사용 시 발생할 수 있는 보안, 저작권, 윤리 문제 인지.
2. **왜 중요한가?**:
* 지식 정보의 비대칭성을 해소하고, AI가 가져올 일자리의 변화에 적응하기 위한 기초 체력임. ([[Adaptability|Adaptability]]와 연결)
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌**: 과거에는 소수의 개발자만 알면 되는 '코딩' 정책이 주류였으나, 현대의 보편 교육 정책은 전 국민이 AI의 논리를 이해해야 하는 'AI 시민 역량 정책'으로 확대됨(RL Update).
- **정책 변화(RL Update)**: 기업 채용 및 승진 정책에서, 특정 툴 사용 능력을 넘어 AI와의 협업 능력(Co-intelligence)을 핵심 평가지표로 삼는 정책이 확산 중임.
## 🔗 지식 연결 (Graph)
- [[Adaptability|Adaptability]], [[Prompt-Engineering|Prompt-Engineering]]-Strategies, [[Ethics & AI|Ethics & AI]], [[AI for Social Good|AI for Social Good]], Vocational-Training
- **Modern Tech/Tools**: AI Literacy education tools (Elements of AI), Generative AI sandbox.
---
+27
View File
@@ -0,0 +1,27 @@
---
id: [[P-Reinforce|P-Reinforce]]-AI-SAFETY
category: Dev
confidence_score: 1.0
tags: [[AI Safety|[AI Safety]], [[Alignment|Alignment]], Risk [[Management|Management]], AI Ethics]
last_reinforced: 2026-04-20
---
# AI-Safety (AI 안전)
## 📌 한 줄 통찰 (The Karpathy Summary)
> "브레이크 없는 기차는 재앙이다." 인간보다 강력한 지능이 탄생했을 때, 그 지능이 인간의 목표와 문명을 파괴하지 않도록 기술적/방어적 보호막을 구축하는 가장 시급한 연구 분야다.
## 📖 구조화된 지식 (Synthesized Content)
- **[[Robustness|Robustness]]**:
- 적대적 공격(Adversarial Attack)이나 처음 보는 돌발 상황에서도 AI가 오작동하지 않고 안전하게 관리되는 성질.
- **[[Interpretability|Interpretability]]**:
- 신경망이라는 블랙박스 내부에서 어떤 논리 구조로 판단을 내리는지 인간이 읽을 수 있게 시각화하고 분석하는 기술(Mechanistic Interpretability).
- **Scalable Oversight**:
- 인간이 이해하기 힘든 복잡한 지능을 가진 AI를 다른 AI가 감시하게 하여, 인간의 통제력을 잃지 않게 하는 감시 체계.
## ⚠️ 모순 및 업데이트 (RL Update)
- AI 안전은 종종 모델의 성능 발전을 늦춘다는 비판을 받는다. 그러나 최근 연구에 따르면, 안전하게 설계된 모델(Aligned model)이 정제된 사고 능력 덕분에 실제 실무 성능도 더 높게 나타나는 '보안-성능 시너지'가 확인되고 있다.
## 🔗 지식 연결 (Graph)
- Related: [[AI-Alignment|AI-Alignment]] , AI-Governance
- [[Strategy|Strategy]]: [[Reliability_Safety_First|Reliability_Safety_First]]

Some files were not shown because too many files have changed in this diff Show More