Comparisons

ROM 2.4 vs C vs Merc

ROM (Rivers of Mud) 2.4 remains a foundational Diku/Merc derivative, but developers face critical decisions when selecting a variant for modern deployment. This comparison evaluates four realistic paths: maintaining stock ROM for authenticity, adopting SmaugFUSS for active maintenance, using QuickMUD for immediate builder tools, or selecting community-patched versions for containerized infrastructure. Each option presents distinct trade-offs in compilation requirements, memory safety, and customization complexity.

ROM 2.4 vs C vs Merc hero illustration

Stock ROM 2.4

Original 1998 Diku/Merc derivative codebase

Best for: Purists maintaining legacy MUD behavior without modifications

SmaugFUSS

Actively maintained ROM descendant with modern fixes

Best for: Administrators needing long-term stability and security patches

www.smaug.org/

QuickMUD

ROM 2.4 with pre-integrated OLC and compatibility patches

Best for: Builders requiring immediate in-game area editing capability

Community-Patched ROM

ROM 2.4 with 64-bit and GCC 10+ compatibility fixes

Best for: DevOps deployment on contemporary cloud infrastructure

CriterionStock ROM 2.4SmaugFUSSQuickMUDCommunity-Patched ROMWinner

Modern Compiler Support

Ability to compile with GCC 10+ and Clang 14+ without extensive Makefile modifications

Requires GCC 4.8 or older; fails on modern systems without -fcommon flag and multiple warning suppressionsNative support for GCC 11+ and Clang 14+; clean compilation with -Wall -WerrorSupports GCC 9+ with minor Makefile adjustments; requires -Wno-stringop-truncationModified for GCC 10+; explicit pointer casts added for 64-bit compatibilitySmaugFUSS

64-bit Architecture Safety

Code cleanliness regarding pointer sizes and integer types on 64-bit systems

Pointer truncation issues in act_wiz.c and db.c; implicit int-to-pointer conversions cause crashesFull 64-bit clean code; explicit intptr_t usage throughoutMostly clean; some explicit casts required in descriptor handlingAudited for 64-bit; sizeof() checks added to allocation routinesSmaugFUSS

Memory Safety Posture

Resistance to buffer overflows and string handling vulnerabilities

Vulnerable to buffer overflows; extensive strcpy usage without bounds checkingFixed buffer overflows; uses strncpy and custom string functions with length validationPatches common overflows in player input handling; strcpy still present in legacy areasOngoing fixes; strcpy replaced with strncpy in critical paths via sed scriptsSmaugFUSS

Online Creation Tools

Availability of in-game area editing (OLC) without additional patching

Not included; requires manual application of OLC 2.0 patch with merge conflictsBuilt-in OLC v2.0+ with advanced room/object/mobile editing and reset commandsPre-integrated ROM OLC 2.0; immediate building capability after startupOLC available as git branch; requires manual mergeQuickMUD

Area Format Compatibility

Support for standard ROM .are files and migration capabilities

Native .are files only; no extended format supportExtended SMAUG format with backward compatibility; conversion tools for ROM areas providedStandard ROM format; creates files compatible with stock ROMStandard ROM format; some forks support SMAUG import via conversion scriptsStock ROM 2.4

Class and Race Customization

Complexity of modifying player classes and races

Hardcoded in C structs; requires recompilation and full reboot for changesSoftcoded via tables; runtime modification possible with copyoverStock ROM hardcoding; some softcoding via snippet integrationHardcoded but with refactored source organization for easier editingSmaugFUSS

Debugging Support

Compatibility with GDB, Valgrind, and modern IDE debugging

Standard GDB support; no debug symbols by default; Valgrind shows numerous leaksEnhanced GDB support with -DDEBUG flag; Valgrind-clean memory managementStandard GDB; some symbol issues resolved; Valgrind shows reduced leaksModernized for GDB 8+; debug symbols enabled in MakefileSmaugFUSS

Container Deployment

Availability of Dockerfiles and container orchestration support

Manual Dockerfile creation required; depends on deprecated Ubuntu 14.04 imagesCommunity Dockerfiles available; multi-stage builds for Alpine LinuxBasic Dockerfile in repository; Ubuntu 20.04 baseOfficial Dockerfile with docker-compose.yml; CI/CD pipeline examplesCommunity-Patched ROM

Security Patch Availability

Access to security fixes for known vulnerabilities

No active maintenance; manual backporting from Smaug requiredActive maintenance; CVE patches applied within weeksCommunity patches merged; irregular update scheduleGitHub issues tracked; PRs accepted for fixes but no SLASmaugFUSS

Documentation Completeness

Availability of setup guides, API documentation, and troubleshooting resources

Original text files; fragmented across mudbytes.net archivesComprehensive SMAUG manual; active forums at smaug.orgQuickMUD README plus ROM documentation; GitHub issues used for Q&AWiki-based documentation; inline code comments modernizedSmaugFUSS

Migration Effort from Stock

Work required to move from stock ROM 2.4 to this variant

N/A (baseline)Medium effort; requires area conversion and adapting to softcoded systemsLow effort; drop-in replacement; startup scripts compatibleLow effort; git pull updates available; Makefile changes required

Our Verdict

Stock ROM 2.4 requires significant maintenance overhead for modern deployment but preserves exact legacy behavior. SmaugFUSS offers the most sustainable path for new projects requiring active maintenance and modern tooling. QuickMUD provides the fastest path to operational status for builder-heavy projects. Community-patched ROMs suit specific infrastructure requirements but lack centralized maintenance guarantees. Selection depends on whether the priority is authenticity (Stock), long-term viability (SmaugFUSS), immediate functionality (QuickMUD), or DevOps integration (Community-Patched).

Use-Case Recommendations

Scenario: Preserving a 1990s ROM MUD exactly as it was

Stock ROM 2.4

Only option guaranteeing original Diku/Merc inheritance behavior and stock area compatibility without conversion risks or behavioral drift.

Scenario: Launching new MUD with limited C coding experience

SmaugFUSS

Provides modern build system, active security maintenance, and softcoded class/race tables reducing need for recompilation on every change.

Scenario: Enabling builders to create zones without coder assistance

QuickMUD

Pre-integrated OLC allows immediate in-game area creation using familiar ROM format without manual patch application or build interruptions.

Scenario: Running on modern cloud VPS with automated deployment

Community-Patched ROM

Provides maintained Dockerfile and modernized Makefile for CI/CD pipelines while preserving exact ROM mechanics without Smaug's extended format requirements.

Scenario: Heavy customization of combat system and skills

SmaugFUSS

Modular skill system and cleaner C code structure support extensive modifications better than tightly-coupled stock ROM where combat is deeply embedded in act_combat.c.