Domain Knowledge

A domain is an area, typically thought as owned by someone or something. The domain knowledge of an application is the knowledge area that you need to own to write that kind of application, kind of the software's own territory.

A MUD server covers several conceptual domains. You need to be able to keep track of the state of the game. You need to accept input from TCP sockets. You need to accept usernames and passwords.

The data of the game could be stored in a database. Perhaps using a specially designed DB like MySQL would be overkill. Data should be stored in a Lisp readable format. People who build the MUD should be provided with simple tools to help them along, but knowledge of Lisp should be the result of programming it for a long time.

TCP/IP is usually handled by special libraries. I may decide to use the fairly portable SLIB libraries to handle TCP/IP. Not sure exactly how this works.

Handling multiple connections simultaneously may be a bit tricky to learn. For one thing, we don't want to send an interrupt to the CPU every time one of the users types a character. (Some systems do this.) That means we should queue up these real-time events and execute them, block-like rather than stream-like. Another thing will be keeping track of what everyone does and making sure it all goes through smoothly.

I'll also want to cook up a sample world to inspire people with the goodness of my server program. People are more likely to like the server if the world in it is exceptional.

Another thing will be to come up with a permissions system, builder/coder/admin flags, that sort of thing. Resource quotas. Safe Scheme evaluation.

Knowledge of Scheme itself is vital to coding this server. has some links to some resources if you are looking for them. There are a lot of implementations, each of which handles things slightly differently on the low level. I'l like (if possible) to make this work on several implementations so nobody will feel discriminated against. We'll see how that works out. I know SLIB works on several of them.

Back to main page Logo