GoMud is an in-development open source MUD (Multi-user Dungeon) game world and library.
It ships with a default world to play in, but can be overwritten or modified to build your own world using built-in tools.
If you have comments, questions, suggestions:
Github Discussions - Don't be shy. Your questions or requests might help others too.
Discord Server - Get more interactive help in the GoMud Discord server.
Click below to see in-game screenshots of just a handful of features:
Colorization is handled through extensive use of my github.com/Volte6/ansitags library.
Information on scripting in GoMud can be found in the scripting README.
- Auto-complete input
- In-game maps
- Quests / Quest Progress
- Lockpicking
- Hired Mercs
- TinyMap (okay not much of a "feature")
- 256 Color/xterm
- Customizable Prompts
- Mob/NPC Scripting
- Room Scripting
- Kill Stats
- Searchable Inventory
- Day/Night Cycles
- Web Socket "Virtual Terminal"
- Alternate Characters
A youtube playlist to getting started has been set up here:
You can compile and run it locally with:
go run .
Or you can just build the binary if you prefer:
go build -o GoMudServer
./GoMudServer
Or if you have docker installed:
docker-compose -f provisioning/docker-compose.yml up --build --remove-orphans server
TELNET : connect to localhost
on port 33333
with a telnet client
WEB CLIENT: http://localhost/client
Default Username: admin
Default Password: password
When running several environment variables can be set to alter behaviors of the mud:
- CONFIG_PATH=/path/to/alternative/config.yaml - This can provide a path to a copy of the config.yaml containing only values you wish to override. This way you don't have to modify the original config.yaml
- LOG_PATH=/path/to/log.txt - This will write all logs to a specified file. If unspecified, will write to stderr.
- LOG_LEVEL={LOW/MEDIUM/HIGH} - This sets how verbose you want the logs to be. (Note: Log files rotate every 100MB)
Want to run GoMud on a raspberry pi? No problem! I do it all the time! It runs great on a $15 Raspberry Pi Zero 2. However, in my experience the raspberry pi struggles to compile the binary directly, so it is recommended that you compile the binary locally and then copy it over to the raspberry pi.
There is a convenient make
command to compile the pi chipset provided:
make build_rpi
( this will output a binary named: go-mud-server-rpi
)
Or (window user?) just use the build comand directly:
env GOOS=linux GOARCH=arm GOARM=5 go build -o go-mud-server-rpi
Why not?
Go provides a lot of terrific benefits such as:
- Compatible - High degree of compatibility across platforms or CPU Architectures. Go code quite painlessly compiles for Windows, Linux, ARM, etc. with minimal to no changes to the code.
- Fast - Go is fast. From execution to builds. The current GoMud project builds on a Macbook in less than a couple of seconds.
- Opinionated - Go style and patterns are well established and provide a reliable way to dive into a project and immediately feel familiar with the style.
- Modern - Go is a relatively new/modern language without the burden of "every feature people thought would be useful in the last 30 or 40 years" added to it.
- Upgradable - Go's promise of maintaining backward compatibility means upgrading versions over time remains a simple and painless process (If not downright invisible).
- Statically Linked - If you have the binary, you have the working program. Externally linked dependencies (and whether you have them) are not an issue.
- No Central Registries - Go is built to naturally incorporate library includes straight from their repos (such as git). This is neato.
- Concurrent - Go has concurrency built in as a feature of the language, not a library you include.