Server Multiplayer
Il relay multiplayer di En Parlant~ è un server WebSocket leggero scritto in Rust utilizzando Axum e socketioxide. Connette due giocatori per partite di scacchi in tempo reale tramite Socket.IO, senza archiviazione persistente e con requisiti minimi di risorse.
Il codice sorgente del server relay si trova nel repository en-parlant-relay.
Perché ospitare in proprio
Sezione intitolata “Perché ospitare in proprio”Il server relay predefinito funziona immediatamente, ma ci sono buone ragioni per eseguirne uno proprio:
- Privacy — tutto il traffico di gioco rimane sulla propria infrastruttura
- Latenza inferiore — deploy più vicino ai giocatori per una trasmissione delle mosse più rapida
- Indipendenza — nessuna dipendenza dalla disponibilità o dall’operatività del relay predefinito
Opzioni di deployment
Sezione intitolata “Opzioni di deployment”Fly.io (Consigliato)
Sezione intitolata “Fly.io (Consigliato)”Il repository del relay include un file di configurazione fly.toml, rendendo Fly.io il percorso di deployment più semplice. Il piano gratuito di Fly.io è adatto all’uso personale.
-
Installare la CLI di Fly:
Terminal window curl -L https://fly.io/install.sh | sh -
Registrarsi o effettuare l’accesso:
Terminal window fly auth signup# orfly auth login -
Clonare il relay ed eseguire il deploy:
Terminal window git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relayfly launchfly deploy
Fly.io compilerà il binario Rust, lo distribuirà e fornirà un URL pubblico come your-app-name.fly.dev.
Self-Hosted
Sezione intitolata “Self-Hosted”Compilare il relay dal sorgente ed eseguirlo su qualsiasi macchina con una toolchain Rust.
-
Clonare e compilare:
Terminal window git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relaycargo build --release -
Avviare il server:
Terminal window ./target/release/en-parlant-relayIl server è in ascolto sulla porta 3210 per impostazione predefinita.
-
Per l’uso in produzione, eseguire dietro un reverse proxy (nginx, Caddy o simili) per gestire la terminazione TLS. Il relay comunica tramite WebSocket in chiaro — il proxy aggiunge il livello di crittografia
wss://.
Il server è molto leggero. Mantiene le stanze di gioco in memoria, inoltra le mosse tra due giocatori e non fa nient’altro. Un piccolo VPS o persino un Raspberry Pi può gestirlo senza problemi.
Configurazione di En Parlant~
Sezione intitolata “Configurazione di En Parlant~”Una volta che il relay è in esecuzione, configurare En Parlant~ per utilizzarlo:
- Aprire le Impostazioni in En Parlant~
- Trovare l’impostazione dell’URL del server relay multiplayer
- Inserire l’endpoint WebSocket del proprio server:
- Per Fly.io:
wss://your-app-name.fly.dev - Per self-hosted con proxy TLS:
wss://relay.yourdomain.com - Per lo sviluppo locale:
ws://localhost:3210
- Per Fly.io:
Tutto qui. L’applicazione utilizzerà il vostro relay per tutte le partite multiplayer.
Dettagli del server
Sezione intitolata “Dettagli del server”Alcune informazioni sul funzionamento del relay:
-
Codici stanza — Il server genera codici di gioco a 6 caratteri utilizzando un set di caratteri non ambiguo. I caratteri che si assomigliano sono esclusi (nessun
0/O, nessun1/I/L) per evitare confusione quando si condividono i codici a voce. -
Pulizia delle stanze — Le stanze vengono automaticamente rimosse dopo 30 minuti di inattività. Un’attività di pulizia viene eseguita ogni 60 secondi per eliminare le stanze inattive.
-
Nessuna archiviazione persistente — Tutto lo stato risiede in memoria. Se il server si riavvia, le stanze attive vengono perse. Questo è intenzionale — il relay è stateless e facilmente sostituibile.
-
Risorse minime — Il server utilizza pochissima CPU e memoria. Si limita a ricevere eventi Socket.IO da un giocatore e a inoltrarli all’altro. Non c’è logica di gioco, nessuna validazione delle mosse, nessun database.