Table of Contents

03. Project Structure

이 문서의 목표

Framework 기준 권장 프로젝트(Game) 구조를 이해한다.

왜 필요한가

Game 코드와 Framework 코드가 섞이면 업그레이드 시 충돌하고, 의존 방향이 깨지기 쉽다.

언제 사용하는가

새 프로젝트를 시작하거나 기존 프로젝트에 Framework를 도입할 때.

권장 구조

Assets/
  Game/
    Scripts/
    UI/
    Characters/
    Data/
    Config/
    Audio/
    Effects/
    Scenes/
    Addressables/
  _Framework/
    Runtime/
    Editor/
    Samples/

Game 코드는 Framework의 System/Facade만 참조한다 (Register/Unregister/TryGet/Enable/Disable 같은 내부 API를 Gameplay 코드에 노출하지 않는다).

실제 프로젝트에서 사용

  • Game/Controllers (금지 네이밍: Game/Systems) 에서 Framework System을 주입받아 사용
  • Game/Data는 저장/직렬화 대상 데이터(MemoryPack) 위치
  • Game/Config는 Addressables Config 에셋 위치

Best Practice

폴더명은 목적이 명확해야 한다. Shared/, Misc/, Utility/ 같은 모호한 폴더명은 금지.

자주 하는 실수

  • Game 코드에서 Framework Runtime 내부 타입 직접 수정
  • XxxManager, XxxHelper 같은 금지 네이밍 사용 (XxxController/XxxService, XxxUtils 권장)

실습 과제

  1. 위 구조대로 빈 폴더를 생성해본다.
  2. 임의의 Controller 클래스 하나를 Game/Controllers에 만들어 System을 주입받아본다.

이전 문서 / 다음 문서

이전: 02_Project_Setup.md 다음: 04_Dependency_Injection.md

관련 Sample

전체 Sample 폴더 구조 (Assets/_Framework/Samples/*)가 참고 예시다.

관련 API

없음 (구조 문서)