GoMud is an open-source MUD (Multi-User Dungeon) game server and library, written in Go.
It includes a fully playable default world, and provides built-in tools to customize or create your own.
Playable online demo: https://www.gomud.net
Click below to see in-game screenshots of just a handful of features:
Colorization is handled through extensive use of my github.com/GoMudEngine/ansitags library.
- 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
-
golanguage runtime installed -
dockerto build/run as a container (optional)
In a Terminal, run one of the following commands:
make run # runs GoMud using the `go` framework
make build # creates a executable binary of GoMud at `./go-mud-server`
make docker-run # runs GoMud in a container using Docker Compose
make help # shows all available `make` command optionsWhen the GoMud server is running, you can connect it via the Terminal, or with a web browser:
-
Telnet:
localhost:33333orlocalhost:44444 -
Local-only telnet port:
127.0.0.1:9999 -
Web client: http://localhost/webclient
-
Web admin: http://localhost/admin/
Default seeded credentials in the bundled world:
- Username:
admin - Password:
password
If you have comments, questions, suggestions (don't be shy, your questions or requests might help others too):
Interested in contributing? Check out our CONTRIBUTING.md to learn about the process.
| Command | Description |
|---|---|
make build |
Validates and builds the server binary. |
make run |
Generates module imports and starts the server with go run .. |
make run-docker |
Builds and starts the Docker environment from compose.yml. |
make test |
Runs code generation, JavaScript linting, and go test -race ./.... |
make validate |
Runs fmtcheck and go vet. |
make ci-local |
Builds the local CI container and runs workflow validation. |
make help |
Lists the available developer targets. |
When running, several environment variables can be set to alter behaviors of the mud:
| Variable | Example Value | Descripton |
|---|---|---|
CONFIG_PATH |
/path/to/config.yaml |
Use alternate config file |
LOG_PATH |
/path/to/log.txt |
Log to file instead of stderr |
LOG_LEVEL |
LOW / MEDIUM / HIGH |
Set verbosity (rotates at 100MB) |
LOG_NOCOLOR |
1 |
Disable colored log output |
Why not?
Go provides a number of practical benefits:
- Compatible: Easily builds across platforms and CPU architectures (Windows, Linux, MacOS, etc).
- Fast: Execution and build times are quick, and GoMud builds in just a couple of seconds.
- Opinionated: Consistent style/patterns make it easy to jump into any Go project.
- Modern: A relatively new language without decades of accumulated baggage.
- Upgradable: Strong backward compatibility makes version upgrades simple and low-risk.
- Statically linked: Built binaries have no dependency headaches.
- No central registries: Dependencies are pulled directly from source repositories.
- Concurrent: Concurrency is built into the language itself, not bolted on via external libraries.
