Teraum's MUD Stack

In this post I'd like to explain the “MUD stack” behind Teraum, what each one is as a project and how they relate.

Teraum is a MUD server running the Racket-MUD engine loaded with the RPG-Basics library and a custom map.

Phew! Lot of terms.

There's our generic terms.

Under-the-hood, the engine is just a procedure for handling the scheduling and sequential calling of events, another type of procedure for manipulating the state of the game world. When the engine is made, it's usually passed a list of events to call when it first starts. For example, Racket-MUD comes bundled with events for creating, loading, and saving user accounts, managing intra-engine user chat channels, and running the socket server to which those users will connect.

A library is a similar bundle of events. The RPG-Basics library currently provides events that load the world map and set up the ability for those created things to randomly act.

In practice, starting the MUD is done with the following line of Racket:

(run-engine
 (make-engine "Teraum"
  (list (accounts)
        (mudsocket)
        (talker)
        (actions)
        (mudmap teraum-map))))

As Teraum increases in sophistication, the number of events passed when the engine is made will steadily increase, but the basic concept is there: pass a list of procedures to the engine to serve as the first events.

In follow-up posts, I plan on explaining how each of these events work, and providing a more thorough explanation of what making an engine actually means. Also, what goes into the teraum-map: how are in-game things represented, as source code.