LMud

Introduction

LMud is a Multi-User Dungeon (MUD) implemented in Common Lisp. It is both a MUD server and a vanilla MUD game implemented atop the server. It is written entirely in Common Lisp, and relies extensively on the Common Lisp Object System (CLOS) and the two major features of generic function based polymorphic method dispatch and multiple inheritance. It requires a threading system provided by the underlying Common Lisp implementation, as well as a TCP/IP sockets interface. It is designed for Unix-based Lisp systems but could probably be ported to non-Unix Lisps without an extraordinary amount of effort.

Although that previous paragraph sounds very inviting the truth is that LMud is nowhere near ready for playing, much less actual public use. It’s not even playable at all yet, since the command processing stuff isn’t finished. However it is under active development. Please join the LMud-devel mailing list (see below) if you’re interested in helping. I’d absolutely love help on some random part of the system, even if it is as mundane as adding user commands.

The working system will have your usual MUD interface, a prompt where you type such exciting commands as “go north” and “eat mushroom” and “cast ICBM at Moscow”. The command processor is based on that described for CLIM, modified somewhat for use in a nongraphical environment. The command line will use something like CL-Ncurses and Linedit to provide a pleasurable experience to the extent that the client terminal allows it. It will also include a simple interface (ie, single server, chat only interface) to IRC where the player can partake in IRC discussions in a room within the MUD. Creator characters will also have access to a Lisp listener from within the MUD to poke at system internals and add and modify objects and code. The MUD will be persistent, savable into an object database which can then be reloaded and started in another session.

Initially the prototype MUD will have to be developed in ‘pure’ CLOS, although eventually the hope is to have a set of defining macros that wrap up all the messy details (inheritance, locking, etc) within an easy interface for implementing and extending basic MUD objects. Naturally, some objects will require access to the MUD’s internals, but this should be minimized.

The basic structure of the MUD server can be broken down into four distinct components: Driver, Object Infrastructure, User Interface, and Game Implementation. Below is an outline of their design.

The outline above is not a true inheritance diagram because multiple inheritance is not represented. Eg, a magic weapon might be a light source if it emits some sort of visible radiation, and would thus inherit from both the class of weapons and the class of light sources. More facetiously, edible underwear would inherit from both the class of clothing and the class of food, thus supplying body covering (appearance), some measure of defense (against say cold temperature), and some amount of nutritional value (when eaten).

Also, the outline above will probably be moved to its own page soon and changed over time as the system develops.

Mailing Lists

Download

There are no released files yet. Please see the CVS repository.

CVS

You can browse the CVS repository or download the current development tree via anonymous CVS.

Back to Common-lisp.net.

Valid XHTML 1.1