
Git and Submodules NakedMud is "contentless", any additional modules I add will be initialized as git submodules. If you are using git then once you receive all files you can use 'git submodule update --init --recursive' to grab them all, or use 'git submodule init && git submodule update' to grab specific ones (like the socials).
Or, you can download the latest release on the right, then go to https://github.com/NakedMud/ and download the submodules you want and place them into lib/PyModules as a subdirectory, they will auto-detect and load. Failures will show in the log.
New to NakedMud? Start here:
- Run the installer:
./install.py
- Interactive setup for your MUD configuration - Compiling and Running - Get your MUD server up and running
- Start your server:
./startmud.py
- Server manager with automatic startup and monitoring (supports--mudlib-path
for custom library locations) - Game Library Guide - Understand how your MUD's content is organized
- OLC for Dummies - Learn to build worlds with the Online Creation system
- Credits - Learn about the people who made NakedMud possible
NakedMud is a "content-less" MUD engine - it provides you with a solid, extensible foundation for building your own text-based multiplayer game, but without predefined content. Think of it as a blank canvas for your creativity!
Key Features:
- Python Integration: Write game logic in Python instead of hard-to-modify C code
- Modular Design: Everything is organized into clean, reusable components
- Online Creation (OLC): Build your world from within the game itself
- Modern Architecture: Built for Python 3.12+ with contemporary development practices
- Extensible: Add new features without touching the core engine
- Installation Script: Run
./install.py
for interactive MUD configuration - Compiling and Running - Step-by-step setup guide with friendly explanations
- Game Library Guide - Understanding the
lib/
directory structure and content organization - OLC for Dummies - Fun, comprehensive guide to building with Online Creation
- C Coding Conventions - Essential guide to NakedMud's unique coding style
- NakedMud Programming - Core programming concepts and architecture
- Python Scripting - Complete guide to Python integration and scripting
- Extending NakedMud - How to add new features and modules
- Credits - Acknowledgments and project history
- License - Usage terms and attribution
- Example Code - Python examples and templates
- Archived Documentation - Historical documentation and legacy guides
NakedMud began as Geoff Hollis's personal project around 2003-2004, built on top of Brian Graversen's SocketMud. Geoff's vision was to create a MUD engine that separated the technical foundation from game content, allowing creators to focus on building worlds rather than wrestling with socket programming and low-level details.
After Geoff's passing in November 2021, development continues under Kevin Morgan (LimpingNinja) to honor his work and vision, focusing on:
- Python 3+ Modernization: Updated from Python 2.x to modern Python
- Code Stabilization: Bug fixes and improved reliability
- Enhanced Documentation: Clearer guides and better organization
- Community Support: Maintaining the project for current and future builders
"The basic idea behind NakedMud is to provide users with a solid engine for running a MUD, but without the content that goes along with it." - Geoff Hollis
This philosophy means:
- You control the content: No predetermined races, classes, or storylines
- Python handles game logic: Write readable, maintainable game systems
- C provides the engine: Solid, fast core that you rarely need to touch
- Modular everything: Add features without breaking existing systems
NakedMud Structure:
├── src/ # C engine (socket handling, core systems)
├── lib/ # Game content and Python logic
│ ├── accounts/ # Player account data storage
│ ├── help/ # In-game help system and documentation
│ ├── logs/ # Server and game logs
│ ├── misc/ # Miscellaneous configuration files
│ ├── muddata # Core MUD configuration file
│ ├── players/ # Individual player character data
│ ├── pymodules/ # Python game systems and commands
│ ├── txt/ # Text files and templates
│ └── world/ # Zones, rooms, objects, NPCs (prototypes)
├── doc/ # Documentation and guides
└── tests/ # Test suites and validation
The beauty of this design is that you can create entirely different types of games using the same engine - from traditional fantasy MUDs to sci-fi adventures to social chat environments.
Documentation Issues? Check if there's a more specific guide for your question:
- Building problems? → Compiling and Running
- Code questions? → C Coding Conventions or Python Scripting
- Content creation? → Game Library Guide or OLC for Dummies
- Want to add features? → Extending NakedMud
Still stuck? The NakedMud community is friendly and helpful. Don't hesitate to reach out!
NakedMud thrives on community contributions! Whether you're:
- Fixing bugs in the core engine
- Writing documentation to help others
- Creating example content for new builders
- Sharing your modifications with the community
Your contributions help keep Geoff's vision alive and make NakedMud better for everyone.
NakedMud builds upon the excellent work of:
SocketMud by Brian Graversen - The original foundation that handled all the complex socket programming, allowing NakedMud to focus on the fun stuff. As Brian wrote: "Little mud project, which has a command interpreter and supports ANSI colors... has a nifty little help file system, and a few commands (say, quit, who, etc). Also supports MCCP version 1 and 2."
Code Snippets by Erwin Andreasen - Various utility functions and improvements that made their way into SocketMud and subsequently into NakedMud.
We maintain these credits not just out of courtesy, but because NakedMud's success stands on the shoulders of these generous developers who shared their work with the community.
Welcome to NakedMud! Whether you're here to build your first MUD or add features to an existing one, we're excited to see what you'll create. The only limit is your imagination.
Happy MUDding!