docs(BT13-GodDem): Phase B 아웃게임 완료 + EerieVillage 스킬이식 설계·착수
- Phase B 아웃게임(로비/상점/Hero) 완료 검증 기록 (GodDem 3832961) - EerieVillage 스킬 이식 설계 SOT v1 (Platformer 강결합→FX+데이터 이식·이펙터 재구현) - EerieVillage 디렉토리 등록 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
5c1a6adca1
commit
518dca0252
|
|
@ -4,7 +4,8 @@
|
|||
"defaultMode": "dontAsk",
|
||||
"additionalDirectories": [
|
||||
"E:\\NerdNavis\\GodDem",
|
||||
"C:\\Users\\sw\\Downloads\\Layer Lab"
|
||||
"C:\\Users\\sw\\Downloads\\Layer Lab",
|
||||
"E:\\EerieVillage"
|
||||
],
|
||||
"allow": [
|
||||
"Read",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
# GodDem ← EerieVillage 스킬 시스템 이식 설계 SOT v1
|
||||
|
||||
> **작성**: Fable5(총괄PM) 2026-08-20 · **PD 지시**: EerieVillage(E:\EerieVillage)의 레벨업 스킬(3종 선택) + 연출 이펙트를 GodDem SurvivalBattle에 이식
|
||||
> **위임**: 개발팀장(Opus) → C49 · 단계 분할(S1 프레임워크+대표3종 → S2 확장)
|
||||
|
||||
## 0. 핵심 판정 (Explore 실측 근거)
|
||||
|
||||
EerieVillage 스킬 시스템은 **Platformer 스타터킷에 강결합**(`.asmdef` 없이 단일 어셈블리, `Platformer.Mechanics.Health`·`EnemyController`·`Core.Simulation` 직접 참조). **폴더 통째 복사 = 컴파일 불가.**
|
||||
→ **"자산은 그대로, 로직은 GodDem 구조로 재구현"** 방식.
|
||||
|
||||
| 구분 | 처리 | 근거 |
|
||||
|------|------|------|
|
||||
| **데이터 클래스** `SkillDataAsset`·`ActiveSkillData`·enum(`ActiveCategory`·`ActiveTrigger`·`ProjectileTrajectory`·`RangeTier`·`AttributeTags`·`TypeTags`) | **그대로 이식** | Platformer 무의존 순수 ScriptableObject. 단 base의 Platformer using이 있으면 제거 |
|
||||
| **스킬 데이터** `Assets/Resources/Skills/Active/*.asset` (ActiveSkillData 14개) | **그대로 이식** (Resources 경로 유지) | FX GUID 참조 보존 필요 |
|
||||
| **FX 프리팹** (ParticleSystem, `FX_BloodSkill`·`FX_DarkSkill`·`FX_FireSkill`·`FX_Slash_Collection` 등) | **사용분 복사** (GUID 유지) | 연출 재현. .asset이 참조하는 GUID가 깨지지 않게 |
|
||||
| **이펙터** `Scripts/Skills/Effectors/*` | **GodDem 재구현** | Platformer 강결합(`FindObjectsByType<EnemyController>`·`Health.Decrement`) |
|
||||
| **런타임** `ActiveSkillRuntime`·`PlayerSkillInventory`·`SkillRuntimeFactory` | **경량 재구현** | Simulation 이벤트버스 의존 제거 → 직접 호출 |
|
||||
| **버림** `SkillPlaceholders`·`SkillCardPlaceholder`·`IngameChoiceSkillUI`(빈 stub)·Passive/Awakening stub(효과 없음) | 미이식 | 실런타임 미사용 |
|
||||
|
||||
## 1. GodDem 어댑터 매핑 (이펙터 재구현 계약)
|
||||
|
||||
| EerieVillage(Platformer) | GodDem SurvivalBattle |
|
||||
|--------------------------|------------------------|
|
||||
| `FindObjectsByType<EnemyController>()` + Layer "Enemy" | `SurvivalBattleManager.Instance.Enemies` (List<SurvivalUnit>, `!IsDead` 필터) |
|
||||
| `Health.Decrement(int)` / `DecrementBypassInvuln` | `SurvivalUnit.TakeDamage(float)` |
|
||||
| `PlayerController.Facing`(Vector2) | 중앙 고정 → **가장 가까운 적 방향** 계산(`Player.transform.position` 기준) |
|
||||
| `Health.IsAlive` | `!SurvivalUnit.IsDead` |
|
||||
| `Simulation.Schedule<SkillFireEvent>()` | 직접 호출 (이벤트버스 불필요) |
|
||||
| `EnemyDeath` 체인 + `ExperienceSystem` | 기존 `SurvivalBattleManager.OnEnemyDied`(골드·EXP 이미 처리) |
|
||||
| 2D 물리 `Physics2D.OverlapBox/Raycast` | 그대로 (GodDem도 2D) — Layer·지면 raycast만 GodDem에 맞게 |
|
||||
| FX 스폰(`Instantiate`+`ParticleSystem.Play`+`FxAutoDestroyUnscaled`) | 그대로 (풀 없이 Instantiate/Destroy) |
|
||||
|
||||
## 2. 스킬 목록 (레벨업 풀 노출 10종 — 카테고리별 이펙터)
|
||||
|
||||
| CardId | 스킬 | Category | 이펙터(재구현) |
|
||||
|--------|------|----------|----------------|
|
||||
| A02 | 파이어볼 | Projectile(Line) | 투사체 직선 → 최근접 적 방향 |
|
||||
| A15 | 추적화염구 | Projectile(Homing) | 유도 투사체 |
|
||||
| A13 | 천둥발 | Projectile(Arc/관통) | 관통 투사체 |
|
||||
| A08 | 저주의화살 | Projectile(TargetEnemy) | 조준 투사체 + 디버프스택 |
|
||||
| A05 | 학익진 | MeleeArea | 플레이어 주변 범위 |
|
||||
| A12 | 정화의빛 | MeleeArea(2차판정) | 범위 + 2차 히트박스 |
|
||||
| A04 | 천둥 | MeleeArea(낙뢰) | 화면 내 랜덤 적 낙뢰 |
|
||||
| A_Laser | 용염레이저 | MeleeArea(레이저) | 방향 긴 박스 지속피해 |
|
||||
| A06 | 독늪 | PlacementPersistent | 지면 배치 지속 장판 |
|
||||
| A11 | 정령불 | Minion | 회전 방패 소환 |
|
||||
| A10 | 분신 | Minion | 플레이어 복제 재발동 |
|
||||
|
||||
**Phase S1 대표 3종**: A02 파이어볼(투사체) · A05 학익진(범위) · A04 천둥(낙뢰) — 카테고리 3종 커버.
|
||||
**Phase S2**: 나머지 확장.
|
||||
|
||||
## 3. 레벨업 연결 (기존 시스템 확장)
|
||||
|
||||
- 현재 `SurvivalSkill.cs` = 스탯 버프 3종 택1. Play_UI_ChoiceSkill UI는 Phase A 완성.
|
||||
- 확장: 스킬 종류를 **패시브(스탯버프, 현행)** + **액티브(발동형, 신규)** 2계층으로. 레벨업 3종 택1 풀에 액티브 스킬 혼합.
|
||||
- 액티브 스킬 습득 → `SurvivalActiveSkillRunner`(신규 MonoBehaviour)가 쿨타임 관리 → 발동 시 이펙터 Trigger.
|
||||
- 재픽 시 레벨업(StackLevel++) → 데미지/쿨타임 강화.
|
||||
- 데미지 = `BaseDamage × Player.Attack 연동 × StackFactor` (GodDem 스케일 조정).
|
||||
|
||||
## 4. 단계·위임
|
||||
|
||||
| Phase | 범위 | 검증 |
|
||||
|-------|------|------|
|
||||
| **S1** | 데이터클래스 이식 + FX 도입(대표3종 사용분) + 이펙터 3종(투사체/범위/낙뢰) + `SurvivalActiveSkillRunner` + 레벨업 연결 | Play — 스킬 습득 후 실제 발동·FX·적 피해·처치 |
|
||||
| **S2** | 나머지 이펙터 7종(유도/관통/조준/2차판정/레이저/독늪/분신) 확장 | Play 각 스킬 |
|
||||
| **S3** | 밸런스 튜닝(데미지/쿨타임 GodDem 스케일) | balance-designer |
|
||||
|
||||
## 5. 주의
|
||||
|
||||
- Unity MCP 단일 인스턴스 = 개발팀장 전담.
|
||||
- FX 481 프리팹 전량 복사 금지 — .asset 참조 GUID 추적해 **사용분만**(무거움 방지). 개발팀장이 각 .asset의 FX GUID를 실측해 선별.
|
||||
- `ActiveSkillData` base가 Platformer using 참조 시 제거(순수 데이터화).
|
||||
- EerieVillage = 우리 조직 자산(BT12-Dev 구축). 저작권 문제 없음.
|
||||
- 밸런스 수치는 EerieVillage 값 이식 후 GodDem 스케일(Player.Attack 22·적 HP 60~) 대비 재조정 필요(S3).
|
||||
|
|
@ -138,8 +138,20 @@
|
|||
- **개발팀장 정직보고 수용**: 폰트 계약 정정(`Resources/Fonts/ONEMobilePOP SDF`는 FontAsset 오타입 → `UGUI/Fonts/ONEMobilePOP_TMP` TMP_FontAsset 사용), 가짜 배경·미사용 노드(조이스틱·상자)·가짜 보상(젬300·상자) 숨김, 승리 트리거는 엔드리스 구조라 Stage 증가 감지로 설계(매니저 무수정).
|
||||
- **미세 이슈**(후속): 보상 코인 숫자 아이콘 겹침(기능 정상), SurvivalHUD.cs 파일 존치(컴포넌트만 제거), Button_Pause 무동작, 적 개별 HP바 미구현.
|
||||
|
||||
### 6-F-2. Phase B 아웃게임 — 위임 중
|
||||
- 로비(Lobby.prefab·PLAY→SurvivalBattle)/상점(Shop.prefab)/Hero(Equipment.prefab). 방향: SurvivalBattle에 맞는 심플 아웃게임(기존 가챠/카드/룬 메타는 데이터 불일치로 미이식, 재화만 CurrencyManager 재사용). 개발팀장(Opus) 위임 진행 중.
|
||||
### 6-F-2. Phase B 아웃게임 — 완료·검증 (GodDem `3832961`)
|
||||
- **신규 컨트롤러 방식**: 개발팀장(Opus)이 기존 `MainDocument.prefab`(13만 라인·nested 6331) 개조 대신 `SurvivalLobbyController.cs` 신규 — Layer Lab `Lobby/Shop/Equipment` 프리팹 3종을 전체화면 패널 Instantiate + 폰트 스왑 + 런타임 결선. 기존 대전형 컨트롤러(UGUIUIControllers·LobbyController) 비활성화(비파괴).
|
||||
- **PM 직접 검증**(스크린샷 3장 실측): 로비(재화헤더·캐릭터·**플레이 버튼**·하단탭 — 원작 1_Lobby 동일) / 상점(스페셜 오퍼·데일리 딜 — 13_Shop 동일) / Hero(캐릭터·장비슬롯6·공격84/체력750·전체해제·합성·능력치 — 6_Equipment 동일). **한글 정상·콘솔 0**.
|
||||
- **핵심 연결**: `SceneManager.LoadScene("SurvivalBattle")` 실전환 검증 + `CurrencyManager` 옵저버 라이브 바인딩(349.81k 실시간 갱신). EditorBuildSettings에 SurvivalBattle 씬 등록.
|
||||
- **개발팀장 정직보고**: 폰트 자산 함정(`Resources/Fonts/ONEMobilePOP SDF`=TextCore FontAsset·null반환 → `UGUI/Fonts/ONEMobilePOP_TMP`=TMP_FontAsset 사용). Phase A도 동일 폴백코드 보유하나 SerializeField 할당으로 실동작(한글 정상 확인). Lobby 단독 Play 콘솔 에러 2건은 소환대전 `LobbyScene.OnEnable`(비활성화로 제거).
|
||||
- **후속(S2 이후)**: 상점 구매·Hero 장착/합성 내부 로직 미결선(SurvivalBattle 영구 메타 미존재, 설계상 후속). BaseLoading→Lobby 전체부팅 검증·로비 장식크롬(Friends/Ranking 등 영문) 후속.
|
||||
|
||||
## 6-G. EerieVillage 스킬 시스템 이식 — 착수 (2026-08-20)
|
||||
|
||||
- **PD 지시**: EerieVillage(E:\EerieVillage) 프로젝트의 레벨업 스킬(3종 선택) + 연출 이펙트를 GodDem SurvivalBattle에 이식. "EerieVillage에 사용·구현된 스킬을 이식".
|
||||
- **Explore 실측 (조사)**: EerieVillage = 우리 조직 BT12-Dev 구축 조선무협 스킬 시스템. 액티브 14종(Resources/Skills/Active, 레벨업 풀 10종: 파이어볼·천둥·학익진·독늪·저주화살·분신·정령불·정화의빛·천둥발·용염레이저) + 이펙터 13종(투사체/유도/관통/범위/낙뢰/레이저/독늪/소환/분신/상태이상) + FX 481프리팹(ParticleSystem, 혈·암흑·화염·참격).
|
||||
- **핵심 판정**: 스킬 시스템이 **Platformer 스타터킷 강결합**(`.asmdef` 없음·`Health`·`EnemyController`·`Simulation` 직접참조) → **통째 복사 불가**. 방식 = **데이터클래스(ActiveSkillData 순수 SO)·스킬.asset·FX는 그대로 이식 + 이펙터는 GodDem 구조로 재구현**(적탐지=SurvivalBattleManager.Enemies·데미지=SurvivalUnit.TakeDamage·발사원=Player.transform).
|
||||
- **설계 SOT**: `공유/기획/GodDem/2026-08-20_스킬이식_설계_v1.md` (§0 이식판정·§1 어댑터매핑·§2 스킬목록·§3 레벨업연결·§4 S1~S3 분할).
|
||||
- **위임**: 개발팀장(Opus) Phase S1(데이터클래스+FX+이펙터 3종[파이어볼/학익진/천둥]+SurvivalActiveSkillRunner+레벨업 연결) 진행 중. S2=나머지 7종, S3=밸런스.
|
||||
|
||||
### 6-F-3. 도구 자동화 근본원인 규명
|
||||
- PD 반복 불만("몇 번을 강조하냐"). **근본원인**: `permissions.defaultMode: dontAsk`는 **세션 시작 시점 1회 로드·고정**. 세션 도중 설정 변경은 defaultMode에 미반영 → 세션 중 처음 쓰는 도구(MCP·위임 도구)마다 프롬프트. **완전 해결 = 세션 재시작**. 조치: allow에 위임 도구(Task·SendMessage·Workflow 등) 전면 추가 + `settings.local.json` dontAsk. **PD 재시작 완료 → 이후 프롬프트 소멸 확인**.
|
||||
|
|
|
|||
Loading…
Reference in New Issue