134 lines
7.9 KiB
Markdown
134 lines
7.9 KiB
Markdown
|
|
---
|
|||
|
|
type: 템플릿_구조_분석
|
|||
|
|
scope: Unity_프로젝트_실측
|
|||
|
|
author: 개발팀장
|
|||
|
|
date: 2026-04-23
|
|||
|
|
version: v0.1
|
|||
|
|
project: EerieVillage (기묘한 고을 : 조선퇴마뎐 / EerieVillage: Joseon Exorcist)
|
|||
|
|
phase: BT5-Dev 3단계 (템플릿 선행 분석)
|
|||
|
|
unity_version: 6000.3.13f1 LTS
|
|||
|
|
template_base: Unity 2D PlatformerMicrogame
|
|||
|
|
data_source: E:/EerieVillage/ Read·Glob 실측 (PC 독립 경로는 paths.local.json 참조)
|
|||
|
|
status: 초기 분석 — Phase 구현 착수 전 기준 문서
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 01. 템플릿 구조 분석
|
|||
|
|
|
|||
|
|
## 1. 디렉토리 구조 (Assets/ 하위)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
E:/EerieVillage/
|
|||
|
|
├── Assets/
|
|||
|
|
│ ├── Audio/ (BGM·SFX 리소스)
|
|||
|
|
│ ├── Character/
|
|||
|
|
│ │ ├── Animations/ (Animator Controller·Clip)
|
|||
|
|
│ │ └── Sprites/ (15종 PNG — 후술 §4)
|
|||
|
|
│ ├── Documentation/ (템플릿 문서)
|
|||
|
|
│ ├── Editor/
|
|||
|
|
│ │ ├── GitAutoSync/ (BT5-Dev C안 자동 sync 구조, 2026-04-23 PD 배치)
|
|||
|
|
│ │ └── PatrolPathEditor.cs (적 순찰 경로 에디터)
|
|||
|
|
│ ├── Environment/
|
|||
|
|
│ │ ├── Sprites/
|
|||
|
|
│ │ └── Tiles/
|
|||
|
|
│ ├── Mod Assets/ (템플릿 모드 예시 — EerieVillage 제거 대상)
|
|||
|
|
│ ├── Prefabs/ (Button · CinemachineConfiner · Enemy · Player · TilePalette · UI Canvas)
|
|||
|
|
│ ├── Rendering/ (URP 관련)
|
|||
|
|
│ ├── Scenes/
|
|||
|
|
│ │ └── SampleScene.unity + SampleSceneSettings.lighting (단일 씬)
|
|||
|
|
│ ├── Scripts/ (36개 C#, 6 폴더 — 후술 §3)
|
|||
|
|
│ ├── Settings/ (URP·Input Actions)
|
|||
|
|
│ ├── TextMesh Pro/
|
|||
|
|
│ ├── Tiles/
|
|||
|
|
│ └── Tutorials/ (템플릿 튜토리얼 리소스)
|
|||
|
|
├── Library/ (.gitignore 대상)
|
|||
|
|
├── Logs/ (.gitignore 대상)
|
|||
|
|
├── Packages/
|
|||
|
|
│ └── manifest.json (Unity 패키지 의존성 — 후술 §2)
|
|||
|
|
├── ProjectSettings/ (InputManager·Physics2D·Graphics 등)
|
|||
|
|
├── Temp/ (.gitignore 대상)
|
|||
|
|
└── UserSettings/ (.gitignore 대상)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 1-1. Scripts 폴더 구조 (네임스페이스 분할 직관적)
|
|||
|
|
|
|||
|
|
| 폴더 | 네임스페이스 | 역할 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `Core/` | `Platformer.Core` | 이벤트 시뮬레이션 엔진 (Simulation·Event·HeapQueue·Fuzzy) |
|
|||
|
|
| `Gameplay/` | `Platformer.Gameplay` | 게임플레이 이벤트 정의 (PlayerSpawn·PlayerDeath·EnemyDeath 등 12종) |
|
|||
|
|
| `Mechanics/` | `Platformer.Mechanics` | 물리·제어·컨트롤러 (PlayerController·EnemyController·Health·KinematicObject 등 13종) |
|
|||
|
|
| `Model/` | `Platformer.Model` | 게임 상태 모델 (PlatformerModel — virtualCamera·player·spawnPoint·jumpModifier) |
|
|||
|
|
| `UI/` | `Platformer.UI` | 메뉴·게임플레이 UI 토글 (MainUIController·MetaGameController) |
|
|||
|
|
| `View/` | — | 시각 효과 (AnimatedTile·ParallaxLayer) |
|
|||
|
|
|
|||
|
|
## 2. Packages/manifest.json — 주요 패키지 14종
|
|||
|
|
|
|||
|
|
| 패키지 | 버전 | 용도·EerieVillage 활용 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `com.unity.cinemachine` | **3.1.5** | 가상 카메라 — 플레이어 follow + 보스룸 고정 전환 (기획 05 §3-2) |
|
|||
|
|
| `com.unity.feature.2d` | 2.0.2 | 2D 툴킷 (Tilemap·SpriteShape·Animation2D) |
|
|||
|
|
| `com.unity.inputsystem` | **1.19.0** | 신 Input System — 마우스 좌클릭 공격 추가 진입점 |
|
|||
|
|
| `com.unity.render-pipelines.universal` | **17.3.0** | URP 렌더링 — 2D 라이팅·Post-processing |
|
|||
|
|
| `com.unity.timeline` | 1.8.12 | 컷씬·보스 연출 여지 |
|
|||
|
|
| `com.unity.ugui` | 2.0.0 | UI Toolkit (Canvas 기반 메뉴) |
|
|||
|
|
| `com.unity.visualscripting` | 1.9.11 | 비주얼 스크립팅 (미사용 — 제거 검토 대상) |
|
|||
|
|
| `com.coplaydev.unity-mcp` | main | **Unity MCP** (BT4 도입 완결) — 에이전트 Unity 직접 편집 |
|
|||
|
|
| `com.unity.test-framework` | 1.6.0 | Test Runner — QA 자동화 기반 |
|
|||
|
|
| `com.unity.feature.development` | 1.0.2 | 개발 도구 (Profiler·Debugger) |
|
|||
|
|
| `com.unity.connect.share`·`learn.iet-framework`·`multiplayer.center` | — | 미사용 — **제거 검토** (빌드 크기 절감) |
|
|||
|
|
|
|||
|
|
## 3. 주요 Scene — SampleScene.unity
|
|||
|
|
|
|||
|
|
- **단일 씬**: 마을·전투 분리 없음 (EerieVillage 코어 루프는 씬 전환 구조 필요 — 개발 03 문서 P1 항목)
|
|||
|
|
- **Scene Hierarchy 계층** (Unity MCP로 추가 실측 가능하나 본 선행 분석에서는 스크립트 참조로 역산):
|
|||
|
|
- `GameController` — `Simulation.Tick()` 호출 + `PlatformerModel` 직렬화 소유
|
|||
|
|
- `PlayerController` — 플레이어 GameObject (Rigidbody2D Kinematic + Collider2D + Animator + SpriteRenderer + AudioSource + Health)
|
|||
|
|
- `CinemachineCamera` (virtualCamera) — PlatformerModel.virtualCamera 참조
|
|||
|
|
- `SpawnPoint` Transform — 리스폰 좌표
|
|||
|
|
- `EnemyController` × N — PatrolPath 순찰
|
|||
|
|
- `VictoryZone`·`DeathZone` 트리거 콜라이더
|
|||
|
|
- UI Canvas (MainUIController·MetaGameController·gamePlayCanvasii 배열)
|
|||
|
|
|
|||
|
|
## 4. Character 스프라이트 리소스 (Assets/Character/Sprites/)
|
|||
|
|
|
|||
|
|
| 캐릭터 | 스프라이트 | 용도 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| **Player 시리즈 (5종)** | PlayerIdle·PlayerRun·PlayerJump·PlayerLand·PlayerHurt·PlayerDeath·PlayerSpawn·PlayerVictory·PlayerTestGirl | 기본 플레이어 애니메이션 + 테스트 대체 스프라이트 |
|
|||
|
|
| **Enemy (4종)** | EnemyIdle·EnemyRun·EnemyHurt·EnemyDeath | 일반 적 상태 4종 |
|
|||
|
|
| **Mr.Alien** | Mr.Alien.png | 템플릿 고유 캐릭터 (EerieVillage 교체 대상 — 조선 퇴마사 스프라이트 신규 필요) |
|
|||
|
|
| **Token** | TokenSpin·TokenCollected | 수집 토큰 (기획 전환 검토 — 영혼·부적 등 재테마화) |
|
|||
|
|
|
|||
|
|
- **해상도·프레임 수 실측 보류**: Unity MCP로 Sprite 확인하여 Phase 2 이상에서 아트 교체 기획 수립 시 검증
|
|||
|
|
- **기획팀 `narrative-designer` Phase 3-B 산출과 결합하여 조선·퇴마 세계관 스프라이트 전량 교체 예정**
|
|||
|
|
|
|||
|
|
## 5. ProjectSettings 주요 설정 (실측 기반 요약)
|
|||
|
|
|
|||
|
|
| 파일 | 확인 결과 |
|
|||
|
|
|---|---|
|
|||
|
|
| `ProjectVersion.txt` | Unity 6000.3.13f1 LTS (PD 지시 일치) |
|
|||
|
|
| `InputManager.asset` | 레거시 Input — 실제는 Input System 신 패키지 사용 (`Settings/` 하위 InputActions asset 추정) |
|
|||
|
|
| `Physics2DSettings.asset` | 2D 중력·레이어 매트릭스 (템플릿 기본값 — Phase 3-B 튠 대상) |
|
|||
|
|
| `URPProjectSettings.asset` | URP 17.3.0 기본 설정 + 2D Lit Shader |
|
|||
|
|
| `QualitySettings.asset` | 모바일 프로파일 미확정 — C11 "자원 효율성" 관점 Phase 2 튠 대상 |
|
|||
|
|
| `TagManager.asset` | 레이어·태그 — Player·Enemy·Ground 등 표준 템플릿 태그 사용 추정 |
|
|||
|
|
| `GraphicsSettings.asset` | URP Asset 참조 |
|
|||
|
|
|
|||
|
|
## 6. 특기 사항 (개발팀 관점)
|
|||
|
|
|
|||
|
|
1. **독자 이벤트 시뮬레이터**: `Simulation.Schedule<T>()` 기반 discrete event 패턴. Unity 표준 `UnityEvent`·Observer 미사용. **EerieVillage 카드 효과·사망 분기·레벨업 이벤트를 이 시스템 위에 얹을 수 있음** (코드 범용성 C11 긍정)
|
|||
|
|
2. **Kinematic 물리**: `KinematicObject.PerformMovement`에서 `body.Cast` + `shellRadius`로 정밀 충돌 처리. 플랫포머 정밀 제어의 표준 패턴 — **EerieVillage 계승 권장**
|
|||
|
|
3. **Health 기본값 1**: 기획 코어 룰 7 "라이프 1"과 이미 정합. 추가 수정 불요. 단 `maxHP=1` 상태에서 **i-frame 로직 부재** → P0 구현 필요 (개발 03 §3-1)
|
|||
|
|
4. **단일 씬 한계**: 마을·전투 분리를 위해 **씬 분할 or 상태 기반 영역 전환** 설계 필수 (개발 03 §2-1)
|
|||
|
|
5. **공격 입력 부재**: InputActions에 `Player/Attack` 액션 신규 정의 필요 (개발 03 §3-1)
|
|||
|
|
|
|||
|
|
## 7. 변경 이력
|
|||
|
|
|
|||
|
|
| 일시 | 변경 | 사유 | 기안 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| 2026-04-23 | v0.1 템플릿 실측 분석 작성 | BT5-Dev 3단계 선행 분석 | 개발팀장 |
|
|||
|
|
|
|||
|
|
## 8. 참조 문서
|
|||
|
|
|
|||
|
|
- **기획**: `프로젝트/EerieVillage/기획/01·02·03·04·05_*.md`
|
|||
|
|
- **개발 후속**: `02_스크립트_분석.md`·`03_게임_제작_준비.md`
|
|||
|
|
- **BT.Framework**: `코어코드/BT.Framework/` (P29-3 활용 검토)
|