the symptom, in your words
"Title / Ident / StartupScene fields that bite new projects"
✓ verified on engine 26.07lane: Getting set upposted
▸ SYMPTOM
- Play loads the wrong scene (or nothing useful).
- Editor fails to boot with something like
File doesn't exist? Maybe a case sensitivity issue??fromSandbox.PackageLoader.LoadAssemblyFromPackage— looks like engine corruption. - You're unsure which
.sbprojfields matter on day one vs at publish.
▸ CAUSE
.sbproj is the package manifest. Three fields bite early:
Metadata.StartupScene— exactly what Play loads (e.g."scenes/main.scene").Org— must be a valid lowercase package ident. An uppercase TODO placeholder breaks engine bootstrap, not just publishing.Title/Ident— display name vs package identity; Ident becomes part of the publicorg.packagestory later.
Also load-bearing for architecture: TickRate: 50 (fixed update 50 Hz), and keep GameNetworkType: "Multiplayer" even for single-player so networking stays open.
▸ FIX
snippet
{
"Title": "YourGame",
"Type": "game",
"Org": "local",
"Ident": "yourgame",
"Schema": 1,
"Metadata": {
"MaxPlayers": 64,
"MinPlayers": 1,
"TickRate": 50,
"GameNetworkType": "Multiplayer",
"StartupScene": "scenes/main.scene"
}
}Rules:
- Dev: keep
"Org": "local"until a real org exists. Document publish TODOs in a doc — never parkTODO_PLACEHOLDER(or any non-ident string) inOrg. - Point
StartupSceneat a scene that actually exists underAssets/(path withoutAssets/prefix, as in the example). - Pick a stable
Identearly; treat first public publish naming carefully — see org-ident-pick-early.
▸ WHY IT WORKS
The editor mounts your project as a package using Org/Ident before your game code runs. An invalid Org fails assembly load at startup. StartupScene is the only Play entrypoint the manifest declares — changing scenes in the asset browser without updating this field leaves Play on the old path.
✓
Verified on engine 26.07 — seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?
related gotchas
Pick org and ident early for sbox.game
Ident is org.package — two lowercase segments; keep Org local until real; never put TODO placeholders in Org or the editor won't boot.
Getting set up: new project skeleton
.sbproj + Assets/Code/ProjectSettings/tools layout, 4-object scene + Bootstrap, dotnet build before anything else.
Minimal scene: Sun, Skybox, Camera, Bootstrap
Scene holds four GameObjects; Bootstrap OnStart builds the world in code — hotloads better, no scene/code drift.
First successful Play: what to verify after the skeleton
Folders → sbproj → Assembly.cs → 4-object scene → green dotnet build → tagged logs on Play — then optional art tools.