- marathonctl now supports spawn/delete entity commands
- Fixed session state bug (was transitioning to Left every 5s)
- Fixed entity broadcast to detect Added<NetworkedEntity>
- Added AppCommandQueue pattern for app-level control commands
References: #131, #132
Added --db-path and --control-socket arguments to app binary to enable
running multiple instances simultaneously.
Updated marathonctl to use clap with --socket argument for targeting
different instances.
Enables multi-client testing with isolated databases and control sockets.
Refs #131, #132
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
Implemented headless mode using MinimalPlugins and ScheduleRunnerPlugin
to enable running the app without rendering, controlled via Unix socket.
Changes:
- Added conditional compilation based on 'headless' feature flag
- Use MinimalPlugins with 60 FPS ScheduleRunner in headless mode
- Skip rendering plugins (Camera, Rendering, DebugUI, SessionUI)
- Made cube mesh/material assets optional for headless spawning
- Direct NetworkingPlugin + PersistencePlugin instead of MarathonPlugin
- Use app.run() instead of platform executor in headless mode
This enables:
- Running multiple instances for multi-client testing
- Automated testing via marathonctl without GUI overhead
- Background server instances for development
- CI/CD integration for networking tests
Refs #131, #132
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>