Back to browse
GitHub Repository

Moongate is modern Ultima Online server built from scratch in C# with AOT compilation for high performance and nostalgic gameplay experience.

213 starsC#

Moongate – Ultima Online server emulator in .NET 10 with Lua scripting

by squidleon·Mar 6, 2026·287 points·164 comments

AI Analysis

●●●BangerWizardryNiche Gem

NativeAOT UO server with Lua scripting and hot-reload—early but genuinely solid foundation.

Strengths
  • NativeAOT single-binary deployment + source generators eliminate boilerplate coupling
  • Lua scripting layer decouples behavior from recompilation, enabling live item/door definitions
Weaknesses
  • Combat and skills not yet implemented—core gameplay loop incomplete
  • No public test server; adoption risk unclear for community-driven MMO
Category
Target Audience

Retro MMO enthusiasts, UO private server operators, game engine builders

Similar To

ModernUO · RunUO · ServUO

Post Description

I've been building a modern Ultima Online server emulator from scratch. It's not feature-complete (no combat, no skills yet), but the foundation is solid and I wanted to share it early.

What it does today: - Full packet layer for the classic UO client (login, movement, items, mobiles) - Lua scripting for item behaviors (double-click a potion, open a door — all defined in Lua, no C# recompile) - Spatial world partitioned into sectors with delta sync (only sends packets for new sectors when crossing boundaries) - Snapshot-based persistence with MessagePack - Source generators for automatic DI wiring, packet handler registration, and Lua module exposure - NativeAOT support — the server compiles to a single native binary - Embedded HTTP admin API + React management UI - Auto-generated doors from map statics (same algorithm as ModernUO/RunUO)

Tech stack: .NET 10, NativeAOT, NLua, MessagePack, DryIoc, Kestrel

What's missing: Combat, skills, weather integration, NPC AI. This is still early — the focus so far has been on getting the architecture right so adding those systems doesn't require rewiring everything.

Why not just use ModernUO/RunUO? Those are mature and battle-tested. I started this because I wanted to rethink the architecture from scratch: strict network/domain separation, event-driven game loop, no inheritance-heavy item hierarchies, and Lua for rapid iteration on game logic without recompiling.

GitHub: https://github.com/moongate-community/moongatev2

Similar Projects

Other●●Solid

I Emulated My Childhood

Hand-built Spectrum emulator running real 1980s games; nostalgia meets genuine technical depth.

Rabbit HoleCozy
sklivvz1971
203mo ago