Skip to Content

2020-07-15 Wednesday: Firming up Racket-MUD's lexicon

2020-07-15 Wednesday: Firming up Racket-MUD's lexicon is a(n) log

it is about Racket MUD, MUD, and Racket

it was released on Jul 15, 2020

Since my last log about Racket-MUD, I've been splitting up the code segments into more manageable chunks, and started writing about various components. (I also found some older logs I wrote back when I was first writing the engine, which have been useful reminders.)

At the same time, I've been tinkering with the code for the Teraum MUD, which is the flagship MUD being written for Racket-MUD, doing basically the same thing: reorganizing chunks to get a better feel for how the parts actually relate. The two tinkerings have made one thing very clear: the language of Racket-MUD could use some work.

That is, the technical jargon that relates to the MUD engine's concepts aren't well defined, and some concepts don't have terms to refer to them yet. Sometimes this is because the MUD's operations have changed under the hood, so old language is inaccurate now, and other times concepts were created and implemented without ever being explicitly referred to. (For example, what's a “recipe”, what's a “thing”? What's the instanced thing inside the MUD engine - is that the “thing,” and the code that the engine uses called something else?)

Below I'm going to work up a rough dictionary of the precise terms I've been using for Racket-MUD, to start using when I go forward with documentation.

  • Engine
    • 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.
  • Event
    • An event is a procedure that examines or manipulates the MUD server's state.
  • Library
    • A library is a collection of events that add features to the engine.
  • Qualities
    • Qualities are the attributes that things have, giving them distinction and function: mass, contents, color, might all be qualities.
  • Racket-MUD
    • Racket-MUD is a MUD engine written in Racket.
  • Recipe
    • A recipe is a procedure to make a thing of certain qualities, which typically accepts multiple keyword arguments that correspond to the qualities and their values that the thing being made will have. The recipe procedure returns a procedure which accepts a procedure as an argument, to which it passes the keyword arguments and values provided originally, after modifying them if appropriate. The procedure passed to the procedure returned by the recipe procedure is assumed to be the Racket-MUD engine's maker procedure, which “makes” things within the MUD server.
  • RPG Basics
    • RPG-Basics is the first MUD library being written for the Racket-MUD engine, coming with events for adding role-playing game components to the engine.
  • Scheduler
    • The scheduler is a special procedure which adds events to a MUD server's queue, to be processed during the next tick.
  • Server
    • A MUD server is a specific instance of the Racket-MUD engine running. Teraum-MUD is a MUD server running the Racket-MUD engine with the RPG-Basics library to host a fantasy world.
  • State
    • The MUD state is a complete record of the information about a running MUD server, including scheduled events, known hooks, and made things.
  • Template
    • A template is a call to a recipe procedure, complete with all the arguments to make a complete thing. For example, the game world might exist as a series of templates calling an “area” recipe, each template providing different arguments to the name and exits argument of the recipe, which correspond to those qualities.
  • Teraum MUD
    • Teraum MUD is a MUD server running the Racket-MUD engine loaded with the RPG-Basics library.
  • Thing
    • A thing is a representation of something inside a server running the Racket-MUD engine. Things have qualities, which define their attributes, like whether they have mass, or color, or sharpness or health or whatever is appropriate for that type of thing.

The biggest - perhaps only - change I can see from this relative to past notes, is that “recipes” and “things” are a bit more precise, with “templates” filling in the new gap between their definitions. Things are sometimes made from templates, which use recipes to define the potential thing's qualities.

That's enough to get me past my current block in sorting and renaming and documenting the engine and other bits of code, so, wonderful!