Skip to content

Repository files navigation

Important

Install directly from GitHub Actions here:

Windows download link

SS13 Launcher Steam Build GitHub Build Tests

A launcher for Space Station 13 servers, using Tauri and managing BYOND versions internally.

Screenshots

CM-SS13 Game Servers Authentication Options (Steam only available in Steam builds) Automatic Relay Selection
VcnBDvrlqS7Tfryu@2x 0SR6wKmNaPuefRBK@2x 6whuDKXeRfZD5E3f@2x

Features

BYOND

  • Automatically installs the correct version for the game server you are connecting to.
  • Private WebView2 install location to avoid conflicts with system BYOND.

Authentication

  • CM-SS13 Authentication via web browser authentication flow
    • Handles tokens refresh to stay logged in indefinitely
  • BYOND Authentication via pager
  • Steam Authentication via Authentication ticket flow/Authentik backend

Rich Presence

  • Supports Steam and Discord rich presence
  • Displays currently launched server, as well as the number of players online
  • Allows friends to join directly from the friends list

CI/CD

  • Automatically deploys tagged versions to GitHub Releases and Steam
  • Steam releases are pushed to a latest branch for manual deployment to default.

Development

Prerequisites

  • Node.js (LTS)
  • Rust (stable)
  • Platform-specific dependencies (see below)

Install frontend dependencies first:

npm install

Build Variants

The launcher has two variants controlled by Cargo features and Tauri config overlays:

Variant Feature flag Config overlay Description
SS13 (generic) (none) (none) Generic SS13 server browser
CM-SS13 cm_ss13 --config src-tauri/tauri.cm.conf.json CM-SS13 specific launcher

Both variants can optionally include Steam support by adding the steam feature.

Dev Mode (with hot-reloading)

# SS13 (generic)
npm run tauri -- dev

# CM-SS13
npm run tauri -- dev --features cm_ss13 --config src-tauri/tauri.cm.conf.json

# Either variant with Steam support
npm run tauri -- dev --features steam
npm run tauri -- dev --features cm_ss13,steam --config src-tauri/tauri.cm.conf.json

To run a Steam build in development, place a file named steam_appid.txt in src-tauri/ containing 4313790. Otherwise, the app will immediately close and attempt to reopen via Steam.

Production Builds

# SS13 (generic)
npm run tauri -- build

# CM-SS13
npm run tauri -- build --features cm_ss13 --config src-tauri/tauri.cm.conf.json

Windows Setup

Download the WebView2 fixed runtime (bundled into the installer so users don't need system WebView2):

./scripts/download-webview2.ps1

No other platform-specific setup is needed on Windows.

Linux Setup

Install system dependencies (Ubuntu 24.04):

sudo apt-get install -y \
  libwebkit2gtk-4.1-0 libwebkit2gtk-4.1-dev \
  libjavascriptcoregtk-4.1-0 libjavascriptcoregtk-4.1-dev \
  gir1.2-javascriptcoregtk-4.1 gir1.2-webkit2-4.1 \
  libappindicator3-dev librsvg2-dev \
  patchelf musl-tools cabextract

Linux builds require bundled sidecars (Wine, WebView2, cabextract) for running BYOND.

  1. Download Wine, winetricks, and cabextract (bundles Wine so Linux users can run BYOND via Wine):

    ./scripts/download-wine.sh
  2. Download the WebView2 fixed runtime:

    ./scripts/download-webview2.sh
  3. Prepare the sidecar directory for AppImage bundling. The directory name must match the productName in tauri.conf.json:

    # For SS13 (generic) - productName is "SS13 Launcher"
    mkdir -p "/tmp/lib/SS13 Launcher"
    cp src-tauri/wine.tar.zst "/tmp/lib/SS13 Launcher/"
    cp src-tauri/winetricks "/tmp/lib/SS13 Launcher/"
    cp src-tauri/cabextract "/tmp/lib/SS13 Launcher/"
    chmod +x "/tmp/lib/SS13 Launcher/winetricks" "/tmp/lib/SS13 Launcher/cabextract"
    cp -r src-tauri/webview2-runtime "/tmp/lib/SS13 Launcher/webview2-runtime"
    
    # For CM-SS13 - productName is "CM-SS13 Launcher"
    mkdir -p "/tmp/lib/CM-SS13 Launcher"
    cp src-tauri/wine.tar.zst "/tmp/lib/CM-SS13 Launcher/"
    cp src-tauri/winetricks "/tmp/lib/CM-SS13 Launcher/"
    cp src-tauri/cabextract "/tmp/lib/CM-SS13 Launcher/"
    chmod +x "/tmp/lib/CM-SS13 Launcher/winetricks" "/tmp/lib/CM-SS13 Launcher/cabextract"
    cp -r src-tauri/webview2-runtime "/tmp/lib/CM-SS13 Launcher/webview2-runtime"
  4. Linux AppImage builds also require a custom tauri-cli fork and the linux config overlay:

    cargo install tauri-cli --git https://github.com/tauri-apps/tauri --branch feat/truly-portable-appimage --force
  5. Build with the linux config overlay and the ADD_DIR env var:

    # SS13 (generic)
    ADD_DIR="/tmp/lib/SS13 Launcher" cargo tauri build --config src-tauri/tauri.linux.conf.json
    
    # CM-SS13
    ADD_DIR="/tmp/lib/CM-SS13 Launcher" cargo tauri build --features cm_ss13 \
      --config src-tauri/tauri.cm.conf.json --config src-tauri/tauri.linux.conf.json

Regenerating TypeScript Bindings

When Tauri commands or types change, regenerate the TS bindings:

cd src-tauri && cargo test --features steam --lib export_bindings

The steam feature is required so that Steam-specific bindings are included.

To-Do

See issues tagged with https://github.com/cmss13-devs/cm-launcher/labels/feature-request or https://github.com/cmss13-devs/cm-launcher/labels/bug as an easy place to start contributing.

About

A launcher for SS13

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages