Top
Best
New

Posted by squidleon 15 hours ago

Show HN: Moongate – Ultima Online server emulator in .NET 10 with Lua scripting(github.com)
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

234 points | 134 commentspage 2
kethinov 14 hours ago|
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! ;)

squidleon 13 hours ago||
Ha, you're absolutely right from a CS perspective! it's a protocol reimplementation, not emulation in the traditional sense. I've thought about this too. "Server emulator" stuck in the UO/MMO (other example Mangos is "Wow emualtor") community because RunUO and similar projects used the term 20 years ago and it just became the standard label. At this point fighting it feels like your Wikipedia edit war, technically correct but practically hopeless. !

  That said, I'll take the nitpick as a compliment :) means you actually read the project description. Thanks for the kind words!
orphea 13 hours ago||

  > other example Mangos is "Wow emualtor"
Do they call themselves an emulator? I'm seeing "a server" or "a reference implementation".
squidleon 13 hours ago|||
You're right, I just checked , MaNGOS calls itself "a server" now. They probably had the same realization at some point. Maybe I should update my README too and just call it "a modern Ultima Online server" instead!. Less baggage.
squidleon 13 hours ago|||
Just update repo and README from server emulator -> server !
orphea 12 hours ago||
While I have your attention - let me wish you good luck with your project! While I'm not an UO gamer (my MMORPG has been WoW - that's where I know Mangos from :P), I'm happy to see a .NET project - I think it's an underappreciated platform; for once, Microsoft made something very cool
squidleon 11 hours ago||
Thank you! And yeah, as a fellow .NET developer I totally agree modern .NET is genuinely impressive. The jump from the old .NET Framework to what we have now with .NET 8/9/10 is massive. NativeAOT, source generators, the performance work the runtime team does every release — it's a great platform that doesn't always get the credit it deserves.

  And funny you mention Mangos — the WoW emulation scene was a huge inspiration for UO server development back in the day. Different game, same passion for reverse-engineering and rebuilding these worlds. The
  community-driven server scene is one of the best things about MMO gaming in general.

  Thanks for the kind words and good luck with your WoW adventures! :*!
nebezb 12 hours ago|||
> 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.

I think the distinction is a lot greyer than the black/white you propose.

The very first popular online games used servers mostly to redistribute (and maybe time sync) packets from clients. There is no standard way to to do that. Player-created servers did their best to emulate the official servers logic but it was indeed impossible to replicate it perfectly.

e.g. when breaking up large maps into sectors, the official server might broadcast your location and projectiles X units away and emulators would broadcast it X + 500 units away, which could have an impact on gameplay.

Emulator feels fitting when there is no official server spec to reimplement.

edit: emulator also feels appropriate where servers are responsible for NPC activity or quest-like mechanics. This goes beyond implementing a network protocol. The gameplay is massively impacted.

kethinov 12 hours ago||
Your reply did exactly what I complained about: expanding the definition of emulator to cover reimplementing a network protocol.

You're not wrong that "server emulator" is a generically correct use of the term emulation, in the same sense that it is a correct use of the word for someone to say they emulate a fashion sense of a celebrity they like in their own wardrobe.

But in computer science, strictly speaking, the original definition of emulator was more strict. It was about things like emulating processor architecture A so as to execute programs written for it on processor architecture B.

And part of why expanding the definition to include "server emulators" annoys me is why has this definition expansion occurred only in gaming contexts? If a free UO server is a "server emulator" then why is Samba not also a server emulator? The lack of consistency is irritating to me, and it only happened because gamers like the term emulator, not due to any kind of rigorous computer sciencey reason.

daeken 13 hours ago||
> I certainly do find new slang introduced by gen Z like "he got the riz!" to be quite cringey

This is interesting to me, if only because it's such a natural bit of slang. Given that it's a shortened form of "charisma", this one just Makes Sense to me! I figure it'd be incredibly cringe for me to use at my age, but it's a good term IMO.

kethinov 12 hours ago||
You're right, it absolutely does make sense. And yet it annoys me anyway.

There's been research by linguists (John McWhorter comes to mind) analyzing this phenomenon and it basically just comes down to the fact that as we age, we get more set in our ways, so the linguistic innovations that younger people do just have a tendency to annoy us, even when they logically follow or are objectively useful.

I try not to let it bother me, because it's irrational to feel that way, but it just does lol

