The three hardest things in C are: (1) keeping track of memory allocation, and (2) off-by-one errors.

January 2018

Covenant MUD login screen Ah, the start of a new year. It's usually hard to get anything accomplished in December because the holidays are a bit of a time-sink, but I think I managed to make reasonable progress (see January's Release Notes). And considering that I initially planned on starting this project in the spring, I'm well ahead of the game at this point.

One thing about coming back to the MUD after fifteen years—or longer; I'm not really sure—is that I have forgotten which features are new, and which are standard. For example, I made myself a ticket to re-implement the window exit type. A window is a special type of exit that you can't walk through, but you can look through a window and see into another room. There are actually only two windows in all of Tierceron right now but this seems like a building feature we want to take advantage of. Turns out that windows are standard SMAUG and have been for a very long time, so the ticket became verifying the window exit type. (Yep, still works. Check.)

On the other hand, I had convinced myself that an object's "full description" was a standard feature, but that one was our own invention. It baffles me that stock SMAUG doesn't have a standard field to hold what you see when you look at an object; ordinarily, in order to get a message other than 'You see nothing special', you have to define an 'extra' description with the same keywords as the base object. Really, every object should reward the player with some kind of description, and having a full description field set on every object makes this an easy requirement to fulfill. If I type look shorts I should see something interesting, even if it's something silly like, "Do you like shorts? They're super comfortable and easy to wear!"

Interactive objects continued to be a dominant theme among the recent changes—one of the features that differentiated us from other SMAUG MUDs of the period was the detail we built into our objects. I have reimplemented the banks—the banking system itself isn't terribly exciting, but it does take advantage of our furniture object type: if you want to interact with a teller, you have to stand at a window to complete your transaction. I have also restored the 'shelf' object type. Shelves are special container-like items that you can put things on or in. If you look at a shelf, you can see its contents at a casual glance without having to examine it more closely. A shelf can be a regular shelf, a bookcase, or even a display case. We can create a display case that is closed and locked so that players can see the contents of the case but can't get the items out unless they have the right key—sort of like a transparent treasure chest.

As we approached the end of 2017, I wanted to find a project that would lay the groundwork for future development, so I chose to remove all of the built-in auto-mapper code from our codebase. The server-side mapper was ugly and generated cluttered-up room descriptions so I don't feel terribly badly about losing this feature. Players who want auto-mapping can always choose to connect with one of the well-supported MUD clients; client-side mappers do a better job than SmaugFUSS anyway. The real concern, though, is that the existing mapper code would cause conflicts with our RealSpace maps. If I could point to the one feature that really made us stand out, it was the RealSpace "overland" system that created a wilderness environment between zones. It's a huge project, but I should be able to start reimplementing pieces of RealSpace code this coming month. I am looking forward to writing more about RealSpace in my next update—it's a pretty cool feature and worthy of our time and attention.