SMAUG checklist for MUDs
This checklist outlines the technical requirements for moving a SMAUG or SmaugFUSS codebase from a local development environment to a live production server. It focuses on compatibility with modern C compilers, file system integrity, and stock system security.

Environment and Compilation
0/5GCC Compatibility Flags
criticalVerify the Makefile includes -fcommon if using GCC 10+ to prevent multiple definition errors during linking.
Crypt Library Linkage
criticalEnsure -lcrypt is present in the linker flags and that the production server has the libcrypt-dev headers installed.
Directory Structure Validation
criticalConfirm that all subdirectories (area, player, clans, councils, deities, boards, system) exist and are writeable by the MUD process user.
Binary Stripping
optionalRun 'strip smaug' after compilation to reduce binary size, provided a debug build is not required for core dump analysis.
Startup Script Verification
recommendedTest the 'startup' shell script to ensure it correctly handles log rotation and automatic restarts upon crash.
Data Integrity and Area Files
0/5VNUM Range Audit
criticalRun a global check to ensure no loaded areas have overlapping VNUM ranges in their .are files.
Limbo Area Verification
criticalConfirm that limbo.are is loaded and that essential objects like VNUM 2 (coin) and VNUM 3 (corpse) are present and functional.
Prototype Reset Check
recommendedScan all area files for 'P' (Prototype) flags on mobs and objects to ensure players cannot interact with unfinished assets.
Hardcoded Path Audit
criticalGrep the source code for absolute file paths (e.g., /home/user/smaug/...) and replace them with relative paths or mud.h defines.
Area Load Order
recommendedVerify area.lst contains all intended areas and that there are no trailing blank lines which can cause load-time hangs.
Security and Permissions
0/5Stock Immortal Account Reset
criticalDelete or change passwords for all stock implementor characters (e.g., Thoric, Circe) inherited from the base distribution.
Command Table Audit
criticalReview the 'trust' level required for commands like 'shutdown', 'reboot', and 'force' in the command table initialization.
OLC Permission Lockdown
recommendedVerify that 'vassign' ranges are correctly set for all builders to prevent unauthorized modification of core game areas.
Shell Command Restriction
criticalEnsure the 'sh' or 'system' call command is disabled or restricted to level 65 (Implementor) to prevent shell injection.
Pfile Encryption Check
criticalVerify that player file passwords are being hashed using crypt() rather than stored in plaintext.
Systems Configuration
0/5Clan and Council Initialization
recommendedVerify that the 'clans.dat' and 'councils.dat' files load without errors and that stock clan halls have valid VNUM destinations.
Deity System Validation
optionalConfirm all deities in 'deities.dat' have valid favor requirements and that 'devote' functions as intended.
Class and Race Balance Load
recommendedCheck that all .class and .race files in the system directory are readable and that base stats align with the intended difficulty curve.
Board System Cleanup
optionalClear all stock developer notes from the 'boards' directory to provide a clean slate for the player base.
Weather and Time Sync
optionalCheck system.dat to ensure the starting time and weather patterns are initialized correctly for the world map.
Network and Logging
0/5Port Configuration
criticalVerify the MUD is listening on the intended public port (default 4000) and that the firewall allows incoming TCP traffic.
DNS Resolution Toggle
recommendedDecide whether to enable DNS lookups in mud.h; disable if the server experiences lag during player login attempts.
Log File Rotation
recommendedConfigure a cron job or external script to archive the 'log' directory to prevent disk space exhaustion.
Max Players Limit
recommendedCheck the MAX_PLAYERS define or system.dat setting to ensure it matches the server's RAM and CPU capacity.
Hotboot Functionality
recommendedTest the 'hotboot' command to ensure the MUD can update code without disconnecting current players.