Checklists

LP MUD checklist for MUDs

This checklist ensures that an LP MUD environment is stable, secure, and ready for public players. It focuses on the specific architecture of LPC drivers like FluffOS or LDMud and their respective mudlibs.

LP MUD checklist for MUDs illustration
Placeholder illustration shown while custom artwork is being produced.
Progress0 / 30 complete (0%)

Driver and Boot Configuration

0/5
  • Driver Version Verification

    critical

    Confirm the driver (FluffOS or LDMud) matches the version required by the mudlib to prevent efun incompatibilities.

  • Config File Path Validation

    critical

    Verify that 'master_file', 'simul_efun', and 'global_include_file' paths in the driver config point to valid LPC files.

  • Log Directory Permissions

    critical

    Ensure the system user running the driver has write access to /log or /syslog to capture runtime errors.

  • Memory Limit Allocation

    recommended

    Set the maximum memory usage in the driver config to prevent the process from consuming the entire host RAM during a leak.

  • Binary Saving Configuration

    optional

    Enable save_binary in the driver to speed up boot times by caching compiled LPC bytecode.

LPC Security and Access Control

0/5
  • Master Object valid_read/write Audit

    critical

    Test that non-admin objects cannot read or write to sensitive directories like /secure, /data, or /bin.

  • Shutdown and Exec Restriction

    critical

    Verify that the shutdown() and exec() efuns are restricted to the master object or specific admin UIDs.

  • Simul_efun Override Protection

    critical

    Check that valid_override in master.c prevents users from redefining critical system efuns.

  • UID/EUID Assignment Logic

    recommended

    Verify that the mudlib correctly assigns Effective User IDs to objects cloned by players vs objects cloned by the system.

  • Snoop and Intercept Validation

    recommended

    Confirm that the snoop efun requires high-level privileges and logs the initiator's identity.

Object Persistence and State

0/5
  • Save/Restore Object Testing

    critical

    Trigger save_object() and restore_object() on player and room objects to ensure no data loss occurs during reboot.

  • Heart_beat and Call_out Cleanup

    critical

    Verify that destructed objects correctly remove their pending call_outs and heart_beats from the driver cycle.

  • Global Variable Initialization

    recommended

    Check that create() or reset() functions properly initialize all variables to prevent null pointer exceptions.

  • Shadow Object Restrictions

    recommended

    Ensure query_allow_shadow() is implemented on critical objects to prevent unauthorized function hooking.

  • Pre-loading Critical Objects

    recommended

    Add essential daemons and rooms to the 'preload' list in the master object to ensure they are available immediately after boot.

Networking and Protocol Support

0/5
  • Telnet and SSL Port Verification

    critical

    Verify the MUD is listening on the designated telnet port and that SSL certificates are valid if using encrypted ports.

  • GMCP/MSDP Handshake Test

    recommended

    Connect with a modern client like Mudlet and verify that the mudlib successfully sends JSON or key-value metadata.

  • Intermud-3 (I3) Connectivity

    optional

    Confirm the I3 daemon connects to a router and can send/receive 'tell' and 'who' packets to other MUDs.

  • MXP Tag Rendering

    optional

    Test that MUD eXtension Protocol tags for links and fonts are correctly parsed and not displayed as raw text to players.

  • Websocket Gateway Check

    optional

    If using a web client, verify the websocket-to-telnet gateway handles character encoding (UTF-8) correctly.

Performance and Stability

0/5
  • MAX_EVAL_COST Limits

    critical

    Set a strict evaluation cost limit in the driver to kill infinite LPC loops before they hang the entire process.

  • Large Mapping/Array Audit

    recommended

    Scan for objects storing excessively large mappings that could cause memory spikes during serialization.

  • Reclaim_objects Routine

    recommended

    Schedule a periodic call to reclaim_objects() to clear out references to destructed objects and free memory.

  • Inbound Connection Throttling

    recommended

    Implement a connection limit in the master object to prevent basic Denial of Service (DoS) attacks via rapid login attempts.

  • Profiling and Statistics

    optional

    Enable the 'opcprof' or equivalent profiling tool to identify which LPC functions are consuming the most CPU time.

Development and Admin Tools

0/5
  • Update Command Inheritance Test

    critical

    Verify the 'update' command correctly reloads inherited files so that changes propagate to child objects.

  • Runtime Error Logger

    critical

    Confirm that LPC runtime errors are written to a file accessible to developers for real-time debugging.

  • Destruct and Clean_up Testing

    recommended

    Verify that the clean_up() function in rooms correctly removes idle objects to maintain a low object count.

  • Admin 'Who' and Stealth Modes

    recommended

    Test that admin invisibility and stealth settings correctly hide the user from player-side lists and room entries.

  • Command Path Resolution

    recommended

    Ensure the 'bin' daemon correctly finds and caches commands in the user's path (e.g., /cmds/std, /cmds/wiz).