Unity side: AIApocalypse.Demo namespace foundation for the two demo modes that ship pre-launch (Player Demo for the Steam demo listing, Claude Demo for footage capture). DemoBootstrap parses CLI args before the first scene loads and routes to the right mode.

Build defines:

  • DEMO_BUILD — required for any demo code to compile in. Strip from retail.
  • PLAYER_DEMO_BUILD — forces player-demo mode without the CLI flag; used by the Steam demo build target.
  • CLAUDE_DEMO_BUILD — required for —claude-demo to be honored. Strip from public demo build so footage capture can never be reached by a player.

DemoFeatureFlags is the single place gameplay code asks about demo behavior — RestrictToAct1, LockHigherDifficulties, etc. — so the rest of the codebase doesn’t sprinkle if (isDemo) checks.

Tools side: generate_trailer_music.py uses ElevenLabs Music API to produce 3 variations of a 60s Doom Eternal-style techno-metal track for the simple gameplay trailer. Already run once; outputs at tools/test_output/music/trailer/.

Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]


Commit 537debb by astafford8488.