Muds and teaching programming to children.

Today’s post will seem a bit off topic from the usual technology related topics, but I also do work on game designs, both for the computer and traditional board games. I also have a twelve year old son who wants to learn something about what I do all day.

A long time ago, I worked on “muds”. Muds (a.k.a. Multi User Dungeons) are the text based precursor to the current graphical games such as Everquest and World of Warcraft. Being text based, they were cheap and easy to host and could be created and extended by mere mortals instead of the massive development houses required to create a modern graphical world. Many popular muds continue to exist to this day. (Realms of Despair, one of the classics, still has hundreds and hundreds of users online at any given time).

The codebase (core code that we modified to taste) that we used was SMAUG. Sadly, our specific mud shut down due to a lover’s spat between the two who started it. (This is a risk you take when you can “do it yourself” instead of having a massive development house.) I still have the modified code though, and use it as an interesting way to teach advanced C coding techniques, specifically network socket handling and pseudo object oriented coding (i.e., how to create modular, object oriented code in a language without native support for it.)

Recently this code has come back out as I was looking for ways to teach my son about programming. I won’t be using SMAUG directly (I have found better tools that operate at a higher level of abstraction), but my son wants to learn how to code a role playing game.

It may appear that coding such a project would be of little educational value: however it turns out that the considerations for such a project are quite considerable. First, it is critical to do proper design up front, as in any large project. Second, it involves many of the same considerations that a more traditional (and to a twelve year old, boring) program will address: user interface, internal data structures, persistent data storage being just a few of them. Additionally, the mathmatics behind a role playing game system is non-trivial and yet not so complex as to be beyond his reach.

Before we can tackle such considerations, however, I need to teach him the basics of programming. My next post will cover a wonderful piece of code that I have found that will allow me to do just that without overwhelming him with a modern development environment’s overhead and complexity.

Category: