Project Structure
How the plugin lays out its folders, why the plugin code and your data stay separate, and which folders are safe to commit, move, or delete. Read this before reorganizing anything under Assets.
For anyone setting up version control, planning an upgrade, or trimming build size on a GES project.Knowing the file layout keeps the project lifecycle clean, makes upgrades safe, and lets you manage version control without surprises.
The Game Event System follows a strict Logic vs. Data separation principle. Updating the plugin (core logic) never overwrites the events, graphs, or generated code you create (user data).
The Directory Treeβ
Below is the standard hierarchy. Each icon marks the nature of the folder:
- π‘οΈ Immutable Core: Never modify, move, or rename.
- πΎ Mutable Data: Your project data. Safe to commit, safe to modify.
- ποΈ Disposable: Safe to delete for optimization.
Assets/
βββ π TinyGiants/ # [PLUGIN] Everything the plugin ships with
β βββ π GameEventSystem/ # [PLUGIN ROOT] The plugin root
β βββ π API/ # π‘οΈ Interfaces & Public APIs
β βββ π Data/ # [BUILT-IN DATA] Ships with the plugin
β β βββ π CodeGen/ # π‘οΈ Built-in generated classes
β β β βββ π Events/
β β β β βββ π Basic/ # π‘οΈ Primitive Types (Required)
β β β βββ π Components/ # Bridge Components (Raiser / Receiver)
β β β βββ π Basic/ # π‘οΈ Primitive Types (Required)
β β βββ π Database/ # πΎ Default Event Database Assets (.asset)
β β βββ π FlowGraph/ # πΎ Default Visual Flow Graphs (.asset)
β βββ π Demo/ # ποΈ Example Scenes & Assets (Safe to delete)
β βββ π Editor/ # π‘οΈ Custom Inspectors & Window Logic
β β βββ π Icons/ # ποΈ UI Textures (Delete for <1.2MB builds)
β βββ π Runtime/ # π‘οΈ Core Engine & Event Types
β βββ π Changelog.txt
β βββ π LICENSE.txt
β βββ π Readme.txt
βββ π TinyGiantsData/ # [USER DATA] Created on first generation
βββ π GameEventSystem/
βββ π CodeGen/ # πΎ Your generated event classes & bridges
βββ π Database/ # πΎ Your Event Database Assets (.asset)
βββ π FlowGraph/ # πΎ Your Visual Flow Graphs (.asset)
TinyGiants/GameEventSystem contains the core logic β the immutable plugin code plus the built-in Basic types (The Hammer).
TinyGiantsData/GameEventSystem contains what you build with it β your custom event classes, bridge components, databases, and flow graphs (The House). It appears the first time you generate content, and you can move it anywhere under Assets/ β the plugin re-discovers it automatically by asset GUID.
Critical: The "Plugins" Folder Warningβ
You MUST NOT move the TinyGiants folder into the standard Assets/Plugins/ directory.
Why is this critical?β
- Compilation Order (Scripting Phase):
Unity compiles the Plugins folder before your standard game scripts (Assembly-CSharp).
- The plugin needs to reference your custom classes (e.g., PlayerStats, InventoryItem) to generate events for them.
- If the plugin sits in Plugins, it cannot see your gameplay code, leading to "Type Not Found" errors.
- Relative Path Dependencies: The automated Code Generator and Database Manager rely on specific relative paths to locate assets. Breaking this structure may cause the "Hub" to lose track of your databases.
- Asset Protection Mechanism: The plugin includes a background AssetProtector service. If it detects these folders being moved to Plugins, it will attempt to warn you or block the operation to prevent project corruption.
Version Control (Git/SVN) Strategyβ
For teams working with Source Control, here is the recommended configuration:
| Folder Path | Strategy | Reasoning |
|---|---|---|
| TinyGiants/ | Commit | Contains the core plugin code required for the project to run. |
| TinyGiantsData/.../Database | Commit | Contains your actual Event Assets. Critical data. |
| TinyGiantsData/.../FlowGraph | Commit | Contains your visual logic graphs. Critical data. |
| TinyGiantsData/.../CodeGen | Commit | Recommended. While these can be regenerated, committing them ensures the project compiles immediately for other team members without needing to run the Wizard first. |
Optimization Guide: Deployment Strategyβ
The Game Event System is modular. Depending on your project stage, you can strip it down to reduce build size.
Deployment Tiersβ
Use this table to decide what to keep:
| Tier | Folder to Delete | Size Savings | Consequence |
|---|---|---|---|
| Development | Keep Everything | 0 MB | Full experience with Demos and high-res UI. |
| Production | TinyGiants/GameEventSystem/Demo/ | ~10 MB | Removes examples. Safe for all projects once you know the basics. |
| Minimalist | .../Editor/Icons/ | ~4 MB | UI degrades. Custom icons disappear; Windows use default Unity styling. Logic remains 100% functional. |
Extreme Compression (< 1.2 MB)β
If you are building for ultra-lightweight platforms (e.g., Instant Games), you can achieve the Minimalist tier.
- Delete the Demo folder.
- Delete the Icons folder.
- Ensure your TinyGiantsData/GameEventSystem/CodeGen folder only contains event types you actually use. You can use the Cleanup Tools to remove unused generated classes.
For most PC/Mobile projects, Level 1 (Deleting Demo) is sufficient. I recommend keeping the Icons folder to maintain a pleasant workflow for your designers.