Demo Asset Layout
Demo content is organized by owning object, not by asset kind: card art stays with the card, and an enemy prefab stays with the enemy
Root foldersโ
๐ฆ Demo/Content/ # All shipped presentation assets, grouped by owner
โโโ ๐จ Art/ # Cross-object shared assets only
โโโ ๐ Cards/ # Card-family frames, prefabs, and per-card artwork
โโโ ๐๏ธ Decks/ # Starting/reward deck cover icons for each class
โโโ ๐ Encounters/ # Class backgrounds, parallax layers, and encounter UI
โโโ ๐ฏ Intents/ # Enemy-intent icons and the widgets that display them
โโโ โจ Statuses/ # Status icons, status widgets, and status-owned VFX
โโโ ๐ง Units/ # Player/enemy artwork, prefabs, and shared unit widgets
Cardsโ
๐ Content/Cards/ # Five card families plus their one shared glow sprite
โโโ โ๏ธ Basic/ # Basic-family frame, prefab, and card artwork
โ โโโ ๐ผ๏ธ Artwork/ # Art for Basic cards such as Strike and Defend
โ โโโ ๐จ Basic.png # Basic card-frame sprite
โ โโโ ๐งฉ Basic.prefab # Basic card-view prefab
โโโ ๐ฅ Burst/ # Burst-family frame, prefab, and artwork
โโโ ๐ฏ๏ธ Curse/ # Curse-family frame, prefab, and artwork
โโโ ๐ ๏ธ Skill/ # Skill-family frame, prefab, and artwork
โโโ ๐ค Support/ # Support-family frame, prefab, and artwork
โโโ โจ CardGlow.png # Glow sprite shared by every card family
The five folders are the card template families; each one owns its frame sprite, its card prefab, and an Artwork/ folder holding the art of every card rendered with that frame. CardGlow.png sits at the Cards/ root because every card shares it
If a single card later gets bespoke VFX, audio, or animation, those assets go under the card family that uses them, in a VFX/, Audio/, or Animation/ subfolder; A kind-based bucket such as Content/VFX/Cards/ would separate the assets from their owner and should be avoided
Unitsโ
๐ง Content/Units/ # Unit-owned art/prefabs plus unit-wide shared assets
โโโ ๐น Enemy/ # Enemy folders grouped first by class, then by unit
โ โโโ ๐น Enemy_Hunter/ # Hunter enemy roster
โ โ โโโ ๐ Enemy_PlagueStalker_Normal/ # Normal enemy artwork and prefab
โ โ โโโ ๐ Enemy_SporeBrute_Elite/ # Elite enemy artwork and prefab
โ โ โโโ ๐ Enemy_MireReaper_Boss/ # Boss artwork and prefab
โ โ โโโ ๐ฑ Enemy_BogPolyp_Summon/ # Summoned-unit artwork and prefab
โ โโโ ๐ช Enemy_Mage/ # Mage enemies, each in its own tier-suffixed folder
โ โโโ โจ Enemy_Priest/ # Priest enemies, each in its own tier-suffixed folder
โ โโโ โ๏ธ Enemy_Warrior/ # Warrior enemies, each in its own tier-suffixed folder
โโโ ๐ฆธ Player/ # Player-unit assets grouped by class
โ โโโ ๐น Hunter/ # Avatar, full-body art, and player prefab
โ โโโ ๐ช Mage/ # Avatar, full-body art, and player prefab
โ โโโ โจ Priest/ # Avatar, full-body art, and player prefab
โ โโโ โ๏ธ Warrior/ # Avatar, full-body art, and player prefab
โ โโโ ๐ Shine.png # Highlight sprite shared by player units
โโโ ๐งฉ Prefabs/ # Unit-wide widgets such as HpWidget.prefab
โโโ ๐ Shadow.png # Ground shadow shared by every unit
Each enemy gets its own folder named Enemy_<Name>_<Tier> inside its class folder, holding that enemy's art and prefab side by side; player classes each own one folder with the avatar, the full-body art, and the unit prefab; widgets shared by every unit, such as the HP bar, live in Units/Prefabs/
Encountersโ
๐ Content/Encounters/ # Presentation assets owned by each encounter class
โโโ ๐น Hunter/ # Hunter encounter presentation
โ โโโ ๐ผ๏ธ Background.png # Full-screen class background
โ โโโ ๐๏ธ Layer/ # Foreground/background parallax layers
โ โโโ ๐งญ UI/ # Hunter-specific encounter UI art
โโโ ๐ช Mage/ # Mage background, parallax layers, and UI art
โโโ โจ Priest/ # Priest background, parallax layers, and UI art
โโโ โ๏ธ Warrior/ # Warrior background, parallax layers, and UI art
Encounter backgrounds and their parallax layers belong to the class folder; the scene files themselves are not content; they live under Demo/Scenes/<Class>/
Statuses and intentsโ
โจ Content/Statuses/ # Status-owned icons, widgets, and presentation effects
โโโ ๐งฉ Prefabs/ # StatusWidget.prefab and StatusIconEntry.prefab
โโโ ๐ซ VFX/ # 25 status apply/expire effect prefabs
โโโ ๐ผ๏ธ Status_<Name>.png # 30 status icons selected in Workbench
๐ฏ Content/Intents/ # Assets used to telegraph enemy actions
โโโ ๐งฉ Prefabs/ # IntentWidget.prefab and IntentEntry.prefab
โโโ ๐ผ๏ธ Intent_<Kind>.png # Eight icons: Attack through Unknown
Each status definition points at its icon through the Icon field you set in Workbench Status mode; the statuses with a signature visual keep those effect prefabs in Statuses/VFX/, and their apply / expire presentation is configured directly on the status FlowGraph with Status Apply FX and Status Expire FX nodes; the intent icons match the intent kinds enemies telegraph above their heads, and the two Prefabs/ folders hold the widgets the demo battle UI uses to display both
Shared art onlyโ
Content/Art/ is reserved for assets used by multiple owning objects:
๐จ Content/Art/ # Shared presentation infrastructure used across owners
โโโ ๐ Audio/ # Mixer, BGM, ambience, gameplay SFX, UI, stingers, and voices
โโโ ๐ค Fonts/ # Runtime fonts and TextMesh Pro font assets
โโโ ๐งช Materials/ # Shared UI, environment, and VFX materials
โโโ ๐งฉ Prefabs/ # Cross-object widgets and reusable presentation prefabs
โโโ ๐ฆ Resources/ # TinyGiants assets loaded through Unity Resources
โโโ ๐งฌ Shaders/ # Shared UI, sprite, environment, and particle shaders
โโโ ๐ผ๏ธ Sprites/ # Shared cursor, UI, and VFX textures
โโโ ๐ฅ VFX/ # Shared combat and class-ambience effect prefabs
The audio tree is the clearest example of a legitimate shared asset: one mixer and category folders (BGM, ambience, card sounds, combat hits, intent telegraphs, status clips, stingers, UI, enemy voices) that every scene routes through; A single card's signature sound would not belong here; it would go under that card's family folder
Place an object's private assets directly under that owner and reserve Art/ for content used by more than one owner; deciding the owner first avoids touching unrelated references when assets move later
Placement rules for audio, VFX, and animationโ
When a production pass adds final presentation assets, the ownership rule decides the destination:
| The asset belongs to | Put it under |
|---|---|
| One card family | Content/Cards/<Family>/VFX/ (or Audio/, Animation/) |
| One enemy | its Content/Units/Enemy/Enemy_<Class>/Enemy_<Name>_<Tier>/ folder |
| One player class | Content/Units/Player/<Class>/VFX/ (or Audio/, Animation/) |
| One encounter class | Content/Encounters/<Class>/VFX/ (or Audio/, Animation/) |
| Many unrelated objects | Content/Art/VFX/ (or Audio/, Animations/) |
The per-object subfolders are created on demand, the first time such an asset exists; an empty Audio/ folder under every card family would be noise
Applying the rule to your projectโ
The layout is mandatory for demo content and recommended for yours; to mirror it:
- Decide which object owns the asset before importing it
- Put the asset in that object's folder, creating the subfolder if needed
- Use a shared folder only when more than one object owns or uses the asset
- Keep databases separate from presentation assets
- Keep demo content and production content in separate roots, so a demo cleanup never touches your game