Level Authoring & Templates
A level is an ordinary Unity scene you sculpt by hand. Saving it into one folder is the entire registration step — the catalog, the lobby list and Build Settings all follow. The one thing you must know is how to snapshot your work so a reinstall cannot undo it.
The folder is the data-entry UI
Every .unity scene under SceneFlow/Levels/ automatically gets a LevelDefinition and a catalog entry. Adding a level is saving a scene into that folder. The scan runs during Install and on asset import, so a scene you drop in shows up in the lobby without opening the Setup Window at all.
The catalog itself lives in a Resources folder and is loaded by name, so nothing in the lobby needs a reference wired to it.
Where your levels live
The scanner watches a list of folders, not one hardcoded path. The LevelCatalog asset ships two defaults: SceneFlow/Levels (the kit's own) and Assets/Levels (a conventional folder for yours). A scene in either one registers identically — a LevelDefinition, a catalog entry, and a Build Settings row — so your own levels never have to live inside the kit's folder.
Add or remove folders from the Setup Window, in the Level scan folders box just under the installation manifest: type a project-relative path, press Add, then Rescan Now. The list is additive-only the same way the catalog itself is — a folder you remove stays removed through the next Install or Rescan.
Authoring a level
Save the scene into a scanned folder
SceneFlow/Levels/by default, or your own folder once it is added to the list above. That is the registration — the catalog picks it up on import (inside the kit's own folder) or on the next Rescan (everywhere else).Add a LevelSpawnPoints object
Give it a child transform per player position. Children are collected automatically, so placing empties is enough — and the level's player capacity is derived from how many you placed rather than being a number somebody forgets to update.Compose the rules
Round zones, checkpoints, hazards and interactions are all trigger volumes with behaviours on them. See Rounds, Respawn & Checkpoints and Behaviours & Rules.Name it in the lobby
Open the generatedLevelDefinitionand set a display name and a thumbnail. Those edits survive every future rescan.
Templates: why they exist
The kit ships stock levels — Playground and Race — and the installer can recreate them. That creates a genuine conflict: a scene tuned by hand in the editor would be destroyed by code that regenerates it.
A template is the answer. It is a snapshot of a level scene, stored outside the Levels/ folder so the catalog scanner never lists it as a playable level. When a template exists, the installer copies it verbatim rather than rebuilding the scene procedurally.
| Field | Type | What it does |
|---|---|---|
Template present | behaviour | Install copies the template file over the level scene, exactly as snapshotted. Your hand-tuning is what ships. |
Template absent | behaviour | Install builds the level procedurally from code. Deleting a template is how you deliberately get the generated layout back. |
The two buttons live in the Setup Window's advanced foldout: Update Playground Template From Level Scene and Update Race Template From Level Scene. Each one saves any modified scenes, copies the level scene file over its template, and tells you that future installs will now reproduce exactly this state.
Tune, snapshot, then regenerate — never the other order
A useful habit: treat "snapshot the template" the way you treat "commit". It is the point at which your tuning stops being something the tooling can overwrite.
What a template does and does not carry
Because it is a file copy of the scene, a template carries everything in that scene file — objects, transforms, components, serialized references, composed behaviour lists — and nothing that lives anywhere else.
| Field | Type | What it does |
|---|---|---|
Carried | in the scene | Geometry, spawn points, round zones, checkpoints, trigger volumes and their composed condition/instruction lists, lighting settings, and every serialized reference between objects in the scene. |
Not carried | outside the scene | Anything held in assets rather than the scene — level definitions, movement configs, item and stat definitions, prefab edits. Those are not overwritten by an install either, so they do not need snapshotting. |
Generated levels are a different thing
Alongside hand-authored levels, the map generator builds seed-deterministic courses at runtime. The lobby offers both from one shared selection, so a player does not need to know which kind they picked.
The two approaches answer different questions — an authored level is a specific experience you designed; a generated one is a fresh course every round. See Generated Maps for extending the tile catalog with your own prefabs.
SceneFlow/
Levels/ <- every .unity here becomes a level, automatically
Playground.unity
Race.unity
Templates/ <- snapshots; NOT scanned as levels
Playground.unity
Race.unity
Resources/
LevelCatalog.asset <- loaded by name, additively maintained; also
holds the scanned folder list (Setup Window)
Assets/Levels/ <- scanned by default too -- your own levels go here
YourLevel.unity