메인 콘텐츠로 건너뛰기

프로젝트 구조

파일 구조를 이해하는 것은 깨끗한 프로젝트 라이프사이클을 유지하고, 안전한 업그레이드를 보장하며, 효과적인 버전 관리를 수행하는 데 매우 중요합니다.

**게임 이벤트 시스템(Game Event System)**은 엄격한 **"로직과 데이터의 분리 원칙(Logic vs. Data Separation Principle)"**을 준수합니다. 이 아키텍처는 플러그인(코어 로직)을 업데이트하더라도 여러분이 생성한 이벤트, 그래프 또는 생성된 코드(사용자 데이터)가 절대로 덮어씌워지지 않도록 보장합니다.


📂 디렉토리 트리 (Directory Tree)

아래는 표준 계층 구조입니다. 각 폴더의 성격을 나타내기 위해 고유한 아이콘을 사용했습니다:

  • 🛡️ 불변의 코어 (Immutable Core): 수정, 이동 또는 이름을 변경하지 마십시오.
  • 💾 가변 데이터 (Mutable Data): 프로젝트 데이터입니다. 커밋 및 수정이 안전합니다.
  • 🗑️ 삭제 가능 (Disposable): 최적화를 위해 삭제해도 안전합니다.
Assets/
├── 📁 TinyGiants/ # [CORE LOGIC] 불변의 플러그인 루트
│ └── 📁 GameEventSystem/
│ ├── 📁 API/ # 🛡️ 인터페이스 및 퍼블릭 API
│ ├── 📁 Demo/ # 🗑️ 예제 씬 및 에셋 (삭제 가능)
│ ├── 📁 Editor/ # 🛡️ 커스텀 인스펙터 및 윈도우 로직
│ │ └── 📁 Icons/ # 🗑️ UI 텍스처 (1.2MB 미만 빌드를 위해 삭제 가능)
│ ├── 📁 Runtime/ # 🛡️ 코어 엔진 및 이벤트 타입
│ ├── 📄 LICENSE.txt
│ └── 📄 Readme.txt

└── 📁 TinyGiantsData/ # [USER DATA] 생성된 콘텐츠 보호 구역
└── 📁 GameEventSystem/
├── 📁 CodeGen/ # 💾 자동 생성된 C# 클래스
│ ├── 📁 Basic/ # 🛡️ 기본 타입 (필수 항목)
│ └── 📁 Custom/ # 💾 커스텀 타입 (자동 재생성됨)
├── 📁 Database/ # 💾 이벤트 데이터베이스 에셋 (.asset)
└── 📁 FlowGraph/ # 💾 시각적 플로우 그래프 에셋 (.asset)
아키텍처 참고

TinyGiants는 도구 그 자체(망치)를 포함합니다. TinyGiantsData는 그 도구로 여러분이 지은 결과물(집)을 포함합니다.


⛔ 중요: "Plugins" 폴더 주의사항

"PLUGINS"로 이동 금지

TinyGiants 또는 TinyGiantsData 폴더를 표준 Assets/Plugins/ 디렉토리로 절대로 이동해서는 안 됩니다.

왜 이토록 중요한가요?

  1. 컴파일 순서 (스크립팅 단계): 유니티는 일반 게임 스크립트(Assembly-CSharp)보다 Plugins 폴더를 먼저 컴파일합니다.
    • 이 플러그인은 이벤트를 생성하기 위해 여러분의 커스텀 클래스(예: PlayerStats, InventoryItem)를 참조해야 합니다.
    • 플러그인이 Plugins에 위치하면 여러분의 게임플레이 코드를 인식할 수 없게 되어, "Type Not Found(타입을 찾을 수 없음)" 오류가 발생합니다.
  2. 상대 경로 의존성: 자동화된 코드 생성기와 데이터베이스 매니저는 에셋을 찾기 위해 특정 상대 경로에 의존합니다. 이 구조를 깨뜨리면 "Hub"에서 여러분의 데이터베이스를 추적하지 못할 수 있습니다.
  3. 에셋 보호 메커니즘: 플러그인에는 백그라운드 AssetProtector 서비스가 포함되어 있습니다. 이 폴더들이 Plugins로 이동되는 것이 감지되면, 프로젝트 손상을 방지하기 위해 경고를 보내거나 해당 작업을 차단하려고 시도합니다.

💾 버전 관리 (Git/SVN) 전략

소스 제어(Source Control)를 사용하는 팀을 위한 권장 설정은 다음과 같습니다:

폴더 경로전략이유
TinyGiants/커밋프로젝트 실행에 필요한 코어 플러그인 코드가 포함되어 있습니다.
TinyGiantsData/.../Database커밋실제 이벤트 에셋들이 포함되어 있습니다. 매우 중요한 데이터입니다.
TinyGiantsData/.../FlowGraph커밋시각적 로직 그래프가 포함되어 있습니다. 매우 중요한 데이터입니다.
TinyGiantsData/.../CodeGen커밋권장. 다시 생성할 수도 있지만, 커밋해 두면 다른 팀원들이 위자드를 실행할 필요 없이 프로젝트가 즉시 컴파일됩니다.

🧹 최적화 가이드: 배포 전략

게임 이벤트 시스템은 모듈식입니다. 프로젝트 단계에 따라 빌드 크기를 줄이기 위해 불필요한 부분을 제거할 수 있습니다.

배포 계층 (Deployment Tiers)

아래 표를 참고하여 무엇을 남길지 결정하십시오:

계층삭제할 폴더절약 크기결과
개발(Dev)모두 유지0 MB데모 및 고해상도 UI를 포함한 모든 기능을 사용합니다.
프로덕션TinyGiants/GameEventSystem/Demo/~10 MB예제를 제거합니다. 기초를 익힌 후에는 모든 프로젝트에서 안전하게 삭제할 수 있습니다.
미니멀리스트.../Editor/Icons/~4 MBUI 품질 저하. 커텀 아이콘이 사라지고 윈도우가 유니티 기본 스타일을 사용합니다. 로직 기능은 100% 정상 작동합니다.

📉 극한의 압축 (< 1.2 MB)

인스턴트 게임과 같은 초경량 플랫폼용으로 빌드하는 경우 미니멀리스트 계층을 적용할 수 있습니다.

  1. Demo 폴더를 삭제합니다.
  2. Icons 폴더를 삭제합니다.
  3. CodeGen/Custom 폴더에 실제로 사용하는 이벤트 타입만 포함되어 있는지 확인합니다. **정리 도구**를 사용하여 사용하지 않는 생성된 클래스들을 제거할 수 있습니다.

대부분의 PC/모바일 프로젝트의 경우 **레벨 1(Demo 삭제)**만으로도 충분합니다. 디자이너들의 쾌적한 작업 환경을 위해 Icons 폴더는 유지하는 것을 권장합니다.