Manual
Overview
Quick start, project structure, requirements, and how the systems connect to each other.
Quick Start
- Open
Assets/Scenes/GameMapScene.unity - Press Play in the Unity Editor
- Select a level from the world map to enter it
- Drag instructions from the palette onto the instruction sheet
- Click Play in the in-game UI to execute the sequence
- Reach the exit tile to complete the level
Requirements
| Requirement | Version |
|---|---|
| Unity Editor | 6000.3.6f1 or later |
| Render Pipeline | Universal Render Pipeline (URP) 17.3+ |
| 2D Feature Pack | com.unity.feature.2d 2.0.2+ |
| Platform | Any platform supported by Unity URP |
Project Structure
| Folder | Contents |
|---|---|
Assets/Documentation/ | This documentation site and legacy .doc guides |
Assets/Prefabs/ | 70+ ready-to-use prefabs — enemies, interactables, instructions, UI |
Assets/Animations/ | Character and UI animation controllers |
Assets/Scenes/ | 5 tutorial levels and world map scene |
Assets/Scriptable Objects/ | Item, equipment, and level databases |
Assets/Scripts/ | 147 C# scripts organized by system |
Assets/Sounds/ | Kenney RPG and UI audio packs (CC0) |
Assets/Sprites/ | Character, tile, and UI art |
Singleton Persistence Chain
Three managers use DontDestroyOnLoad and must be present in the first scene that loads. They persist for the entire game session.
| Manager | Execution Order | Responsibility |
|---|---|---|
GameDataManager | −300 | Loads save data from disk on Awake. All other systems read from it. |
SoundManager | −100 | Reads saved audio settings and applies them to the AudioMixer. |
MusicManager | default | Plays and crossfades background music across scene transitions. |
Execution Flow
What happens when the player presses Play in the instruction sheet:
Player arranges instructions in InstructionSheet
↓ Play button pressed
LevelManager.Play() creates ExecutionContext + InstructionRunner
↓ for each instruction in the sheet
Instruction.Run(context) → fires OnInstructionStart → calls Tick(context)
↓ simultaneously, each turn
TaskSchedule runs each enemy's action in parallel with the player's turn
↓ on success
LevelManager.OnAnySuccessfulExit fires → saves progress to disk
What Can You Extend?
| What to extend | Base class | Guide |
|---|---|---|
| New player action in the instruction sheet | PlayerInstruction | Create an Instruction |
| Instruction that wraps and modifies another | InstructionModifier | Create an Instruction |
| Instruction that holds multiple children | InstructionSequence | Create an Instruction |
| New enemy behaviour | EnemyInstruction | Create an Enemy Instruction |
| Volume control slider | GameOptionsMenu_SoundSlider | Audio Setup |
Namespace
All scripts use the
LoopAdventure namespace. Include using LoopAdventure; at the top of any new script that references engine classes.