I began the month intending to write 50,000 words. I got a bit past 5,000 and then got sidetracked by another project. I shouldn't be surprised. This is how it's been in the past.
From the title, you might guess that the distraction was a game, and you'd be right. But I didn't get sidetracked playing a game. Instead, I've been sidetracked creating a game. It's one I've been working on now and again over the last few years, but I'm diving back in using my research day, evenings, and weekends to get enough stuff together that I can show it off at THATCamp Games near the end of January.
I might not be getting the 50,000 words done, but I am doing a lot of creating. At least I'm keeping within the spirit of the month.
I'm using the MUD as a way to explore interactive fiction. I'm hoping to teach a course eventually in which the students will spend the semester exploring how games such as MUDs work by playing the game and creating an area. Graphical games are a bit complex in all the wrong ways to get everything done in a single semester. They also don't offer as rich an experience as text-based games.
If you've ever played World of Warcraft, you'll notice how constrained you are when interacting with the world. The design hides it well because almost everything you can do with a mouse and a click will result in something happening, but everything is constrained. At every point in which you interact with the world, everything is scripted. You might have a few choices, but they are very few.
A game that uses text as its medium of interaction can (but doesn't have to) offer a much wider range of possibilities. While the number of commands in any game is finite, they can be sufficiently complex and regular that it's harder to hit against the boundaries.
The first system I encountered in building a game was LPC and the world of LPMuds. These tend to consist of a driver that manages the system resources (the player connections, coordinating execution of actions, managing inventory), a mudlib that provides the basic building blocks for the game (basic rooms, objects, NPCs), and the game itself. The LPC driver is event driven in the same sense as NodeJS.
I'm building the game using the Dead Souls mudlib because it provides a way for you to create new things in the game without having to do any programming and also allows you to see all of the game logic at the appropriate level of abstraction. I'm incorporating some ideas from the Discworld mudlib (e.g., skill trees, continuous media) and making some other changes that I hope will make for a more interesting game.
Feel free to follow the game development. I hope to be open for a small number of alpha testers at the end of January. If you'd like to try it out, drop me an email at jgsmith at gmail.spam.com (taking out the spam).