Skip to content

Volte6/GoMud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoMud

image

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.

User Support

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.

Screenshots

See some feature screnshots here.

ANSI Colors

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

Can be run locally as a standard go program or via docker container. The default port is 33333, but can be run on multiple ports.

Scripting

Information on scripting in GoMud can be found in the scripting README.

Small Feature Demos

Quick Start

A youtube playlist to getting started has been set up here:

Getting Started Videos

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

Connecting

TELNET : connect to localhost on port 33333 with a telnet client

WEB CLIENT: http://localhost/client

Default Username: admin

Default Password: password

Env Vars

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)

Platform specific

Raspberry pi

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

Why not?

Go provides a lot of terrific benefits such as:

  • Compatible - High degree of compatibility across platform 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 witht he 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 backwards 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.