problems

Here's a review of some of the problems facing our MUD.

Player-facing

These are obviously, as far as players are concerned, the most important of these issues.

PVP

Most of Tsunami's legacy is as a rough-and-tumble PVP MUD, with multiple PVP venues including traditional playerkilling and mudwide "wars" being the bigger of these. For the better part of my time as a player the MUD has drifted away from these roots with a few subsequent alterations to the PVP system. Much of this change was, I suspect, intended to stem the positively ruthless nature of the game at low levels, to keep this from driving away newer players. This was done a bit too well and the last two major iterations of the system have begun what I hope is a swing back to more encouragement of the PVP activity that was the lifeblood of the game.

The greatest problem with the current system is that its design doesn't scale well. It requires well over 100 fairly-active PKing players in order for its rank-based incentives to materialize. Other related concerns are balance issues for both subclasses and items.

"Jihad"

In the early 2000s a system called "Jihad" was introduced in which the simple +/- alignment was replaced by a variety of variously good-and-evil factions. This system was another prime example of instituting diversity the MUD couldn't support. Guilds remained in place, leaving us with 7 religious factions and 10 guilds. Jihads destroyed guild unity.

Levels

A recent run-up of high-level characters due to increasingly available high-hero areas, decreased PVP activity (and associated penalties) as well as greater availability of money has led to a glut of very-large characters. Many rules and systems were designed and balanced with a much lower top-end in mind.

Messaging

A fair number of typos and other awkward constructions exist, especially in item-transfer code. The older players in general don't mind these, but I suspect they're off-putting to anyone new to the MUD.

Documentation

With around 300 player-facing commands, 10 guilds, 7 religious factions, 72 subclasses and nearly 1000 skills/spells/prayers/songs and forms (albeit not all currently in use,) the task of ensuring all of this documentation IS and STAYS up to date is monumental in its own right.

Wizard-facing

That said, our ability to deal with player-facing issues in general is hampered by the high-maintenance-cost exhibited by the wizard-facing problems.

Documentation

We have doxygen these days--we just also have 20 years of legacy code that isn't properly commented. Part of why it took me 6 months to get on my feet as a coder is because of the steep learning curve. There are examples everywhere--but few explanations of why or how they work. New coders can often "build" just fine from these examples, but anything too aspirational often requires more knowledge than a new coder will get without spending a lot of time practicing RTFC--a task that can only proceed so quickly when you don't know what any of the code does.

Legacy code

We have a lot of it. We have somewhere on the order of 25,000-35,000 npcs, rooms and pieces of equipment alone, many of these still following old conventions (like manually wrapped lines), nevermind all of the other files. Any change to how these object blueprints work often has a cleanup-cost when old objects begin breaking. Likewise, any changes to quality-standards would require altering thousands of old objects in order to bring them into compliance.

Dependency on static, hard-coded functions/queries

Much of the more-complex code in the realm/domain (especially as it involves quests, miniquests, and almost anything else of much depth, along with a fair number of other queries) is determined by hard-coded static queries and routines that, while they may be overloaded, may not be modified at runtime via function calls. The end result is that for many quests, code is scattered across many objects instead of collected in one location, making the necessary alterations to those objects on the fly.

While it's true that there is inevitably some consternation when an object is behaving or appears different than the code in its file indicates, there is inevitably much more consternation when some unknown issue is cropping up in a large, complicated quest with code spread across dozens of objects.

Discussing this elsewhere?
Enter 'link' for a markdown link
or 'tweet <message>' for a pre-populated Tweet :)
Want to subscribe? Enter 'rss' for a feed URL.
>