Checklists

CircleMUD checklist for MUDs

This checklist provides a technical roadmap for transitioning a CircleMUD codebase from development to a production-ready environment, focusing on C source stability, zone file integrity, and server security.

CircleMUD checklist for MUDs hero illustration
Progress0 / 25 complete (0%)

Compilation and Environment

0/5
  • Modern GCC Compatibility

    critical

    Verify that the code compiles without errors on GCC 10+ by updating deprecated headers in sysdep.h and fixing 'format-security' warnings.

  • Crypt Library Linking

    critical

    Ensure the Makefile includes -lcrypt for password hashing, as modern Linux distributions have moved this to a standalone library.

  • Binary Stripping

    recommended

    Run 'strip circle' on the final executable to remove debugging symbols and reduce memory footprint before deployment.

  • Architecture-Specific Optimization

    recommended

    Set the -O2 or -O3 optimization flags in the Makefile to improve performance of the main loop and combat calculations.

  • Directory Structure Verification

    critical

    Confirm that lib/world, lib/etc, lib/plrobjs, and lib/plrvars directories exist and are writable by the MUD process.

Security and Access Control

0/5
  • Non-Root Execution

    critical

    Verify the MUD process is owned and executed by a dedicated 'mud' user rather than the root account.

  • Wizlock Level Configuration

    recommended

    Set the wizlock level to 1 during final configuration to prevent players from entering while staff perform final world resets.

  • Player File Permissions

    critical

    Set chmod 600 on all files in lib/plrobjs and lib/plrvars to prevent local users from reading sensitive player data.

  • Staff Level Audit

    critical

    Review the 'players' file or use the 'stat' command to ensure no accounts have level 34 (Implementor) status except the lead administrator.

  • IP Ban System Test

    recommended

    Verify the 'ban' command correctly writes to the 'lib/etc/badsites' file and blocks connections from a test IP.

World and Zone Integrity

0/5
  • Circular Reset Check

    critical

    Scan .zon files for 'G' (Give) or 'P' (Put) commands that reference non-existent or circular item IDs which can crash the reset engine.

  • Zone Number Boundaries

    critical

    Verify that all room, mob, and obj vnums within a .zon file fall within the range defined in the zone header.

  • Room Sector Validation

    recommended

    Ensure no rooms are set to 'SECT_INSIDE' if they are intended to be affected by weather or 'SECT_WATER' if they lack boat requirements.

  • OLC Save Verification

    critical

    Perform a manual 'medit', 'oedit', and 'redit' followed by a 'save' to ensure the OLC system correctly updates the .wld, .mob, and .obj files.

  • Dangling Exit Audit

    recommended

    Run a script or use 'show rooms' to identify exits leading to vnums that do not exist in the world files.

Persistence and Database

0/5
  • Autosave Interval Check

    recommended

    Confirm the 'autosave' timer in config.c is set to a value between 5 and 15 minutes to balance disk I/O and data safety.

  • Rent System Configuration

    recommended

    Verify the 'rent' file in lib/etc/config is set to 'Free Rent' or that the cost-per-day is calibrated to the game's economy.

  • Object Limit Validation

    critical

    Check the max_obj_save variable to ensure players can save a sufficient number of items in their inventory across reboots.

  • Board Saving Mechanism

    critical

    Post a test note to the 'Mortal Board' and reboot the MUD to verify the note persists in the lib/etc/boards directory.

  • Crash File Rotation

    recommended

    Ensure the 'circle' script or 'autorun' script renames the 'syslog' to 'syslog.old' on every restart to prevent log bloating.

Network and Stability

0/5
  • Port Binding Verification

    critical

    Confirm the MUD binds to the correct port (default 4000) using 'netstat -tulpn' after startup.

  • Max Player Limit

    recommended

    Set the MAX_PLAYERS constant in circle.h to a value supported by the server's file descriptor limits (typically 1024).

  • Signal Handling Test

    critical

    Send a SIGHUP to the process and verify that the MUD initiates an emergency save of all players and zones before shutting down.

  • Autorun Script Resilience

    critical

    Verify that the 'bin/autorun' script successfully restarts the MUD binary within 10 seconds of a process crash.

  • Output Buffer Sizing

    recommended

    Adjust the MAX_SOCK_BUF in network.h to 64k to prevent large 'look' or 'who' outputs from overflowing for users on slow connections.