Live data from Hacker News

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

github.com

1–10 of 168 posts

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

#1
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

Show HN: Moongate – Ultima Online server emulator in .NET 10 with Lua scripting
github.com

Re: Show HN: Moongate – Ultima Online server emulator in .NET 10 with Lua scripting

#6

I love your logo. Do you have a YouTube that shows off the progress of what's complete?

Thanks! The logo was a happy accident. I wanted something simple that felt like the moongates (so and so :) from the original game. I'm not really a video person. But here's what's working today: login flow, character creation, world movement with delta sector sync, auto-generated doors from map statics (that actually open), Lua scripting for item behaviors, snapshot persistence, and a React admin UI for server management.

I'll probably add a short demo gif or video to the README at some point, but for now the best way to see it is to clone it and run it

Re: Show HN: Moongate – Ultima Online server emulator in .NET 10 with Lua scripting

#7

This is so cool! I used to love playing around with RunUO back ~2003, it's great to see the community stay alive.

Thank you! RunUO in 2003 was the golden era. I started little bit early (1999 with 56k). The community is small but still alive, and projects like ModernUO have kept things moving forward. Moongate is my take on rethinking the architecture from scratch while keeping the same spirit. Glad to see people still care about this stuff! :*

Re: Show HN: Moongate – Ultima Online server emulator in .NET 10 with Lua scripting

#8
post #4

Ahhh this takes me back to playing on various private UO and DAoC servers. Part of that experience is why I am a developer today. Cool name for a project like this along with the art!

Same here! tinkering with private servers is what got me into programmig in the first place. There's something about reverse-engineering a game protocol at 15 that hooks you for life. Thanks for the kind words on the name and art!

Re: Show HN: Moongate – Ultima Online server emulator in .NET 10 with Lua scripting

#9
post #3

Congratulations! I don't know how busy player-run shards are these days, but I look forward to exploring this once you've gotten it a bit further.

Thanks! There are still a few active shards out there, mostly us "old guys" in our 40s chasing the nostalgia of our teenage years. UO has a way of never really dying. Combat and skills are still a ways off, but the foundation is solid enough that I'm adding features every week (in spare times,) I'll keep pushing updates!

Re: Show HN: Moongate – Ultima Online server emulator in .NET 10 with Lua scripting

#10
I'm a fan of UO and I love seeing more projects like this. Nice work!

Obligatory nitpicky aside, a time-honored tradition of HN:

I've long been irritated by the use of the term "server emulator" in gaming contexts. Technically these projects are just reimplementations of a proprietary networking protocol. Nobody calls Samba a "server emulator" because it reimplements the Windows file sharing protocol, because Samba isn't "emulating" anything from the perspective of the traditional definition of "emulator" in computer science.

But for some reason, I guess because "emulator" has colloquially been redefined by non-CS nerd gamer normies as a term for software that lets you play proprietary games on platforms they were not designed for, we have ended up in this new status quo where the term's definition has expanded in this game of telephone way that annoys mainly me and not many other people.

And what's kinda funny is I say that it is a "new" status quo, but it's not even that new. I recall, what, like 20 years ago now I was in an edit war on Wikipedia fighting with people over the "server emulator" article, insisting that the term was technically inaccurate and should not be used. Unsurprisingly in retrospect, I lost that edit war.

Nowadays the whole thing feels like my first "old man yells at cloud" moment, of which I'm sure I'll experience more as I age. I certainly do find new slang introduced by gen Z like "he got the riz!" to be quite cringey, so it looks like I'm well on my way to getting crotchety and terrible about the natural evolution of language! ;)

Post reply on HN