These files would be extremely valuable to produce a highly accurate reproduction of the Ultima Online world content.
The server has 2500+ players logged in right now, so still very much active.
I didn't have an LLM back then but also at least some debug symbols from a powerpc binary that was 3 years in the future, it helped a bit.
Some of your file names seem eerily familiar like packet_handler and entitylist :D
The final frontier is basically having a perfect netcode before polishing up the rest, but that was already a waste of a couple 100h so far.
I only glanced over the source a bit, but it does not seem like some reliably mechanic on top is used because its TCP all the way down? Interesting... if thats the case - it seems like a "slow" choice for an MMO back then.
I was surprised that there is still an active community around UO!
In any case, this is very cool. Thanks for sharing!
I've been working on my own MFC C++ decompilation project. It's insane how useful LLMs are for this.
Recently, I've enjoyed scripting for the TazUO game client in Python; it's a slightly older version of Python 3, but still far ahead of scripting in Razor or SteamUO. If you're looking for a quiet single-player shard to play around with, I've enjoyed Memento.
The game is currently only available via emulator.
Localized, text-heavy RPGs are a very easy way to "learn-while-playing" a foreign language, and reading as well.
Would love to see this built !
I never realized this demo was in the expansion pack.
I played T2A a little last year, great shard & peeps running it.
I wonder if they considered writing their disassembly in the 'pre-C++98 dialect of C++' used in the original, and targeting the original compiler. I've done some disassembly of binaries which ran on vintage systems, and I would've targeted the original toolchain if I could have. It's an interesting philosophical question.
I still have an inkling to get back into MapleStory custom servers (or other MMOs) but to be honest something about the vast open world that is empty of players is really creepy/sad/liminal to me. I'd want to take a spin at adding some "life" to the servers, even if it is just extra player-ish NPCs.
Nowadays I miss the UO experience but simply don't have time to sink into anything like it.
Such great memories!
Before they finally patched the hole, I used to enjoy running through crowds of high level monsters in dungeons to get a whole parade of them chasing me, then quickly casting a portal into the middle of town, usually next to the bank, then ducking behind the portal without going through, as the whole line of monsters walked towards me and popped through the portal and into town!
Also, you could tame animals to make them your pets.
So one Halloween I logged into UO, and my character had been transformed into a deer, as some kind of a sick joke! All my inventory was gone, and all I could do was deer stuff.
Then some bastard came along and TAMED ME. That totally sucked! I had to follow him around obediently all day. I guess I'm lucky he didn't skin me and make me into leather armor.
That is truly honorable perseverance
> each server (so called “shards”) ran on multiple Solaris machines (the map was split by regions).
Found this 13 year old Quora commment (from https://www.quora.com/What-was-the-technology-stack-driving-...).
Ruben Cortez
Those original servers were Sun Ultra II's running Solaris. If I remember correctly, it was a dual proc box (rare in those days), 300mhz, with 256MB of ram (which we subsequently upgraded to 512MB for a boat load of cash). The server weighed a ton, and certainly wasn't rack mountable. and they cost about $30k each, making one UO shard cost about $150k (not including external storage), which is a ridiculous amount of money these days for a single shard. We eventually built MMO shards for a lot less (including MCO, TSO, ENB, and of course SWTOR) cost per shard. Back ups were kept on internal storage, for which we sweated buckets over everytime we lost a drive. we eventually centralized backups on an Hitachi Storage array that was a monster and weighed easily 100lbs and provided a whopping ~10GB of raw space.
I think where we revolutionized administration of a distributed MMO was on the network side, specifically via the VPN, which was very new at that time. Short of ordering PTP circuits all over the country and world, we used a software VPN to create those tunnels over our public internet connection at the time (a SINGLE DS3 -- it wasn't until late 1998 that we had a second circuit!) to allow for login handoff, administration, backups, publishes, etc. our hub and spoke VPN design and subsequent fully-meshed design were what made distributing shards economically feasible.
I think it was around mid 1999 when we converted to Linux, but not before using Solaris x86 first for a time. We bought Dell Towers to act as servers (Dell didn't ship a true rack-mountable server until the following year or so I think) and they were slightly better on speed than the Suns and at a much lower cost. But i think we needed more of them per shard, especially as we released expansion packs (which in those days, meant adding a new server to handle the added land mass). We were likely closer to 10 servers/shard around 2000/1.
Credit to Mark Rizzo for the architecture and buildout of the UO's backend. It was way ahead of it's time, and the innovations we mustered back then is so taken for granted these days (but isn't that true for everything?!).
That timeline for Solaris (Sparc) -> Solaris (x86) -> Linux (x86) feels very familiar from my small company developer job at the time.
got into it with Sphere (51 and 55) if my memory doesn't trick me.
was there ever a working port of the client for OSX ? would love to revamp it.
I played UO a lot when younger, on Neverlands shard, and none of my friends knew how to write code for EasyUO, so I had to learn it. Good times!
I liked the old Ultima saga, in particular from 5 to 7. Ultima 8 ... I did not hate it, but they killed off the old concept. Perhaps the old genre was meant to die anyway, but it was such a big difference from 7 to 8. While 7 is often the most praised variant, I particularly hated combat; it was much easier in Ultima 6. Either way it was specific for the 1990s era for the most part, which was pretty nice. (Ok - just looked up ... Ultima 1 to 5 actually was in the 1980s era; I thought it wasn't quite that old. Ultima 6 was released in 1990.)