İçeriğe geç

Çok Oyunculu Sunucu

En Parlant~ çok oyunculu aktarma sunucusu, Axum ve socketioxide kullanılarak Rust ile yazılmış hafif bir WebSocket sunucusudur. Socket.IO üzerinden gerçek zamanlı satranç için iki oyuncuyu birbirine bağlar; kalıcı depolama gerektirmez ve minimum kaynak kullanır.

Aktarma sunucusunun kaynak kodu en-parlant-relay deposunda bulunmaktadır.

Neden Kendi Sunucunuzu Barındırmalısınız

Section titled “Neden Kendi Sunucunuzu Barındırmalısınız”

Varsayılan aktarma sunucusu kutudan çıktığı gibi çalışır, ancak kendi sunucunuzu çalıştırmak için iyi nedenler vardır:

  • Gizlilik — tüm oyun trafiği kendi altyapınızda kalır
  • Daha düşük gecikme — daha hızlı hamle iletimi için oyuncularınıza daha yakın bir konuma dağıtın
  • Bağımsızlık — varsayılan aktarma sunucusunun çalışma süresine veya erişilebilirliğine bağımlılık olmaz

Aktarma deposu bir fly.toml yapılandırma dosyası içerir, bu da Fly.io’yu en kolay dağıtım yolu haline getirir. Fly.io’nun ücretsiz katmanı kişisel kullanım için uygundur.

  1. Fly CLI’yi yükleyin:

    Terminal window
    curl -L https://fly.io/install.sh | sh
  2. Kayıt olun veya giriş yapın:

    Terminal window
    fly auth signup
    # or
    fly auth login
  3. Aktarma deposunu klonlayın ve dağıtın:

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

Fly.io, Rust ikili dosyasını derleyecek, dağıtacak ve size your-app-name.fly.dev gibi bir genel URL verecektir.

Aktarma sunucusunu kaynak koddan derleyin ve Rust araç zinciri bulunan herhangi bir makinede çalıştırın.

  1. Klonlayın ve derleyin:

    Terminal window
    git clone https://github.com/DarrellThomas/en-parlant-relay.git
    cd en-parlant-relay
    cargo build --release
  2. Sunucuyu çalıştırın:

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

    Sunucu varsayılan olarak 3210 portunu dinler.

  3. Üretim kullanımı için, TLS sonlandırmasını yönetmek üzere bir ters proxy (nginx, Caddy veya benzeri) arkasında çalıştırın. Aktarma sunucusu düz WebSocket konuşur — proxy’niz wss:// şifreleme katmanını ekler.

Sunucu çok hafiftir. Oyun odalarını bellekte tutar, iki oyuncu arasındaki hamleleri iletir ve başka hiçbir şey yapmaz. Küçük bir VPS veya hatta bir Raspberry Pi bunu rahatlıkla karşılayabilir.

Aktarma sunucunuz çalışmaya başladıktan sonra En Parlant~‘ı ona yönlendirin:

  1. En Parlant~ içinde Ayarlar’ı açın
  2. Çok oyunculu aktarma sunucusu URL ayarını bulun
  3. Sunucunuzun WebSocket uç noktasını girin:
    • Fly.io için: wss://your-app-name.fly.dev
    • TLS proxy ile kendi sunucunuzda: wss://relay.yourdomain.com
    • Yerel geliştirme için: ws://localhost:3210

Hepsi bu kadar. Uygulama, tüm çok oyunculu oyunlar için sizin aktarma sunucunuzu kullanacaktır.

Aktarma sunucusunun nasıl çalıştığı hakkında bilinmesi gereken birkaç şey:

  • Oda kodları — Sunucu, karışıklığa yol açmayan bir karakter seti kullanarak 6 karakterlik oyun kodları oluşturur. Birbirine benzeyen karakterler hariç tutulur (kodları sözlü olarak paylaşırken karışıklığı önlemek için 0/O, 1/I/L kullanılmaz).

  • Oda temizliği — 30 dakikalık hareketsizlikten sonra odalar otomatik olarak kaldırılır. Boşta kalan odaları temizlemek için her 60 saniyede bir temizlik görevi çalışır.

  • Kalıcı depolama yok — Tüm durum bellekte tutulur. Sunucu yeniden başlarsa aktif odalar kaybolur. Bu tasarım gereğidir — aktarma sunucusu durumsuzdur ve kolayca değiştirilebilir.

  • Minimum kaynak kullanımı — Sunucu çok az CPU ve bellek kullanır. Yalnızca bir oyuncudan Socket.IO olaylarını alır ve diğerine iletir. Oyun mantığı, hamle doğrulaması veya veritabanı yoktur.