Multiplayer-Server
Das En Parlant~-Multiplayer-Relay ist ein leichtgewichtiger WebSocket-Server, geschrieben in Rust mit Axum und socketioxide. Er verbindet zwei Spieler für Echtzeit-Schach über Socket.IO – ohne persistente Datenspeicherung und mit minimalen Ressourcenanforderungen.
Der Quellcode des Relay-Servers befindet sich im Repository en-parlant-relay.
Warum selbst hosten
Abschnitt betitelt „Warum selbst hosten“Der Standard-Relay-Server funktioniert sofort ohne weitere Konfiguration, aber es gibt gute Gründe, einen eigenen zu betreiben:
- Datenschutz – der gesamte Spielverkehr bleibt auf Ihrer eigenen Infrastruktur
- Geringere Latenz – deployen Sie näher an Ihren Spielern für schnellere Zugübertragung
- Unabhängigkeit – keine Abhängigkeit von der Verfügbarkeit oder Erreichbarkeit des Standard-Relays
Deployment-Optionen
Abschnitt betitelt „Deployment-Optionen“Fly.io (Empfohlen)
Abschnitt betitelt „Fly.io (Empfohlen)“Das Relay-Repository enthält eine fly.toml-Konfigurationsdatei, was Fly.io zum einfachsten Deployment-Weg macht. Der kostenlose Tarif von Fly.io ist für den persönlichen Gebrauch ausreichend.
-
Installieren Sie die Fly CLI:
Terminal-Fenster curl -L https://fly.io/install.sh | sh -
Registrieren Sie sich oder melden Sie sich an:
Terminal-Fenster fly auth signup# orfly auth login -
Klonen Sie das Relay und deployen Sie es:
Terminal-Fenster git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relayfly launchfly deploy
Fly.io kompiliert die Rust-Binary, deployt sie und stellt Ihnen eine öffentliche URL wie your-app-name.fly.dev bereit.
Selbst gehostet
Abschnitt betitelt „Selbst gehostet“Kompilieren Sie das Relay aus dem Quellcode und führen Sie es auf einer beliebigen Maschine mit einer Rust-Toolchain aus.
-
Klonen und kompilieren:
Terminal-Fenster git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relaycargo build --release -
Starten Sie den Server:
Terminal-Fenster ./target/release/en-parlant-relayDer Server lauscht standardmäßig auf Port 3210.
-
Für den Produktionseinsatz sollten Sie den Server hinter einem Reverse Proxy (nginx, Caddy oder ähnlich) betreiben, um die TLS-Terminierung zu übernehmen. Das Relay selbst spricht reines WebSocket – Ihr Proxy fügt die
wss://-Verschlüsselungsschicht hinzu.
Der Server ist sehr leichtgewichtig. Er hält Spielräume im Arbeitsspeicher, leitet Züge zwischen zwei Spielern weiter und tut sonst nichts. Ein kleiner VPS oder sogar ein Raspberry Pi kann ihn problemlos betreiben.
En Parlant~ konfigurieren
Abschnitt betitelt „En Parlant~ konfigurieren“Sobald Ihr Relay läuft, verweisen Sie En Parlant~ darauf:
- Öffnen Sie Einstellungen in En Parlant~
- Suchen Sie die Einstellung für die Multiplayer-Relay-Server-URL
- Geben Sie den WebSocket-Endpunkt Ihres Servers ein:
- Für Fly.io:
wss://your-app-name.fly.dev - Für selbst gehostet mit TLS-Proxy:
wss://relay.yourdomain.com - Für lokale Entwicklung:
ws://localhost:3210
- Für Fly.io:
Das war’s. Die App verwendet Ihr Relay für alle Mehrspieler-Partien.
Server-Details
Abschnitt betitelt „Server-Details“Einige Hinweise zur Funktionsweise des Relays:
-
Raumcodes – Der Server generiert 6-stellige Spielcodes unter Verwendung eines eindeutigen Zeichensatzes. Zeichen, die sich ähnlich sehen, sind ausgeschlossen (kein
0/O, kein1/I/L), um Verwechslungen beim mündlichen Weitergeben von Codes zu vermeiden. -
Raumbereinigung – Räume werden nach 30 Minuten Inaktivität automatisch entfernt. Eine Bereinigungsaufgabe läuft alle 60 Sekunden, um inaktive Räume zu entfernen.
-
Keine persistente Datenspeicherung – Der gesamte Zustand befindet sich im Arbeitsspeicher. Wenn der Server neu startet, gehen aktive Räume verloren. Dies ist beabsichtigt – das Relay ist zustandslos und trivial austauschbar.
-
Minimale Ressourcen – Der Server benötigt sehr wenig CPU und Arbeitsspeicher. Er empfängt lediglich Socket.IO-Events von einem Spieler und leitet sie an den anderen weiter. Es gibt keine Spiellogik, keine Zugvalidierung, keine Datenbank.