Around Christmas 1996, sitting bored in a barracks room in Hawaii, I started to take a look at a Java book which my good friend Brent had recently purchased. "What's Java?" I asked him. "It something that you can write cool stuff on web pages with," he replied. Sounded interesting so I started at page one.
Within a couple weeks I was feeling pretty good with Java, still had to get used to the strict object oriented approach, but it seemed like a worthy language. I continued to search for ways to learn Java. I went across the hall to a guy I vaguely knew from before, asked him if he knew anything about Java. He knew C, or LPC to be exact, and tried but could not help much. However, in the discussion of coding he told me of his wasting away college coding in a game called KoBra MUD. This game was fun, for a while, but my friend John G. was in the processes of creating his own MUD and was looking for a suitable MUD server. He was considering something called Foundation. So I offered to try to write him one.
After a month of writing and rewriting code, learning Java the whole way, I showed John the first version of JavaMUD. Multi-user, of course, we were able to log in and walk from room to room, say stuff back and forth, and carry objects. This first version was terribly done, it worked, but not efficiently. So I optimized it, and changed it, and tweaked it. It still wasn't good. I seperated the current Connection from the Soul, and allowed the Souls to be moved around in different bodies. I made every object a container which allowed nesting. I added bulk and weight management. This was not good enough, it was still merely a rewrite of old MUD behavior.
John and I had the idea of a completely coordinate based MUD. How would it work? How would you play it? How would it be coded? I started what John G. and I called CoorsMUD. John providing higher level assistance in programming techniques and many evening Taco Bell MUD discussions. CoorsMUD turned into a complete rewrite. Brought in the coordinates with a prototype of the Ground database which would be. But still nothing to do in the coordinates. Just this place that objects could be stored.
AOMUD (Ashen Orion MUD), not to be confused with AOL, came about with a rewrite of the main object database, a better compression approach for the Ground and Ceiling databases, and a new Map editor which worked over the Internet. You could pick up objects and drop them, look around and see where things are and what they are doing. You can whisper, say, shout and yell. You can stand there and perceive objects without surroundings, but you could not move. I had to find a way to move. DML (Dan's Markup Language) was added to the client and the server Strings were updated to match.
DaMUD separates the databases into more granularity, not requiring the use of global thread locks for every action. The driver has changed from a single driver thread and a single output thread to a completely threaded system. It now takes full advantage of multiprocessor machines, such as the one running this site and the game. An online help system was developed and all the code was internally documented. New output approaches make the server lightning fast and various String utilities were developed to make text and command manipulation easier. The Class hierarchy was modified to include a system of object wrapping which allows the dynamic modification of any object characteristic. A perfect system for magic spells. The next step in two dimensional compression was taken, increasing performance and cutting memory usage significantly.
You can not see a description of your surroundings and there are some tweaks left on the databases. This is being written as a game world system, not a game. Once I am confident that I have properly created the laws of the universe, then I will release the code to others so that many games may be developed with a strong and versatile code base.