JavaMud is a MUD written in Java. Technically speaking a MUD can be written on most of languages, Java being among those. However, using Java represents an unique chance to make a MUD truly object oriented to it's roots.
I am wery interested to discuss this object and/or share the ideas with you.
FenixBird :O)
Definition of a Mud
A simplified technical definition of a mud is that it is an object oriented interpreter.
Each room, item, person etc. is an object in a mud. The objects are in a class hierarchy, e.g. a room has a sword. This sword is a subclass object of the object room. Room resides in a house. House resides in a country. Country resides in a planet. Planet resides in an universe. So according this, the sword object with whole classa path would be universe.country.room.sword.
Each object may have attributes. E.g. sword could be magical, magicality could have level of power. Rooms have names, exits etc. The list goes on an on.
Each user of a mud is an object that intracts with the system. An user object may have a race and profession, e.g. a troll fighter.
Architecture
A mud consists of two parts. Client and a server. Server has the interpreter and stores the objects, whereas the client takes care of the presentation and user interaction.
When the server is started, it reads the initial state of the objects and starts to listen for the client requests. Clients open telnet sessions and start to interact with the server.
Programming a mud game
The most difficult thing in a mud is to define the class hierarchy. That is, it needs a good planning and ideas to build the game. But the programming part is easy once you get the grab of it.
A programmer is called a wizard. Wizard creates objects and defines the contents. In some mud's you do not have to shut the server process down in order to make modifications.
All mud objects are programmed with an object oriented c++ derivative.
Traditional Mud's
How does the traditional mud differ from JavaMud
If you think about it, mud objects are programmed with c++ derivative. This language is similar to Java, so you might as wll use Java directly, if the server would support it.
So the real challence here is the server, not the client or building the mud game itself.
Architecture of a Mud server
Server object store is similar to an object database.
If the Java Interpreter would be used instead of the Mud language, the size and complexity of a mud server would significantly decrease. If an object database would be used instead of server object store, the object management could be left out.
In fact, most of the java server could be written with Java.
So what's this got to do with Jos ?
But Java is designed for clients, not for servers. A mud must have a master that would do the bookkeeping of the objects. In theory any client could be a master, but as soon as the number of users starts to grow, the trafic between clients would increase and slow down the system. Remember, all clients need to have a single view of chancing field of play.
Mud server would require services from Jos that could be part of the Jos itself. These parts would be beneficial not only for Mud, but also for the Jos.
Mud server requirements for Jos
Mud needs the following core facilities to get and set the following :
This could be used also for hot plugin device drivers.
I would suggest to really write it entirely in Java since that's what JOS is all about, isn't it?
--CarstenEckelmann 29-MAY-98