I’ve put together a distribution of the Second Contract mudlib (SC-0.131250). It’s so basic that you can’t do much more than build it and see that it lets you create a minimal character in a single room with no details. I wanted to get something out at this point for several reasons: it gave me something to work towards, you don’t have to take my word that I’m making progress, and now I have a framework in place for making future releases.
The distribution consists of a checkout of the DGD github repo, the (networked) Kernel Lib github repo, and the Second Contract github repo all suitably arranged to allow easy bootstrapping. I’m using the network extensions now so I can make sure everything will work when I add intermud chat.
Mudlib versions are date based: M.yydddn where M is the major version number (0 for the foreseeable future), yy is the two-digit year (13 for 2013), ddd is the three-digit day of the year, and n is a minor version number used to distinguish releases on the same day. So any version which starts with 0.13 is from 2013, 0.14… is from 2014, etc. Higher numbers are newer releases. If I put out a test release, I’ll mark it as such with a sensible suffix.
What’s in this distribution?
This is just enough to illustrate a game that can boot and have a character floating in an empty scene. Multiple characters can log in, and they will see each other “looking”, but won’t otherwise see each other in the game unless they use the “%who” command to see which characters are active in the game. There’s even some debug output when you “look.”
The README has instructions for getting everything up and running, including which ports to log in to for which types of accounts and access.
Game accounts made through the telnet port are not visible to the Kernel lib as regular users that can be made creators or otherwise able to log in to the binary port. The two are completely separate. Game accounts may have up to five characters associated with them. You can choose which character to play when you log in, and you can only have one character in play at a time.
Note that you should not use this code as the base for a game yet. There’s a lot of unfinished stuff lying around and I’m not going to bother with writing upgrade functions for objects until I get closer to something that is workable as a game. If you play with this distribution, be ready to throw everything away and start over when I release a new distribution.
You should pass the web interface used to manage the game through a proxy of some kind that can wrap it in TLS/SSL for security. The http service in the game is good enough to work with a browser running on the same system, but I haven’t tried to make it handle all the malformed requests that can come in the wild. I depend on a proxy for that.
Besides getting more game systems up and running (such as quest generation), I need to flesh out the web interface to allow editing of details, placement of landmarks, paths, and scenes in terrains, verb handling (including multi-word verbs like “look at,” “turn on,” and “turn off”), and create verbs and actions for moving between scenes or scene details.