A "new stock" for a classic MUD, updated for a new(ish) millennium
Report Bug
·
Request Feature
Table of Contents
The last official release of Rivers of MUD II (ROM) was 2.4b6, circa 1998. It has been the basis of countless other MUDs over the last couple decades. Over those years, however, it has gotten increasingly more difficult to build with modern compilers without numorous errors and warnings. This project aims to be a viable starting point for future MUDs by updating the code base to modern standards.
Mud98 has the following improvements:
- ROM 2.4b6 base with Lope's ColoUr and OLC 2.1.
- Cross-platform compilation with CMake.
- Builds without errors or warnings in GCC, Clang, MSVC, and Cygwin.
- Compiles with
-Wall -Werror -Wextra -pedantic.
- Compiles with
- Continuing implementation of modern C (including newer C standards).
- Secure telnet with TLS and password digests provided by OpenSSL.
- User-defined, shareable color themes.
Other than the improvements listed above, Mud98 intends to be true to the spirit of the original ROM as possible; to be a tabula rasa on which other, more modern MUD's can be built.
Here are some of the novel improvements to Mud98 over stock ROM:
OpenSSL provides secure sockets to Mud98. You can configure Mud98 to run TLS in tandem with clear-text telnet, or by itself.
Mud98 implements the MUD Client Compression Protocol (MCCP2 & MCCP3), the MUD Server State Protocol (MSSP), and the MUD Server Data Protocol (MSDP) through Scandum's MUD Telopt Handler (MTH). GMCP is also implemented.
Most settings in Mud98 can be configured in mud98.cfg, which resides in the root folder. This includes telnet/TLS settings, MCCP/MSDP/MSSP settings, file settings, and a growing list of gameplay customization options.
Part of an on-going effort, Mud98 applies "modern" C best practices to ROM's legacy C code. This is a multi-prong effort:
- Reorganization for smaller, focused code files with an eye toward Single Responsibility Principle.
- Scrupulous application of more constistent (though admittedly opinionated) naming, syntax, and structure.
- Removal of legacy code that is unlikely to ever see usage on modern systems.
Mud98 adds a class editor (cedit) to OLC 2 for ROM. Future plans are to expand on this and add more features editable via OLC.
Players can create new color themes and share them publicly with other players. Mud98 supports traditional ANSI, extended 256 color, and 24-bit true color. True color support covers both standard SGR format (Mudlet) and xterm format (TinTin++).
Mud98 has a robust quest system that is tightly integrated with Mob Progs and OLC. Unlike earlier quest systems for ROM, this is a zero-code solution that can be built along with the areas they belong to.
In Mud98, you can designate whole areas as multiple-instance, which in the parlance of MMORPGs means that players (and their parties) who enter the zone are playing in their own sandbox. This is useful for low-competition starting zones, chatty story-bound NPC's, and whole dungeons spun up just for the player and their friends.
You can build and run Mud98 on virtually any desktop or server platform.
The following libraries and utilities are required to build Mud98:
- CMake 3.12 or higher.
- Pthreads (Linux, Cygwin)
The following are optional, but highly recommended:
- OpenSSL 3.x+.
- Required for TLS server capability.
- A certificate signed by a legitimate Certificate Authority (if you don't want users getting warnings about self-signed certificates).
- ZLib (for MCCP).
See the Getting Started guide for in-depth information on how to build on the platform of your choosing.
Once Mud98 is built, it can be run from the command-line like so:
./Mud98Use the -d argument to specify the folder to mud98.cfg if you don't run it from the base folder.
Please, please feel free to add this project. Or take it and do something completely different with it. ROM was responsible for my learning to love code in my youth, and I believe it yet has more to teach. Make it your own!
How to contribute:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the Diku, Merc, and ROM licenses. See LICENSE.txt for more information. I make no assumptions as to their enforceability (or even the feasability of compliance); use at your own risk.
Brandon Felger - bfelger@gmail.com
Project Link: https://github.com/bfelger/Mud98