---
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 활용 검토)
