It's very different from modern games, where each player looks like the fantasy version of a Marvel super hero.
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/
In hindsight I am very glad Origin was not overly litigious and didn't send the FBI to my house for "hacking" their game.
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?
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...
Do you have a YouTube that shows off the progress of what's complete?
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.
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.
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! ;)
I spent many many hours in UO when I was young.
It was so great playing in some shards with hundreds of real persons.
"Who owns the UO IP now and how litigious are they?"
Are there UO clients besides the official one?