devin 14 hours ago||
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.
tarellel 13 hours ago||
UO Outlands has been pretty popular for a few years. They’ve implemented a lot of custom aspects (specialties), craft, new dungeons, land, as well as weekly quests and events. My brother and I play it a few hours a week. It’s incredibly popular for the nostalgia and its player base seems to be pretty consistent. It reminds me of early UO where your exploring, learning, and dying a lot. And there tends to be players everywhere you go.
squidleon 14 hours ago|||
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!
D13Fd 13 hours ago||
UO was such a big part of my life back then, it’s great to hear that it’s still going. Maybe I’ll set up a server to play with my kids - although they’ll never be able to get the full experience with player killers, trolls, scammers, people hawking their stuff at the bank, dragon trainers, etc.
HanClinto 11 hours ago|||
I've been tinkering with the same thing -- wanting to set up a little server so that we can all play together as a family. We've enjoyed Diablo 2, Minecraft, and Terraria as a family, but I feel like it would be fun to set up a little UO server. I'd really like to find a good tutorial for how to set up a chill / casual-friendly server (I like there to be some grind, but I don't want it to feel like "stock" UO) -- so something with accelerated skill gains and whatnot.

I don't know if there are "family-friendly" presets for such things, but so far Copilot has been reasonably helpful at helping me along -- I just don't have it all working yet. If you have any resources you come across, I would be interested in comparing notes. :)

squidleon 13 hours ago||||
That's a great idea, UO is honestly perfect for playing with kids. The crafting, housing, exploring dungeons together. And who knows, maybe you become the dragon trainer this time around!
Fokamul 13 hours ago|||
There are several PvE UO servers, which are heavily against griefing. So I would say, pretty safe environment to play there with your kids and still with other people.
Fokamul 13 hours ago||
Most active is UO Outlands. Several thousands players?

They've reworked a lot of systems and it's basically 100x better than original UO.

There are several systems in place, which original devs wouldn't even dream of and saying that, official Ultima Online is still running. :D

It's PvP server, but with balanced PvP which really works for everyone. Not like original devs, they just dropped PvP because cookie-cutter players cried.

squidleon 13 hours ago||
Outlands is impressive from a technical standpoint, they've put an insane amount of work into it and the player count speaks for itself. I played there for a while.

Personally though, I feel they've overengineered it a bit. So many custom systems layered on top that it starts to feel more like WoW with UO graphics than actual UO. The original charm was in the simplicity you, a sword, and a world that didn't care about your feelings. But that's just my taste, and clearly thousands of players disagree with me, so what do I know. And yes, the fact that official UO is still running in 2026 is both beautiful and insane

devin 10 hours ago|||
This was the bummer to me when I tried it. I liked the bug-ridden classic experience before the notoriety patch.

I recently tried https://www.classicuo.eu/ ClassicUO, and the nostalgia was incredible. Granted it is not playable, but there is something about that experience that all of the assistants, hotkeys, etc. fail to capture.

nzeid 10 hours ago|||
> and a world that didn't care about your feelings

Dead on.

GardenLetter27 7 hours ago||
I love the Ultima renaissance now with Ultima VII: Revisited and the Ultima Online servers.
thetoon 10 hours ago||
Great news. Haven't played UO in forever. What kind of client are people using on modern systems, these days? Is there a client working well on linux?
ongedierte 6 hours ago|
UO outlands (most popular shard) has pretty alright support and guides for linux
zdware 14 hours ago||
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!
squidleon 14 hours ago|
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!
eclipticplane 3 hours ago||
Most of my sick days in high school were after big Ultima Online patches dropped, I believe, usually on Tuesdays. A neighbor had much faster internet - I think his dad did work from home? - so I'd download the patch onto a ZIP drive and sprint back home. Then spent the day debugging changes (client changes and network/protocol changes) with others on IRC to get SphereServer to connect again. Learned so much.
carverauto 11 hours ago||
the original moongate (moongate.net 4000) was a MUD written by Vassago and still exists today as Materia Magica
yangosoft 10 hours ago||
Impressive!

I spent many many hours in UO when I was young.

It was so great playing in some shards with hundreds of real persons.

nottorp 11 hours ago||
The sad thing is i see this and think:

"Who owns the UO IP now and how litigious are they?"

eclipticplane 3 hours ago|
Ultima Online emulators have existed almost since the launch of Ultima Online, and are arguably a reason the core game is still running today.

Ultima Online launched in September 1997. The first "offline emulator" launched in October. Emulators became playable by mid 1998. https://www.uox3.org/history/timeline.txt

picklepete 14 hours ago||
This is so cool! I used to love playing around with RunUO back ~2003, it's great to see the community stay alive.
squidleon 14 hours ago|
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! :*
gverrilla 12 hours ago|
had great fun for years on Neverlands shard. best mmorpg ever, by a largeeeee margin.
More comments...