Summary
Implement a standalone dedicated server that loads ONI game DLLs without the full Unity game binary.
Related community requests: #60, #380
Architecture
- Console .NET app (
net48) loads Assembly-CSharp.dll via Mono runtime
- Harmony patches replace Unity
InternalCall methods (reuses test infrastructure from MultiplayerMod.Test)
- Boots game world: Grid, singletons, state machines — no rendering required
- HTTP server (
HttpListener) exposes world state API
- Web visualizer (React + Canvas 2D) renders the world in-browser
Current Status
Phase 1: Web Visualizer ✅ (PR #384, merged)
- HTML Canvas world renderer with element/temperature/mass overlays
- Zoom, pan, cell tooltips
Phase 2: Game DLL Loader ✅ (PR #385)
- Loads all 191 elements from game YAML
- Real WorldGen (SandstoneDefault, 256x384, seed-based)
- SimDLL physics simulation running headless
- Standalone Mono execution (no test runner needed)
Phase 3: World Simulation ✅
- SimDLL ticking at 200ms intervals
- Grid pointers wired to DLL-owned memory
- Real biomes, temperature, mass from physics engine
Phase 4: Multiplayer (planned)
- WebSocket transport for client connections
- Command synchronization
- Multiple connected visualizer clients
Run
export ONI_STREAMING_ASSETS="path/to/OxygenNotIncluded_Data/StreamingAssets"
arch -x86_64 mono DedicatedServer.exe
Summary
Implement a standalone dedicated server that loads ONI game DLLs without the full Unity game binary.
Related community requests: #60, #380
Architecture
net48) loadsAssembly-CSharp.dllvia Mono runtimeInternalCallmethods (reuses test infrastructure fromMultiplayerMod.Test)HttpListener) exposes world state APICurrent Status
Phase 1: Web Visualizer ✅ (PR #384, merged)
Phase 2: Game DLL Loader ✅ (PR #385)
Phase 3: World Simulation ✅
Phase 4: Multiplayer (planned)
Run