Quick Start

  1. Open Assets/Scenes/GameMapScene.unity
  2. Press Play in the Unity Editor
  3. Select a level from the world map to enter it
  4. Drag instructions from the palette onto the instruction sheet
  5. Click Play in the in-game UI to execute the sequence
  6. Reach the exit tile to complete the level

Requirements

RequirementVersion
Unity Editor6000.3.6f1 or later
Render PipelineUniversal Render Pipeline (URP) 17.3+
2D Feature Packcom.unity.feature.2d 2.0.2+
PlatformAny platform supported by Unity URP

Project Structure

FolderContents
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.

ManagerExecution OrderResponsibility
GameDataManager−300Loads save data from disk on Awake. All other systems read from it.
SoundManager−100Reads saved audio settings and applies them to the AudioMixer.
MusicManagerdefaultPlays 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 extendBase classGuide
New player action in the instruction sheetPlayerInstructionCreate an Instruction
Instruction that wraps and modifies anotherInstructionModifierCreate an Instruction
Instruction that holds multiple childrenInstructionSequenceCreate an Instruction
New enemy behaviourEnemyInstructionCreate an Enemy Instruction
Volume control sliderGameOptionsMenu_SoundSliderAudio Setup
💡
Namespace All scripts use the LoopAdventure namespace. Include using LoopAdventure; at the top of any new script that references engine classes.