Chapter 5

What Else is Possible

What we have done here is just the tip of the iceberg. While making changes to the engine of a Multi-User Dungeon is not always straightforward, the fact that you can modify the source code as well as the world files opens the door to limitless possibilities.

The basic CircleMUD release does not have a "race" system, just a class system. By contrast, many MUDs, particularly a number of LP-MUDs, do include a race system, with the race chosen having as little an effect as a slight influence in player statistics, and as major an effect as how NPC's react to a character. The instructions for adding a very basic race system can be found on the CircleMUD ftp site (ftp.circlemud.org). These modification from these instructions lays a partial foundation, but it is up to the person who implements them to flesh out the various benefits and consequences of each race.

Another possibility is that special procedures could be written to allow NPC's to react directly to the actions of a character in the room. At present, the special procedures that exist only take into account status factors, such as whether or not characters are fighting, whether a character is good or evil, whether a player is the last character the NPC was fighting, etc. Support could be added so that an NPC could react directly to, say, being kissed, being given a certain item, or to other actions in the room, such as a player taking an item or opening a door. This would most likely require queuing the action messages that occur in the room for all NPC's present, or at least for those with these special procedures, and writing a special procedure to read and interpret the queued messages until it either reaches the end of the list or finds one that the character is supposed to respond to.

There is also partial support built in for multiple home cities, but the procedures to take advantage of this are not present. For an example of this, take a look at JediMUD, a Diku-class MUD running on jedi.america.net at port 4000. (Just as an aside, the computer running the MUD is named after the game, which originated in the psychology department of Johns Hopkins University, and not the other way around. Also, according to JediMUD's home page at http://www.america.net/~jedi/, CircleMUD engineer Jeremy Elson was an administrator on JediMUD for a time.)

With some creative coding in C++ and, for example, Visual Basic, a picture- based version of the game could be created, in which the MUD server sends image files in addition to or instead of text descriptions, and a VB-based displays them, in a manner similar to Bard's Tale. The standard source code for the ZModem file transfer protocol for terminals could be used, sending the images as part of the same data stream as everything else, or the client could establish a separate connection to, for example, an FTP server or similar engine, and be told which files to download either by the MUD or a parallel process controlled by the MUD.

There is a semi-popular activity called MUD Sex, in which players use either special commands or an "emote" command to send the descriptions and messages appropriate to intimate physical interaction. The CircleMUD code base does not include any special commands for this, so generally players who want to do this will either use the emote command, which simulates a social, or find another MUD. However, a MUD coder who wants to support this activity can add the appropriate commands, and even restrict them to use in certain rooms. Special characters and procedures could be added to manage a kind of "motel zone", where one player can "check into" a room and can invite a partner to join him or her, away from the prying eyes of others, either through some kind of "invite" command or by giving the other character a key.

On-line creation utilities are also possible, to allow God-level characters to build additional areas, objects and characters while the game is running. There is currently one under development as part of CircleMUD 3, which is expected to be ready in version 3.10, whenever that is available. If you do not wish to wait, you can create your own, or download one of those available now, and figure out how to patch it into the source code.

You can be very creative with your classes. Some MUDs have as many as seven or eight classes, and some of these classes are restricted to characters who have reached the God levels and then "re-morted", opting to exchange the administrative powers for the right to be a regular player character again. You can even create a class of character which is only capable of magic under certain conditions, such as the presence of sunlight (outdoors in the daytime), or whose alignment must remain good or else lose the use of magic, such as the Paladin or Jedi as they exist in JediMUD.

The game also supports special procedures for objects and rooms, as well as for NPC's. Buttons which can be pushed to open and close doors, rather than using keys, can be made and placed, as well as creating doors which open and close on timers. Vehicle rooms, such as the subway cars in JediMUD or the Mirror Rooms in the Infocom text adventure Zork, can be added to connect areas so that players can travel quickly, rather than having to wade through the countryside to pick up a quest where they left off in a previous session. Daggers which do more than just stab a target, but also poison their victim, or periodically heal their owners, may be worthwhile. Also, a door could be created that looks like a mouth, and which can stick out its tongue every so often, or when someone tries to open or unlock it improperly.

In addition, there are a number of gameplay settings which are configurable by modifying the file "config.c". For example, the game, as distributed, has the "rent" feature turned off, allowing players to keep their equipment from session to session without charge. However, changing the free_rent setting around line 91 from YES to NO will change this, so that characters lose their equipment if they quit without going to a rental area such as the Grunting Boar Inn in Midgaard, and having enough coins to pay the storage fees. The game's opening greeting is also stored in this file as the string array constant GREETINGS at around line 203. Other options, such as the port the game runs on, whether or not player killing is allowed outside of special areas, and so on, are all configurable from this file.

You can even adjust the way the game handles the terminal. By modifying the strings throughout the game that contain the messages sent to players, you can add color to these messages. See "color.doc", which is included with the game, for more details on this. Also, by making changes in "comm.c", you can adjust or rewrite the handling of the backspace, delete and arrow keys characters, or make any number of fine tuning adjustments to the way the game is experienced by the players.

While most modifications are in the form of game enhancements, this is not the only way in which the game can be modified. A good C programmer with a lot of time available could in fact take advantage of the core engine to serve a seemingly unrelated purpose. The suggestion has been made that a MUD engine could be used as the front end to a corporate information system, a kind of text-based Virtual Central Office, if you will, for a company with a distributed employee base such as a national sales force. Support could even be added for conferences and meetings, and the game's mail system could be used for inter- office memos. If the users have enough Internet bandwidth, support could even be added for voice communication using customized client software. To take this idea a step to the side, the engine could also be used for an on-line teaching system, a Virtual Campus, complete with a library, department offices, a campus mail system, and a chess team. An on-line shopping center is also a candidate for this type of adapted MUD engine.

In a way, many of the issues surrounding how MUDs operate are similar to a number of issues involved in higher-end Operating Systems. Among these are such things as parallel tasking of multiple users, interaction between users and system elements, protocols for communications between the server and the user interface system (monitor, keyboard, mouse, etc.) and a number of other factors. While many server types can simply defer much of this to the parent operating system, users in MUDs must interact not only with the system and with each other, but also with the same set of system characters, and the effects of one user's actions can influence the game variables in a way that affect other players. As a result, the MUD engine is designed to handle many of the tasks, such as parallel tasking of multiple users and system activities, which are required of an operating system. In a way, a MUD actually serves an operating system for the players who use it. Understanding how the MUD accomplishes this can provide an insight into understanding the workings of multi-user operating environments. To take this to an extreme, a MUD engine could even be adapted to serve as an operating system or apparent operating system, such as a Bulletin Board System or the virtual office or campus mentioned before.

As I stated before, the possibilities really are endless. With a handful of ideas and some decent C coding skills, it is within your power to bring these possibilities to life.