Skip to main content

Project Structure

GCS ยท Start Here

GCS keeps package code, demo content, preset databases, samples, and user-created content in separate places. Learn the map before you duplicate assets or build your own game content.

For orientation after import, and for deciding where a new card, deck, enemy, status, encounter, background, VFX, or audio asset should live.

GCS is imported under Assets/TinyGiants/GameCardSystem/. Treat that root as package-owned. Read it freely, duplicate demo assets when useful, but keep production content in the custom data root so a package update never overwrites your work.

Assets/
โ”œโ”€โ”€ ๐Ÿ“ TinyGiants/
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ GameCardSystem/ # Package root
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ›ก๏ธ Runtime/ # Runtime engine, data model, battle state machine, GCS.API.cs
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ›ก๏ธ Editor/ # Dashboard, Workbench, Monitor, FlowGraph editor, inspectors
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Demo/ # Shipped playable reference content
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Content/ # Demo assets organized by owner
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Art/ # Shared UI, fonts, materials, shaders, shared VFX/audio
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Cards/ # Card-family art, base assets, card prefabs
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Decks/ # Deck art and deck-owned assets
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Encounters/ # Class backgrounds and encounter UI art
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Intents/ # Intent icons and intent UI prefabs
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Statuses/ # Status icons and status UI prefabs
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ Units/ # Player/enemy artwork and prefabs
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Databases/ # Six Preset*Database assets
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Scenes/ # 12 playable battle scenes
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ Scripts/ # Demo presentation layer: board, hand, HUD, popups, audio
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ Editor/ # Demo-only editor helpers
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ”Œ Integrations/GES/ # Optional GameEventSystem bridge
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“˜ Docs/ # Offline docs index
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“‹ Samples~/CustomNodes/ # Copyable custom-node samples and template
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ Changelog.md
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ LICENSE.txt
โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“„ Readme.txt
โ”‚ โ””โ”€โ”€ ๐Ÿ“ Shared/ # TinyGiants shared runtime/editor utilities
โ””โ”€โ”€ ๐Ÿ’พ TinyGiantsData/GameCardSystem/ # Your project-owned GCS content
โ”œโ”€โ”€ ๐Ÿ“ CardDatabases/
โ”œโ”€โ”€ ๐Ÿ“ DeckDatabases/
โ”œโ”€โ”€ ๐Ÿ“ StatusDatabases/
โ”œโ”€โ”€ ๐Ÿ“ EncounterDatabases/
โ”œโ”€โ”€ ๐Ÿ“ PlayerUnits/
โ””โ”€โ”€ ๐Ÿ“ EnemyUnits/

Runtime/ and Editor/ are implementation folders. Content authoring happens in the Workbench and in project-owned data folders, not by editing package source.


Demo Content Layoutโ€‹

Demo/Content/ is organized by the object that owns the asset, not by asset type. There is no top-level Prefabs/ or Audio/ dump for object-specific assets. A card's artwork lives with that card family; an enemy prefab lives with that enemy family.

FolderContains
Cards/<Type>/Card artwork, card base assets, and card-family assets by card type.
Decks/Deck cover art and deck-owned presentation assets.
Units/Player/<Class>/Player artwork and prefabs by class.
Units/Enemy/<Class>/Enemy artwork and prefabs by class.
Statuses/Status icons, plus status widget prefabs.
Intents/Intent icons, plus intent widget prefabs.
Encounters/<Class>/Per-class encounter backgrounds and encounter-specific UI art.
Art/Only cross-object shared assets: UI sprites, fonts, materials, shaders, shared combat VFX, and shared audio.

The rule of thumb: an asset with one owner goes into that owner's folder; only genuinely shared assets go into Art/. Use the same rule for custom content.


Databases and Scenesโ€‹

Demo/Databases/ holds the six preset databases registered by Initialize System:

PresetCardDatabase PresetDeckDatabase PresetEncounterDatabase
PresetEnemyUnitDatabase PresetPlayerUnitDatabase PresetStatusDatabase

The preset database ScriptableObjects in the Demo/Databases folder

A database is an active content library. An asset can exist on disk and still be invisible to battle if it is not registered in an active database. If a card, status, enemy, or encounter does not appear in a picker, check database membership first.

Demo/Scenes/ contains 12 battle scenes as <Class>/<n>-<Name>.unity, three per class in rising difficulty: normal, elite, and boss. Hunter/1-Fenmoss Hollow.unity is the canonical first scene used by the quick start.


Samples~โ€‹

Samples~/CustomNodes/ contains custom-node reference material: HealIfBelowHalfNode.cs, AddValuesNode.cs, and FlowNodeTemplate.cs.

The trailing ~ makes Unity ignore the folder, so samples do not compile into your project and do not appear in the Project window. Copy a sample into your own runtime assembly, rename it, then edit the copy. See Custom Nodes and Sample Walkthroughs.


Your Content Rootโ€‹

Your production content belongs under:

Assets/TinyGiantsData/GameCardSystem/

This is the folder opened by Quick Access > Custom Data. The editor tracks the actual location, so the root can be moved elsewhere under Assets/ if your project has its own folder conventions. Keeping content here separates your work from package-owned demo content.

Demo assets are references, not workspaces

When a demo card, enemy, status, or encounter is close to what you want, duplicate it into your own database and edit the copy. Editing demo assets in place removes your known-good reference and can be overwritten by package updates.