Skip to content

Latest commit

 

History

5,289 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SharpMUSH

A sharp logo for SharpMUSH.

SharpMUSH is a modern iteration of a style of text-based role-playing servers referred to as 'MUSHes' or 'MU*', written with more modern needs in mind.

It takes its basis and functionality heavily from PennMUSH and its brethren with the intent of a compatibility layer.

C# .Net Visual Studio
GitHub Actions Workflow Status Discord
Ask DeepWiki








Why SharpMUSH

SharpMUSH is a modern iteration of the time-tested MUSH frameworks. It provides a layer of compatibility for PennMUSH for transferability, and builds a modern tech landscape around it that does away with many of the limitations that have made MUSHes harder to use, without losing what makes them great.

Documentation

You can find our documentation here: SharpMUSH Documentation. This features such elements as our Compatibility, Installation, and API documentation, and how to download SharpMUSH and get up and running!

Release Status

Currently, there is no Release Candidate for SharpMUSH. We are still in the early stages of development, and are working on getting a stable release out.

Docker Deployment

SharpMUSH is available as Docker images on DockerHub:

  • sharpmush/sharpmush-server - Main server
  • sharpmush/sharpmush-socketserver - Stable telnet/WebSocket socket owner
  • sharpmush/sharpmush-connectionserver - Replaceable rendering worker

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

Quick Contribution Guide

How to Build and Test

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.ConnectionServer, which renders output over a shared Unix socket. The local Compose stack wires all three processes and persistent NATS storage:

docker compose up --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 ConnectionServer, and provide NATS_URL to SocketServer and the main server. For quick images from Release binaries, use Dockerfile.socketserver.local for SocketServer and Dockerfile.connectionserver.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.

Releases

Sponsor this project

Packages

Used by

Contributors

Languages