How-To Guides

Workflow guides for adding and customising game content — new instructions, enemy AI, interactables, and level design.

🗺️
Overview
Quick start, requirements, project structure, singleton persistence chain, and execution flow. The right place to begin.
Quick Start Project Structure Execution Flow Extension Points
🏗️
Create a Level
Build a new level from scratch — LevelInfo asset, scene setup, tile grid, player placement, manager wiring, and goal configuration.
LevelInfo PathTile grid LevelManager Goals
⚔️
Create an Instruction
Add a new player action to the instruction sheet. Covers the full workflow from writing the C# class to wiring the prefab and palette.
PlayerInstruction Tick() override Prefab setup Palette wiring
🧩
Create an Instruction Layout
Build the prefab widget that represents an instruction on the sheet — duplicate, pick the right layout type, configure fields, wire the Action component, and place it in the palette.
InstructionLayout Action component Palette setup Modifier & Sequence
👹
Create an Enemy Instruction
Add a new AI behaviour that runs alongside the player's turn. Follows the same pattern as player instructions with enemy-specific context.
EnemyInstruction EnemyAction Parallel execution Prefab setup
📦
Create an Interactable
Add a new world object the player can interact with, carry, or push — by implementing one or more of the interactable interfaces.
IInteractable ICarryObject IPushable Prefab setup
Tile Traps
Place and configure pressure plates and appearing spikes. Both traps are self-scheduling and run every turn automatically without any extra wiring.
PressurePlate AppearingSpikes Stages pattern Damage timing
🎒
Inventory System
Read and modify items, equipment, and carry state from custom instructions and interactables. Covers both the execution copy and the persistent inventory.
context.inventory TryAddItem / TryUseItem Item & Equipment assets Stats & Effects
🔊
Audio Setup
Configure persistent volume sliders and per-scene background music. Settings survive game restarts without any extra code.
SoundManager MusicManager Volume sliders Save / restore
🖥️
UI Setup
Configure the player and enemy HUD bars, inventory window, notification toasts, and win/options screens. Includes a guide to subclassing Window for custom panels.
PlayerHealthBar InventoryWindow NotificationLayout Window

Setup Guides

Reference guides for configuring the built-in components and systems — player stats, enemy prefabs, data persistence, world map, and scene utilities.

🧍
Player Setup
Configure PlayerHealth, PlayerStamina, and ActiveEffectsController on the player GameObject. Wire health and stamina events to the HUD.
PlayerHealth PlayerStamina ActiveEffectsController HUD wiring
👾
Enemy Setup
Configure EnemyHealth, optional ItemDropper loot, and the four Enemy HUD components on an enemy prefab.
EnemyHealth ItemDropper EnemyHealthBar EnemyActionSequencePanel
💾
Data Systems
Set up DatabaseManager (item lookup) and GameDataManager (level progress, audio settings, discovered equipment). Both are persistent singletons.
DatabaseManager GameDataManager SaveLevel() DiscoveredEquipment
🗺️
World Map
Build the world map scene with WorldMapManager and one LevelMarker per level. Chain markers to form the unlock progression and display star ratings.
WorldMapManager LevelMarker LevelInfoScreen Star ratings
🖥️
UI Screens
Configure the win screen, in-game options menu, and item list window. All extend Window and follow the same open/close pattern.
WinScreenController GameOptionsMenu ItemsListWindow Window base class
🏹
Projectile
Create a projectile prefab and fire it from a ranged player instruction, or attach ShootSuscriber to an enemy for no-code ranged attacks.
Projectile prefab Shoot() ShootSuscriber
Visual FX & Utilities
Drop-in components for breathing animations, hover effects, decorative clouds, UI locking during play, pixel snapping, and Y-based depth sorting.
SpriteExpandAnimation HoveringMouse DisableOnRunning DepthSortingOrder