- UO was the only game that I've ever played where you had "commoner" players. A lot of players failed to scale up, or to obtain top notch equipment. But the game was fun even for underpowered players, so they kept playing. The really powerful players were famous, like celebrities.
It's very different from modern games, where each player looks like the fantasy version of a Marvel super hero.
- Wow! This is no small feat... am I reading the contribution graph[0] correctly, you've done all this yourself?
This endeavour sounds a whole lot like a server emulator for Infantry Online that was started by an incredibly talented developed 16 years ago ("aaerox"). I found the original svn commit on Sourceforge [1]. It's since moved to GitHub but has been active for 16 years and it has much of the same functionality you've already built, but done by more than a dozen developers over a decade-and-a-half.
Kudos to you. You've gotta explain how you've managed to do so much all by yourself.
[0] https://github.com/moongate-community/moongatev2/graphs/cont...
[1] https://sourceforge.net/p/infserver/code/1/
- Very cool work! This is giving me a big nostalgia hit, as a LONG time ago (when UO was a current game ;) I maintained a C++ UO emulator called UOX3. To be clear I absolutely did not initially develop it or even write any particularly large or difficult features. I just took over maintaining the codebase, taking patches and cutting releases, managing the community, that sort of thing. The original author decided to step away and I had apparently been enough of a busybody in the tool's community that he tapped me to lead it for a while. I also helped some Canadian guy with money, hardware, and bandwidth to burn run a private server based on UOX. Both were delightful experiences and I learned a ton.
In hindsight I am very glad Origin was not overly litigious and didn't send the FBI to my house for "hacking" their game.
by godrae369
2 subcomments
- Hey man, read your breakdown on the Moongate architecture. Using Source Generators for DI and Lua for behavior decoupling so you never have to recompile C# is a beautiful setup. Strict domain separation is the way to go.
I saw your 'What's missing' list includes NPC AI.
I build AI agent workflows. Instead of building traditional, boring finite-state machines for NPCs, what if we plugged an LLM microservice into your Lua scripts? We could give key NPCs actual contextual memory and dynamic dialogue. Players could physically type to a merchant, negotiate prices, or ask for rumors, and the NPC would generate a response strictly within the lore of Ultima, triggering the correct Lua events (like handing over an item or opening a door).
Since you have the packet layer and Lua environment solid, the integration would be incredibly clean. I'd love to contribute and map out the AI logic for this if you're open to exploring it.
by swaminarayan
2 subcomments
- Very cool project. MMO server codebases tend to accumulate a lot of architectural complexity over time, so starting fresh with a cleaner separation between networking and game logic makes a lot of sense.
Curious about the sector-based delta sync — how do you avoid packet bursts when a player enters a busy area with lots of items and mobiles?
Also interesting to see NativeAOT used here. Was that mainly for deployment simplicity or performance?
by MisterTea
1 subcomments
- This must be an omen given how I just this week watched a bunch of the Majuular videos on youtube (Highly recommend them) about the Ultima series of games, particularly Ultima Underworld The Stygian Abyss, and Ultima VII and VIII. That lead to me buying Underworld and VII last night on GOG as feel like I missed out on something wonderful in the 90's (Also need to grab System Shock and Crusader no remorse.)
My brother and I bought IX when it was released but it was a buggy nightmare so we gave up and never experienced Ultima proper. However, my brother and his friend got into UO and played a ton. His friend was a greifer at the time going by the name SirDarkSpell and supposedly made a bit of a name for himself. This was around 2000 or so? I bet the two of them would love to hear about this project as both of them have fond memories of UO.
Anyway. Might just throw my weekend into the Stygian Abyss...
by onlyrealcuzzo
1 subcomments
- I love your logo.
Do you have a YouTube that shows off the progress of what's complete?
- Very cool to see! I was active in the UO emulator communities back in the day but mostly with SphereServer. It is interesting to see here in the comments how many people were inspired to programming because of UO!
All the recent LLM advances would make for very interesting and very fun NPC interactions in a MMORPG today too. Even small player community servers could be viable long term because of the ability to seed complex interactions with NPCs into on-going story lines.
- Cool, nice work!
I've been building a MORPG version of a kind of Ultima 3.5 on the side in spurts for the last 5 years using Go, postgres, and React on the frontend. Top view tile graphics, old school keyboard control/commands. It's pretty janky still, but I hope to do a Show HN at some point.
I think I need to take some inspiration from you and partition the world into sectors, I have a n^2 scaling problem right now as there are more PC and NPC in the world.
- I remember PvPGN. I believe it's still out there https://github.com/D2GSE/pvpgn-server
- 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! ;)
- 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.
by GardenLetter27
0 subcomment
- I love the Ultima renaissance now with Ultima VII: Revisited and the Ultima Online servers.
- 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?
- 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!
by carverauto
0 subcomment
- the original moongate (moongate.net 4000) was a MUD written by Vassago and still exists today as Materia Magica
- 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.
- The sad thing is i see this and think:
"Who owns the UO IP now and how litigious are they?"
by picklepete
1 subcomments
- This is so cool! I used to love playing around with RunUO back ~2003, it's great to see the community stay alive.
- had great fun for years on Neverlands shard. best mmorpg ever, by a largeeeee margin.
- Is the UO protocol documented?
Are there UO clients besides the official one?
by DeathArrow
1 subcomments
- I like seeing how more projects use .NET, which is a great platform.
- This is super cool. Never played UO myself, but had friends who did. I'll be keeping an eye on this as someone interested in the private MMO server community. Hope others can contribute and build this up even more.
- Cool Project. How did you know how to talk to clients?
by stackghost
0 subcomment
- Impressive work! Does it support the smooth boat movement packets from the newer clients?
- panda king
- [flagged]
- [dead]
- [flagged]