disinterest.org - Sorrows mudlib 2.x
Please consider donating if you use anything I have worked on.

This a a collection of code written in LPC to be run within the MudOS driver, as a mudlib.

As a derivative of pre-existing work, the Sorrows 1.x mudlib inherited the design decisions and limitations of its ancestor. The goal behind the Sorrows 2.x mudlib, was to start again, but from the ground up this time. We wanted to include some of our more advanced systems at a lower, more comprehensive level. And we wanted to implement some new and interesting game features, also as a natural part of any game built on top of the mudlib.

A selection of features are described below. The downloadable version is not the latest version of the mudlib, but it is the latest packaged release I could find.

Download: sorrows-2.1.7z (361 KB)
Feature Description
Object decomposition system The world is not made up of solid objects. A sword is not a sword, it is a combination of parts that have been constructed into a sword. We wanted every object within our MUD to be defined in terms of its materials and parts, so that it could be broken down and reconstructed, perhaps with its parts used for some other purpose, or replaced as they broke.
Recognition system In Sorrows 1.x, the player's character was described by the name they chose when they created it. We wanted to go with a different approach, that was otherwise considered somewhat niche at the time. That is, whomever you meet does not see your name, but rather your description. You can introduce yourself to them, or they can remember and interact with you as whatever they choose to label you.
Custom parser In Sorrows 1.x, we used a naive approach where every command parsed the arguments provided to it in a custom way. We wanted a more dynamic system, and we obtained a new parser.
3D world The room-based model imposed a certain experience upon the player, and also the content which could be placed within the game. We wanted a data-driven world, where instead of the world being defined within game code, it was defined in such a way that new and interesting dynamic systems could process and deal with it. For this reason, we implemented a system where the world was defined using polygons. VRML files describing the world can be generated on demand and served through the integrated web server.
Parsed defines This is described on the Sorrows 1.x page. It and the domain specific language both feature in this new mudlib.
Stacked security This is described on the Sorrows 1.x page and in the documentation file linked further down this page.
File Description
changelog.txt A partial list of the changes made to the mudlib over time.
character_history_log.txt A design document for how character creation was intended to work.
directory_structure.txt How the files within the mudlib are laid out, and why.
global_defines.txt The custom use which has been made of global defines, and how they should be named given their purpose.
security_system.txt How the stacked security system works, and how the privileges system works.
web_server.txt How the integrated web server works.