5.6 KiB
5.6 KiB
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, !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를 실측해 선별.
ActiveSkillDatabase가 Platformer using 참조 시 제거(순수 데이터화).- EerieVillage = 우리 조직 자산(BT12-Dev 구축). 저작권 문제 없음.
- 밸런스 수치는 EerieVillage 값 이식 후 GodDem 스케일(Player.Attack 22·적 HP 60~) 대비 재조정 필요(S3).