the symptom, in your words

"Title / Ident / StartupScene fields that bite new projects"

✓ verified on 26.07.08e
lane 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?? from Sandbox.PackageLoader.LoadAssemblyFromPackage, looks like engine corruption.
  • You're unsure which .sbproj fields matter on day one vs at publish.

▸ CAUSE

.sbproj is the package manifest. Three fields bite early:

  1. Metadata.StartupScene: exactly what Play loads (e.g. "scenes/main.scene").
  2. Org: must be a valid lowercase package ident. An uppercase TODO placeholder breaks engine bootstrap, not just publishing.
  3. Title / Ident: display name vs package identity; Ident becomes part of the public org.package story 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 park TODO_PLACEHOLDER (or any non-ident string) in Org.
  • Point StartupScene at a scene that actually exists under Assets/ (path without Assets/ prefix, as in the example).
  • Pick a stable Ident early; 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.08e: seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord