GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - SharpMUSH/SharpMUSH: A dotnet MUSH Server with a PennMUSH compatibility layer

BranchesTags
Open more actions menu

Latest commit

 

History

6,594 Commits
6,594 Commits

Folders and files

NameName
Last commit message
Last commit date
.agents/skills/writing-sharpmush-softcode
.agents/skills/writing-sharpmush-softcode
 
 
.claude
.claude
 
 
.config
.config
 
 
.github
.github
 
 
.run
.run
 
 
SharpMUSH.AnalysisProtocol
SharpMUSH.AnalysisProtocol
 
 
SharpMUSH.Benchmarks
SharpMUSH.Benchmarks
 
 
SharpMUSH.Client
SharpMUSH.Client
 
 
SharpMUSH.CodeAnalysis
SharpMUSH.CodeAnalysis
 
 
SharpMUSH.Configuration.Generated
SharpMUSH.Configuration.Generated
 
 
SharpMUSH.Configuration
SharpMUSH.Configuration
 
 
SharpMUSH.Contracts
SharpMUSH.Contracts
 
 
SharpMUSH.Database.Lightning
SharpMUSH.Database.Lightning
 
 
SharpMUSH.Database
SharpMUSH.Database
 
 
SharpMUSH.Documentation
SharpMUSH.Documentation
 
 
SharpMUSH.Implementation.Generated
SharpMUSH.Implementation.Generated
 
 
SharpMUSH.Implementation
SharpMUSH.Implementation
 
 
SharpMUSH.LanguageServer
SharpMUSH.LanguageServer
 
 
SharpMUSH.Library
SharpMUSH.Library
 
 
SharpMUSH.LspBridge
SharpMUSH.LspBridge
 
 
SharpMUSH.Messaging
SharpMUSH.Messaging
 
 
SharpMUSH.PackageTool
SharpMUSH.PackageTool
 
 
SharpMUSH.Parser.Generated
SharpMUSH.Parser.Generated
 
 
SharpMUSH.Plugins.Discord
SharpMUSH.Plugins.Discord
 
 
SharpMUSH.Plugins.Lsp
SharpMUSH.Plugins.Lsp
 
 
SharpMUSH.Plugins.Mcp
SharpMUSH.Plugins.Mcp
 
 
SharpMUSH.Plugins.Scene
SharpMUSH.Plugins.Scene
 
 
SharpMUSH.Plugins.World
SharpMUSH.Plugins.World
 
 
SharpMUSH.RenderingWorker
SharpMUSH.RenderingWorker
 
 
SharpMUSH.Server
SharpMUSH.Server
 
 
SharpMUSH.SocketServer
SharpMUSH.SocketServer
 
 
SharpMUSH.Tests.BUnit
SharpMUSH.Tests.BUnit
 
 
SharpMUSH.Tests.DiscordPlugin
SharpMUSH.Tests.DiscordPlugin
 
 
SharpMUSH.Tests.Infrastructure
SharpMUSH.Tests.Infrastructure
 
 
SharpMUSH.Tests.Integration
SharpMUSH.Tests.Integration
 
 
SharpMUSH.Tests.ScenePlugin
SharpMUSH.Tests.ScenePlugin
 
 
SharpMUSH.Tests.Shared
SharpMUSH.Tests.Shared
 
 
SharpMUSH.Tests.WorldPlugin
SharpMUSH.Tests.WorldPlugin
 
 
SharpMUSH.Tests
SharpMUSH.Tests
 
 
Solution Files
Solution Files
 
 
assets/branding
assets/branding
 
 
deploy
deploy
 
 
docs
docs
 
 
examples
examples
 
 
kubernetes
kubernetes
 
 
scripts
scripts
 
 
templates
templates
 
 
tools
tools
 
 
vendor
vendor
 
 
.dockerignore
.dockerignore
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
AGENTS.md
AGENTS.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CLAUDE.md
CLAUDE.md
 
 
Directory.Build.props
Directory.Build.props
 
 
Directory.Build.targets
Directory.Build.targets
 
 
Dockerfile
Dockerfile
 
 
Dockerfile.renderingworker.local
Dockerfile.renderingworker.local
 
 
Dockerfile.socketserver.local
Dockerfile.socketserver.local
 
 
LICENSE
LICENSE
 
 
Localization.md
Localization.md
 
 
README.md
README.md
 
 
SharpMUSH.sln
SharpMUSH.sln
 
 
SharpMUSH.sln.DotSettings
SharpMUSH.sln.DotSettings
 
 
global.json
global.json
 
 
nats.conf
nats.conf
 
 
push-dockerhub.ps1
push-dockerhub.ps1
 
 

Repository files navigation

SharpMUSH

Build and run your own multiplayer text world.

