Getting Started¶
This guide covers setting up your development environment for building HoloMUSH plugins.
Prerequisites¶
| Requirement | Version | Purpose |
|---|---|---|
| Go | 1.24+ | Build and run the server |
| Task | Latest | Task runner for build commands |
| Docker | Latest | Required for PostgreSQL |
| Telnet client | Any | Connect to the server |
Installing Prerequisites¶
Install Go from go.dev/doc/install and Task from taskfile.dev/installation.
For Ubuntu/Debian:
Installation¶
Clone the Repository¶
Install Development Tools¶
This installs linters, formatters, and other development dependencies.
Build the Server¶
This creates the holomush binary in the project root.
Running HoloMUSH¶
HoloMUSH uses a two-process architecture: Core (game engine) and Gateway (protocol servers). Both must be running for a functional server.
Quick Start¶
Open three terminal windows:
Terminal 1: Start PostgreSQL
docker run -d --name holomush-db \
-e POSTGRES_DB=holomush \
-e POSTGRES_USER=holomush \
-e POSTGRES_PASSWORD=secret \
-p 5432:5432 \
postgres:18-alpine
Terminal 2: Start Core
Terminal 3: Start Gateway
Development Mode¶
For development with human-readable logs:
# Start Core with text logging
DATABASE_URL="..." ./holomush core --log-format=text
# Start Gateway with text logging
./holomush gateway --log-format=text
Connecting to the Server¶
Using Telnet¶
You should see:
Test Credentials¶
For development, a test account is available:
- Username:
testuser - Password:
password
Example Session¶
> connect testuser password
Welcome back, TestChar!
> look
The Void
An empty expanse of nothing. This is where it all begins.
> say Hello, is anyone there?
You say, "Hello, is anyone there?"
> pose looks around curiously
TestChar looks around curiously
> quit
Goodbye!
Available Commands¶
After connecting with connect testuser password:
| Command | Usage | Description |
|---|---|---|
look |
look |
View the current location |
say |
say Hello everyone! |
Speak to others in the room |
pose |
pose waves cheerfully |
Emote an action |
quit |
quit |
Disconnect from the server |
Running Tests¶
# Unit tests
task test
# Tests with coverage report
task test:coverage
# Integration tests (requires Docker)
task test:integration
Development Workflow¶
Code Quality¶
Task Commands Reference¶
| Command | Description |
|---|---|
task |
Show all available tasks |
task build |
Build the binary |
task dev |
Run development server |
task test |
Run all tests |
task lint |
Run all linters |
task fmt |
Format all code |
task clean |
Remove build artifacts |
Next Steps¶
- Read about the Event System to understand how plugins interact
- Follow the Plugin Tutorial to build your first plugin
- See the Plugin API Reference for complete SDK documentation