A sub-scene is a normal scene file marked so it can be embedded inside another scene as a Scene node, rather than only ever being loaded full-screen. Common uses are a settings panel, a reusable UI overlay, or a character built from several layered parts. Mark a scene as one from its own root inspector in the Scene Editor; doing so is what makes it show up in a Scene node's asset picker at all.
How it mounts
A Scene node compiles to a placeholder element sized and positioned like any other node. At runtime, the referenced sub-scene is loaded and rendered independently, then its rendered children are moved directly into that placeholder, the sub-scene's own root wrapper is discarded, and the placeholder becomes its effective parent. See Scenes for the exact onEnter/onStart ordering this produces for nested instances.
Sizing
A Scene node's box isn't manually resizable, its width and height are always derived from the sub-scene's own content, measured as the furthest extent any of its top-level (and nested) children reach from that sub-scene's own local (0, 0).
Scene Variables versus the Variable Store
Scene Variables are a separate mechanism from the project-wide Variable Store. A scene declares its own Scene Variables in its root inspector, using the same editor as the Variables Manager: a name, a type (String, Number, Boolean, File, Array or Object) and a default value. Each instance embedding that scene can independently override any of them without touching the sub-scene file itself.
In an instance's inspector you can change the values, including array items and object fields, but the types and fields come from the sub-scene. Reset puts a variable back to the sub-scene's default. If the sub-scene later changes a variable's type or fields, an existing override is marked as no longer matching, and it keeps being used until you reset it.
Overrides are applied to the sub-scene's this.vars before it mounts, so onEnter() and onStart() already see the overridden values. Unlike Store variables, Scene Variables aren't global and aren't included in a save file, they only exist as long as that particular scene instance is mounted, scoped to it and it alone. See Scene Node for the override fields themselves, and Coding for this.vars.
Cycle prevention
Picking a sub-scene that would embed itself, either directly or through a chain of other sub-scenes, is blocked with an error rather than silently allowed or left to fail at runtime.
Extracting an existing scene
Most sub-scenes start life the other way around: select a subtree of nodes in a normal scene and use Convert to Scene from the right-click menu. That extracts the selection into its own new sub-scene file, sized to match, and replaces the original nodes in place with a Scene node pointing at it, the on-screen result looks identical immediately after converting.