BurningTimesAi/프로젝트/EerieVillage/개발/01_템플릿_구조_분석.md

7.9 KiB
Raw Permalink Blame History

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로 추가 실측 가능하나 본 선행 분석에서는 스크립트 참조로 역산):
    • GameControllerSimulation.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 활용 검토)