Continuum Logo SourceForge.net Logo


DiamondMUD: FAQ

1 Basic Questions
1.1 What is DiamondMUD?
1.2 Why is it called DiamondMUD?
1.3 Who or what is the Continuum?
2 Technical Questions
2.1 Why is DiamondMUD written in Java?
2.2 I am confused: multiple inheritance with Java?
2.3 I want more information.


1 Basic Questions

1.1 What is DiamondMUD?

DiamondMUD is a pure MUD core, with no notion whatsoever of combat, skills, races, or guilds. Its key features are:

1.2 Why is it called DiamondMUD?

The name originated from my early design goal, to support diamond-shaped inheritance, which is foreign to languages like Java and C#. Also, I was reading Neil Stephenson's The Diamond Age while designing the core concepts for the MUD, a science fiction book set in a near nanotechnological future. Other (coincidental) reasons are some properties of diamonds: persistent, timeless, mutli-faceted, highly structured.

1.3 Who or what is the Continuum?

The Continuum was founded as an organization to stabilize the world in 1998. Later it was realized that the Continuum was in fact not an organization, and also not founded in 1998. The Continuum is timeless and exists independently of any members. Today, only two manifest entities of the Continuum are known to me: Harry Propane, a mighty pirate, and myself. It could also be argued, that the Continuum is made up of at least another 6 billion entities, but presently this is pure speculation.

2 Technical Questions

2.1 Why is DiamondMUD written in Java?

This was a difficult decision. While C++ is my language of choice, the dynamic loading of code would necessarily have been platform-dependent. I also evaluated Python, which seemed a very promising candidate. But after a while I had to discover, that I didn't find a way to prevent direct access from the __dict__, which rendered all attempts at making the MUD hack-proof useless. Object-based languages would have been the obvious way to go, but unfortunately they are so unpopular, that their future is at best uncertain. C# was out of the race, because I do not believe that .NET code will be well supported on other platforms than Windows any time in the near future. Also, in direct comparison to Java, C# loses when it comes to the flexibility of the class loader.

2.2 I am confused: multiple inheritance with Java?

The catch is, I am totally abusing the Java language. The core defines several standard types, which cannot be extended. The most important type is object. It is important to understand the two levels of code: the core itself is written in class-based Java. But in user code, code written by a MUD implementor, there is no notion of a class. Everything is an instance, and some instances serve as prototypes. An object can reference any number of prototypes. Inheritance may be the wrong word in this context, delegation is the more appropriate term.

2.3 I want more information.

I am currently writing a document, explaining the architectural concepts in great detail. But since the project is in an early development stage this document is very much subject to change, as is the code that is publicly available at SourceForge (many core classes are already checked in to CVS, but I don't expect any particular code line to make it to the final version). Nevertheless, here is the link to more documentation.


Valid XHTML 1.0!