Skip to content

GoMudEngine/GoMud

GoMud

Overview

image

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



Features

Screenshots

Click below to see in-game screenshots of just a handful of features:

Feature Screenshots

ANSI Colors

Colorization is handled through extensive use of my github.com/GoMudEngine/ansitags library.

Small Feature Demos


Setup

Requirements

  • go language runtime installed

  • docker to build/run as a container (optional)

Usage

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 options

Connecting

When the GoMud server is running, you can connect it via the Terminal, or with a web browser:

Default seeded credentials in the bundled world:

  • Username: admin
  • Password: password

User Support

If you have comments, questions, suggestions (don't be shy, your questions or requests might help others too):


Development Notes

Contributor Guide

Interested in contributing? Check out our CONTRIBUTING.md to learn about the process.

Build Commands

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.

Env Vars

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 Go?

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.