Differences Between Midgaard and TriadCity
Midgaard is an emulation of the 1990s-vintage core World of the DikuMUD / CircleMUD adventure tradition. Served by the TriadCity platform, it runs on a radically different code base than the original, based on profoundly contrasting philosophies of what textual virtual worlds can be. Although our emulation feels remarkably close to the original, it's not the same. This is a partial list of differences, many of which will be visible to players, while others will not.
- Technologically, the original DikuMUD and CircleMUD were written in C; were procedural; were single-threaded; and were driven from a master program loop which handled everything from reading player input to firing NPC behaviors. The TriadCity platform is written in Java; is object-oriented; is multi-threaded; and is event-driven. The DikuMUD and CircleMUD servers were standalone; while the TriadCity platform is distributed — that is, it marshals compute resources, databases, message queues, memory caches, serverless compute clusters and other infrastructure spread across a large "cloud" of virtual components provided by Amazon Web Services. The list of technologies is here. Despite these quite profound differences, our Midgaard behaves surprisingly similarly to the original. That's turned out to be a lot more work than we anticipated, and, effort is ongoing to remove or disguise the remaining differences. But it will never be exactly identical to the original.
- The combat systems are different. DikuMUD & CircleMUD emulated the armor values, hitroll computations, and multi-sided dice concepts inherited from D&D. TriadCity in one way simplifies these calculations by utilizing straightforward min and max random number ranges. Yet in a more fundamental way TriadCity's system is vastly more complex, as these min and max values are dynamically computed in real time based on each character's varying attributes, Skills, Affects, the time of day, the location in the World, and many other variables which all interact in potentially unpredictable ways. For Midgaard we've bypassed much of this dynamic variability, to make fighting feel similar to the originals. But differences remain.
- Character death in TriadCity is permanent; in DikuMUD & CircleMUD characters respawned after losing experience points. We've added code to the TriadCity platform so that death inside the Midgaard World is as it was in the originals.
- Descriptions in DikuMUD and CircleMUD were static. In TriadCity they can vary dynamically. The most obvious is that (many) Room descriptions change by time of day. But they can also vary by character alignment, gender, current attributes, life histories, Skills, and other factors. As far as we know this subjectivity is unique to TriadCity. For Midgaard we've removed nearly all of this dynamic variability, so that our emulation is almost as static as the original.
- TriadCity has sound, smell, taste and touch descriptions; DikuMUD and CircleMud did not. We've limited our emulation to vision-only descriptions: like the originals, there are no sounds, smells, tastes or touches in our Midgaard.
- Midgaard has the concept of character classes inherited from D&D. TriadCity instead has the concept of character Roles, which can be combined to individualize character capabilities. We've added code to the TriadCity platform to enable character classes in Midgaard — while eliminating TrriadCity Roles inside the Midgaard World.
- Levels in TriadCity are individual to each character. In Midgaard they're identical to all characters belonging to a particular character class. We've added code to emulate the older one-size-fits-all notion of leveling.
- TriadCity has whole libraries of NPC behaviors, from multiple movement algorithms to complex hierarchies of abstract and concrete actions based on the "Subsumption Architecture" we've borrowed from robotics. DikuMUD and CircleMUD had a handful of procedures driving their limited NPC behaviors. It was unnecessary for us to write anything new to emulate the older universe: we simply had to assign the appropriate algorithms from TriadCity's far larger repertoire.
- TriadCity's mazes are dynamic. At minimum they change at server boot; but they can also change during runtime. TriadCity has libraries of maze types and maze-generation algorithms underlying this variability — more than 30 maze-generation algorithms altogether. Mazes in Midgaard are static, as they were in the original World files.
- DikuMUD and CircleMUD had a 28-hour day and an 18-month year; TriadCity's are 24 and 12. Additionally the respective world clocks advance at different tempos compared to real world time. We've chosen not to emulate the DikuMUD time scales; thus time in our Midgaard is the same as in TriadCity. Shops which open and close at particular Midgaard times of day may be subtly different to the original. We don't think this is impactful enough to be worth changing.
- Money in Midgaard has lesser value compared to TriadCity. Also Midgaard's gold coins have no weight, while TriadCity's Dinars definitely do; this means that in Midgaard you can potentially carry trillions of gold coins, while in TriadCity your strength attribute will limit how much loot you can lug. We've implemented weightless and inflated currency inside Midgaard; and separated the two banking systems.
- The TriadCity command vocabulary is far larger than Midgaard's, but, there are some necessary Midgaard commands which have been added, such as Quaff, Recite, Credits, and a few more.
- The older games varied NPC capabilities slightly from one instance to the next. This meant that two guards standing side-by-side might not have exactly the same strength or dexterity and so on. In TriadCity every Peacekeeper is the same as all the others. We have not (yet?) implemented this variability in our emulation — but we might. In fact, we might implement this concept in TriadCity itself, or parts of it. We like the concept a lot.
- The older games had the concept of shops "producing" the Items they sell, meaning in practice certain merchants have unlimited quantities available. TriadCity has workshops and factories where Items are produced, then brought to the merchants who sell them. Merchants in TriadCity will run out of things to sell, and of Dinars to buy the things you offer them. That's rare in Midgaard.
These are the highlights of a far longer list. In hindsight we're quite chuffed over how close we've been able to get our emulation to the original.