SharpMUSH is an open-source MUSH server for collaborative stories, roleplay and world building. A game plays out in a MU* client, a browser and a Discord server at once, and its systems are written in softcode that builders and players can read and change.

Try the live example · Run a game · Read the docs

Sharpie, the SharpMUSH mascot, joins rooms and conversation into a connected world.

A world you can make your own

  • Build together. Create rooms, characters and shared stories with familiar MUSH softcode.
  • Play from anywhere. Connect with a MU* client or the web portal, which has a Play terminal, mail, scenes and the wiki, and works on a phone and with screen readers. MUD clients such as Mudlet get a map and gauges over GMCP.
  • Bridge Discord. Link Discord channels to the game, so lines go both ways under each member's chosen character. Players can sign in with Discord, Google and others.
  • Run roleplay and staff work. Scenes log roleplay as it happens, the wiki holds pages with facts the portal and softcode can search, and jobs track what players ask staff for.
  • Softcode first. Game systems ship as softcode packages you install, upgrade and remove, and portal pages can be softcode too. C# plugins add to the engine without a fork.
  • Let other tools in. Apps act as a character with only the rights its player allowed, and editors check softcode through the language server.
  • Bring an existing world. Import a PennMUSH, RhostMUSH or TinyMUX database with its mail. SharpMUSH runs PennMUSH softcode, with the differences listed, and understands much of TinyMUX and RhostMUSH softcode too.

Join in

Ask questions on Discord · Explore the package library · Develop SharpMUSH

Build status Discord

Release Status

The first release, 1.0.0, is being prepared. See CHANGELOG.md for what each release contains.

Docker Deployment

To launch a game on a host, see Launch a Server, or deploy one on Railway:

Deploy on Railway

SharpMUSH is available as Docker images on DockerHub:

  • sharpmush/sharpmush-server - Main server
  • sharpmush/sharpmush-socketserver - Stable telnet/WebSocket socket owner
  • sharpmush/sharpmush-renderer - Replaceable rendering worker
  • sharpmush/sharpmush-edge - Caddy, NATS and the socket server in one image, run beside the server and renderer images on hosts that run one container per app (Fly.io, Railway)
  • sharpmush/sharpmush-allinone - Everything in one image, for a one-app game on those hosts

For information on setting up automatic DockerHub publishing when new versions are released, see DockerHub Setup Guide.

Quick Contribution Guide

The full guide to running SharpMUSH from source and running its tests is Develop SharpMUSH on the documentation site.

How to Build and Test

  • Install .NET 11 — SDK 11.0.100 or newer, as pinned in global.json
  • Install Docker Desktop

Build with:

dotnet build

Run the tests with:

dotnet test

Note: Test telemetry output is disabled by default to reduce console noise. To enable telemetry metrics during test runs, set the environment variable:

export SHARPMUSH_ENABLE_TEST_TELEMETRY=true
dotnet test

The main entrypoint to set as a Startup Project is SharpMUSH.Server.

For full integration, run SharpMUSH.SocketServer, which owns client sockets, and SharpMUSH.RenderingWorker, which renders output over a shared Unix socket. To run all three in Docker, with NATS, use the Compose files in deploy/. They build the images from your checkout:

cd deploy
cp .env.example .env    # set SHARPMUSH_DOMAIN (localhost on your own machine)
docker compose -f docker-compose.prod.yml up -d --build

When launching projects separately on Linux, set Rendering__SocketPath to the same writable path (for example /tmp/sharpmush-render.sock) for both SocketServer and RenderingWorker, and provide NATS_URL to SocketServer and the main server. To start NATS on its own, on this computer only:

docker run -d --name sharpmush-dev-nats -p 127.0.0.1:4222:4222 -v "$PWD/nats.conf:/etc/nats/nats.conf:ro" nats:2-alpine -js -c /etc/nats/nats.conf
export NATS_URL=nats://localhost:4222

For quick images from Release binaries, use Dockerfile.socketserver.local for SocketServer and Dockerfile.renderingworker.local for the renderer; mount their shared socket directory.

See connection updates and recovery for migration and restart behavior. The development Kubernetes manifest keeps SocketServer and renderer in one Pod: updating either image replaces that Pod and drops sockets. Use the single-host Compose deployment for independent renderer updates that retain client sockets.

Additionally, a Blazor web client is available at SharpMUSH.Client.

About

A dotnet MUSH Server with a PennMUSH compatibility layer

sharpmush.com

Topics

ansiantlr4csharpdomain-specific-languagedslmudmud-servermush-clientmush-serverpennmushsharpmushsoftcodetelnettestcontainerswebsocket-client

Resources

Readme
Apache-2.0 license
Activity
Custom properties

Stars

8 stars

Watchers

3 watching

Forks

3 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.