Curitor
Editor Tooling · Topic Guide

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

  1. 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).
  2. 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.
  3. Compose the rules

    Round zones, checkpoints, hazards and interactions are all trigger volumes with behaviours on them. See Rounds, Respawn & Checkpoints and Behaviours & Rules.
  4. Name it in the lobby

    Open the generated LevelDefinition and 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.

FieldTypeWhat it does
Template presentbehaviourInstall copies the template file over the level scene, exactly as snapshotted. Your hand-tuning is what ships.
Template absentbehaviourInstall 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.

FieldTypeWhat it does
Carriedin the sceneGeometry, 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 carriedoutside the sceneAnything 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

Multiplayer