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 login
  CVS password: (press return)
  $ cvs -d co den

What It Is

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.

How to use it

rune -cpa src/ src/org/cubik/den/boot/den.e-awt

First run:
-save <filename> <yourNickname>
Further runs:
-restore <filename>
-once <yourNickname>

(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 rune.)

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 org/cubik/den/ui/makeCommandInterpreter.emaker.))

Setting up cross-vat travel:

  1. In the inspector window, select “Sturdy Entrance” from the “Make” menu. Choose the room which it will lead to, the name by which it will be known for later editing, and the message shown in that room when something arrives through it. Click Create.
  2. Copy the cap:// URI in the resulting window and save it—it will not be retrievable again (this needs fixing).
  3. In the other world/vat/Den-instance, select “Exit” from the “Make” menu. Choose the room in which it will be placed, the name in that room, and the message when something uses that exit. Select “Far” and paste in the cap:// URI from step 2. Click Create.

Repeat the above procedure to create an exit for the other direction.