tkMOO-light .. Other stuff

Some XMCP/1.1 applications, for use with tkMOO-light

I use the term application here to refer to some optional extension to the client which goes towards making it more useful. Some of these applications can be seen demonstrated in a simple walkthru. All of the MOO code accesible from this page can now be used without need for modification on JHCore and LambdaCore MOOs.

All of the XMCP/1.1 application objects require the XMCP/1.1 driver and feature object to be installed in the same MOO.


One of tkMOO-light's special features a drag and drop desktop representation of the MOO. Player's inventory (or contents of rooms etc) represented by coloured icons which may be dragged to other open desktops. Pick up a text object, drag it to a folder and drop it, command is sent to the MOO to move the objects and the desktop is updated, just like typing "put notes in folder". Several different icons represent different types of object. folders, notes, whiteboards, rooms, players, general objects.

The client relies upon a suite of objects on the MOO which, in turn, communicate with the client using XMCP/1.1.


tkMOO-light's whiteboards allow several people to share the same drawing, using the MOO to ensure that the separate clients are kept up to date. Basic graphical forms are provided and a range of colours. Whiteboards can be used interractively to assist in the presentation of ideas.

The client relies upon a suite of objects on the MOO which, in turn, communicate with the client using XMCP/1.1.

A Simple Object Browser

The Browser Screen The Object Browser displays the inheritance tree for objects in the MOO database. Each object number is a hyperlink in blue which expands the inheritance tree below the selected generic object. Clicking on a link causes the client to invoke a short MOO program which delivers data back to the client and which is used to build the new display. The client has a simple caching mechanism so that once a link has been selected any subsequent clicks on that link will recover information from the cache.

Experimental Mail Reader Application

The Mail Reader This is a first-pass at trying to understand what would be needed to build a GUI to the MOO mail system on JHCore. The GUI takes the form of 3 scrollable windows, at the top is the list of folders that the player can subscribe to, in the middle is the list of messages in the selected folder and at the bottom is the selected message.

Experimental Chess Game Application

The Two-Player Chess Board This is an attempt to understand what it takes to make the client support a useful game of chess (short of remote controlling an xchess session!). The result is about 300 lines of Tcl and 200 lines of MOO code. The Tcl code provides the interface between tkMOO-light's XMCP/1.1 module and the stateless chess client. The MOO code provides the only persistant state for the game, the client's internal state is entirely reset with each request from the server to update the board. This approach also greatly simplifies the client code.

Experimental @who Widget

The Who Widget The @who widget is designed to receive XMCP/1.1 messages from a MOO server comprising a list of lines, with each line of data holding the name, idle time and location name for each connected user. The MOO isn't required to do any costly sorting or formatting of the data. The client takes the data and performs all the necessary formatting and assigns colours to indicate the degree of user activity.