7.9 KiB
7.9 KiB
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 참조SpawnPointTransform — 리스폰 좌표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-designerPhase 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. 특기 사항 (개발팀 관점)
- 독자 이벤트 시뮬레이터:
Simulation.Schedule<T>()기반 discrete event 패턴. Unity 표준UnityEvent·Observer 미사용. EerieVillage 카드 효과·사망 분기·레벨업 이벤트를 이 시스템 위에 얹을 수 있음 (코드 범용성 C11 긍정) - Kinematic 물리:
KinematicObject.PerformMovement에서body.Cast+shellRadius로 정밀 충돌 처리. 플랫포머 정밀 제어의 표준 패턴 — EerieVillage 계승 권장 - Health 기본값 1: 기획 코어 룰 7 "라이프 1"과 이미 정합. 추가 수정 불요. 단
maxHP=1상태에서 i-frame 로직 부재 → P0 구현 필요 (개발 03 §3-1) - 단일 씬 한계: 마을·전투 분리를 위해 씬 분할 or 상태 기반 영역 전환 설계 필수 (개발 03 §2-1)
- 공격 입력 부재: 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 활용 검토)