A solo developer has released Moongate v2, a from-scratch rewrite of an Ultima Online server emulator using .NET 10, NativeAOT compilation, and Lua scripting. The project launched on Hacker News on March 6, 2026, gaining 219 points and 129 comments despite being incomplete, with no combat or skills system yet implemented.
Modern Architecture Replaces Two-Decade-Old Patterns
Moongate v2 represents a complete architectural rethink of UO server emulation. Unlike mature emulators like RunUO (2003) and ModernUO that rely on inheritance-heavy item hierarchies, Moongate v2 implements strict network/domain separation, an event-driven game loop, and Lua scripting for game logic. The developer, posting as 'squidleon', built the project to explore modern .NET features rather than extend existing codebases.
Key implemented features include:
- Full packet layer supporting the classic UO client (login, movement, items, mobiles)
- Lua scripting for item behaviors, eliminating the need for C# recompilation
- Spatial world partitioned into sectors with delta sync, sending packets only when players cross sector boundaries
- Snapshot-based persistence using MessagePack
- Source generators for automatic dependency injection, packet handler registration, and Lua module exposure
- NativeAOT compilation producing a single self-contained executable
- Embedded HTTP admin API with React management UI
NativeAOT and Lua Enable Rapid Deployment and Iteration
The NativeAOT compilation approach stands out as particularly practical for server deployment. By producing a single executable without requiring the .NET runtime installation, Moongate v2 simplifies the deployment process significantly compared to traditional .NET applications. Server administrators can distribute a single binary rather than managing runtime dependencies.
The Lua scripting system allows community customization without C# knowledge. Opening a door, drinking a potion, or triggering item interactions are all defined in Lua scripts, enabling rapid iteration on game mechanics. This approach lowers the barrier for community contributions while maintaining type safety in the core engine.
What's Missing and What's Next
The developer acknowledges significant gaps: combat systems, skills progression, weather integration, and NPC AI remain unimplemented. Despite these limitations, the project attracted developer interest for its modern technical foundation. Ultima Online, which launched in 1997 as one of the first successful MMORPGs, continues to inspire private server communities nearly three decades later.
The project is available on GitHub under an open-source license, inviting contributions from developers interested in both MMO architecture and modern .NET development patterns.
Key Takeaways
- Moongate v2 is a from-scratch Ultima Online server emulator built with .NET 10, NativeAOT, and Lua scripting
- NativeAOT compilation produces a single self-contained executable, simplifying deployment by eliminating .NET runtime dependencies
- Lua scripting enables game logic modification without C# recompilation, lowering barriers for community customization
- The project gained 219 points and 129 comments on Hacker News despite missing combat, skills, and NPC AI systems
- Architecture emphasizes strict network/domain separation and event-driven design over the inheritance-heavy patterns of older emulators