top | item 18748621

(no title)

tobz | 7 years ago

Heh, this is funny... I worked on an emulator for Dark Age of Camelot _and_ an emulator for World of Warcraft (WCell) and attribute experience from both projects to getting my first software gig.

I also remember (fondly) going through RunUO with .NET Reflector to pick up tips and tricks. :)

discuss

order

na85|7 years ago

I worked with runuo quite a lot and while I too have lots of fond memories, it's actually a huge mess of a codebase.

It's object-oriented except when it's not. It's modular except where it isn't. It "optimizes" for $number_of_cores_on_your_box but doesn't actually use them for anything but world saves. Almost none of it is commented or documented (doxygen doesn't count as documentation).

I think runuo excelled not because it was significantly better but because it was less shitty than POL and Sphere that came before it.

nrb|7 years ago

I generally agree (object serialization was rough, and stop-the-word saves have been a constant issue for the entire life of the project) but the things it did well were done outstandingly better than POL, Sphere, UOX, Wolfpack, etc.

I think the killer feature of RunUO was that it compiled the C# “script” files and linked them at runtime, eliminating the need to attach a scripting language that provides some limited API. It led to some extremely messy code, but it allowed you to achieve anything you wanted with minimum fuss, using the base .NET APIs that were well-documented. And the community was huge and active by UO emu standards.

It doesn’t fall over with 5000+ clients connected to a single server, which is pretty astounding considering it’s TCP based and players tended to clump up pretty majorly during in-game events and such.