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.
A MUD server is a single MUD, running somewhere. Folk can connect to it, create accounts, and do whatever that server allows.
A MUD engine is a piece of software that provides the game engine for running a MUD server. It usually doesn't come with too many game-like features itself, usually focused around providing connectivity and utilities.
A MUD library is a collection of code meant to be added into a *MUD engine to extend its features.
There's our generic terms.
Racket-MUD is a MUD engine that's made by the same people who are making Teraum. It's written in the Racket programming language. It's about two hours older than the Teraum MUD, so is also in the very early stages of development.
RPG-Basics is a MUD library that's being made by us same folk who are making Teraum and Racket-MUD. It's the first library being made for Racket-MUD, and as such, its code isn't well-segregated from the engine.
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.