Shadow World design introduction

In this first post about Shadow World I will list some of the initial design decisions I have already made for the MUD.

The main goal of the Shadow World MUD server is flexibility, it should be able to handle any kind of MUD from simple and old-fashioned text-only MUDs, to somewhat modern-looking graphical online RPGs (though not massive).

  • The MUD will be split into a server and a library part. The server part is the actual server program that handles connections as interfaces with the users and the library. The library is the part that defines the world of the MUD.
  • The server will be written in C++, using the latest C++11 features whenever possible. Will use Boost for features not yet in the C++ standard.
  • The server will have built in handling of the Telnet protocol, with some support for common MUD extensions like MCCP and MXP, and maybe others.
  • For other protocols, it should be possible to write protocol handling in the library.
  • The library will be written in an object-oriented programming language. It's not yet decided if it will be an existing (like Python or Lua) or a custom language. I'm leaning towards a custom language.
  • The library should handle as much as possible, and let the server just handle the actual communication/connection handling, database handling and compilation/interpretation of the library code.
  • Unlike other similar server/library architectures (like LPMUD and variants) the library will not be source files that are read when needed.
  • The library will be stored in a key/value storage.
  • All data (including but not limited to source, compiled code, objects, object properties, users) will be stored in this database.
  • All data in the database should be modifiable through commands in the MUD.
  • Since the library can be able to handle communication protocols, it should be possible to create custom clients talking to the MUD through custom protocols.
  • Because custom protocols are possible, it will also be possible to create graphical MUDs.

Shadow World will also be the name of the actual playable MUD I will be creating. Parts of this will be made to showcase the flexibility of the server, and serve as a base for others to build on. However I will still do posts discussing the development of the library and its system (classes, fight rules, monsters, back-story etc.) as much as possible. While I will not provide the actual game source for Shadow World, it will use the same base as  the public parts. I will also try to provide a couple of simple example games based on the base library, like a simple DikuMUD-like variant.

The license for both the server and the base library will be the BSD three-clause license.

Leave a comment