A distributed mud system written in the E language.
Den currently runs on E 0.8.26h. It will not run on 0.8.25 or earlier, and cannot be persistent on 0.8.26g.
You can download an archive of the current source code, or use anonymous CVS:
$ cvs -d :pserver:firstname.lastname@example.org:/home/den/cvsroot login CVS password: (press return) $ cvs -d :pserver:email@example.com:/home/den/cvsroot co den
Den is/will be a peer-to-peer MUD system, theoretically supporting mutual suspicion between parts of its world.
Den's world model is currently room-based, insofar as it cares. I hope to eventually support coordinate systems and graphical UI—possibly losing the text UI—but not yet.
Den is definitely not useful or ‘interesting’ (other than being written in E, perhaps) yet. It is only an experiment in using E. It may or may not eventually become something more widely useful.
rune -cpa src/ src/org/cubik/den/boot/den.e-awt
(You may need to increase the JVM's maximum heap or stack size. For Mac OS X, specify -J-Xmx500m -J-XX:ThreadStackSize=10240 before the other arguments to
Two windows will be opened.
The first is the inspector, which crudely lets you manipulate the object graph. The
<world> object has a name
=> object mapping for convenience in accessing important objects. Due to the inspector UI being constructed by the objects being inspected, it currently does not support inspecting objects which are suspicious of their clients. I have ideas about how to fix this; input would be welcome.
A checkpoint will be performed when the inspector window is closed (which also stops the program), or via the “Save” command in the World menu.
The second is the terminal, with which you control a character in text-mud style.
(The default world's “
in” exit is a locked door, and to go through it you need to use the command “go 'in' with key”. (I need to write some documentation for the commands—for now, see
cap://URI in the resulting window and save it—it will not be retrievable again (this needs fixing).
cap://URI from step 2. Click Create.
Repeat the above procedure to create an exit for the other direction.