Gå til innholdet

Flerspillerserver

En Parlant~ flerspillerrelé er en lettvekts WebSocket-server skrevet i Rust med Axum og socketioxide. Den kobler sammen to spillere for sanntidssjakk over Socket.IO, uten persistent lagring og med minimale ressurskrav.

Kildekoden til reléserveren ligger i en-parlant-relay-repositoriet.

Standard reléserver fungerer rett ut av boksen, men det finnes gode grunner til å kjøre din egen:

  • Personvern — all spilltrafikk forblir på din egen infrastruktur
  • Lavere latens — distribuer nærmere spillerne dine for raskere trekkoverføring
  • Uavhengighet — ingen avhengighet av standardreléens oppetid eller tilgjengelighet

Relé-repositoriet inkluderer en fly.toml-konfigurasjonsfil, noe som gjør Fly.io til den enkleste distribusjonsbanen. Fly.ios gratistilbud er tilstrekkelig for personlig bruk.

  1. Installer Fly CLI:

    Terminal window
    curl -L https://fly.io/install.sh | sh
  2. Registrer deg eller logg inn:

    Terminal window
    fly auth signup
    # or
    fly auth login
  3. Klon reléen og distribuer:

    Terminal window
    git clone https://github.com/DarrellThomas/en-parlant-relay.git
    cd en-parlant-relay
    fly launch
    fly deploy

Fly.io vil bygge Rust-binæren, distribuere den, og gi deg en offentlig URL som your-app-name.fly.dev.

Bygg reléen fra kildekode og kjør den på en hvilken som helst maskin med en Rust-verktøykjede.

  1. Klon og bygg:

    Terminal window
    git clone https://github.com/DarrellThomas/en-parlant-relay.git
    cd en-parlant-relay
    cargo build --release
  2. Start serveren:

    Terminal window
    ./target/release/en-parlant-relay

    Serveren lytter på port 3210 som standard.

  3. For produksjonsbruk bør du kjøre serveren bak en omvendt proxy (nginx, Caddy eller lignende) for å håndtere TLS-terminering. Reléen snakker ren WebSocket — proxyen din legger til wss://-krypteringslaget.

Serveren er svært lettvekts. Den holder spillrom i minnet, videresender trekk mellom to spillere, og gjør ingenting annet. En liten VPS eller til og med en Raspberry Pi kan håndtere den uten problemer.

Når reléen din kjører, peker du En Parlant~ til den:

  1. Åpne Settings i En Parlant~
  2. Finn innstillingen for flerspiller-relé-server-URL
  3. Skriv inn serverens WebSocket-endepunkt:
    • For Fly.io: wss://your-app-name.fly.dev
    • For egendriftet med TLS-proxy: wss://relay.yourdomain.com
    • For lokal utvikling: ws://localhost:3210

Det er alt. Appen vil bruke reléen din for alle flerspillerspill.

Noen ting å vite om hvordan reléen fungerer:

  • Romkoder — Serveren genererer 6-tegns spillkoder med et entydig tegnsett. Tegn som ligner på hverandre er ekskludert (ingen 0/O, ingen 1/I/L) for å unngå forvirring når koder deles muntlig.

  • Romopprydding — Rom fjernes automatisk etter 30 minutters inaktivitet. En oppryddingsoppgave kjører hvert 60. sekund for å rydde opp inaktive rom.

  • Ingen persistent lagring — All tilstand ligger i minnet. Hvis serveren starter på nytt, går aktive rom tapt. Dette er tilsiktet — reléen er tilstandsløs og trivielt utbyttbar.

  • Minimale ressurser — Serveren bruker svært lite CPU og minne. Den mottar kun Socket.IO-hendelser fra én spiller og videresender dem til den andre. Det finnes ingen spilllogikk, ingen trekkvalidering, ingen database.