इसे छोड़कर कंटेंट पर जाएं

मल्टीप्लेयर सर्वर

En Parlant~ मल्टीप्लेयर रिले एक हल्का WebSocket सर्वर है जो Rust में Axum और socketioxide का उपयोग करके लिखा गया है। यह Socket.IO पर रियल-टाइम शतरंज के लिए दो खिलाड़ियों को जोड़ता है, बिना किसी स्थायी स्टोरेज और न्यूनतम संसाधन आवश्यकताओं के साथ।

रिले सर्वर का सोर्स कोड en-parlant-relay रिपॉज़िटरी में उपलब्ध है।

सेल्फ-होस्ट क्यों करें

Section titled “सेल्फ-होस्ट क्यों करें”

डिफ़ॉल्ट रिले सर्वर बिना किसी अतिरिक्त सेटअप के काम करता है, लेकिन अपना स्वयं का सर्वर चलाने के अच्छे कारण हैं:

  • गोपनीयता — सभी गेम ट्रैफ़िक आपके अपने इंफ्रास्ट्रक्चर पर रहता है
  • कम विलंबता — तेज़ चाल संचरण के लिए अपने खिलाड़ियों के करीब डिप्लॉय करें
  • स्वतंत्रता — डिफ़ॉल्ट रिले के अपटाइम या उपलब्धता पर कोई निर्भरता नहीं

डिप्लॉयमेंट विकल्प

Section titled “डिप्लॉयमेंट विकल्प”

रिले रिपॉज़िटरी में एक fly.toml कॉन्फ़िगरेशन फ़ाइल शामिल है, जो Fly.io को सबसे आसान डिप्लॉयमेंट पथ बनाती है। Fly.io का फ्री टियर व्यक्तिगत उपयोग के लिए उपयुक्त है।

  1. Fly CLI इंस्टॉल करें:

    Terminal window
    curl -L https://fly.io/install.sh | sh
  2. साइन अप या लॉग इन करें:

    Terminal window
    fly auth signup
    # or
    fly auth login
  3. रिले क्लोन करें और डिप्लॉय करें:

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

Fly.io Rust बाइनरी बिल्ड करेगा, उसे डिप्लॉय करेगा, और आपको your-app-name.fly.dev जैसा एक पब्लिक URL देगा।

रिले को सोर्स से बिल्ड करें और Rust टूलचेन वाली किसी भी मशीन पर चलाएँ।

  1. क्लोन और बिल्ड करें:

    Terminal window
    git clone https://github.com/DarrellThomas/en-parlant-relay.git
    cd en-parlant-relay
    cargo build --release
  2. सर्वर चलाएँ:

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

    सर्वर डिफ़ॉल्ट रूप से पोर्ट 3210 पर सुनता है।

  3. प्रोडक्शन उपयोग के लिए, TLS टर्मिनेशन को संभालने के लिए रिवर्स प्रॉक्सी (nginx, Caddy, या समान) के पीछे चलाएँ। रिले स्वयं सादा WebSocket बोलता है — आपकी प्रॉक्सी wss:// एन्क्रिप्शन लेयर जोड़ती है।

सर्वर बहुत हल्का है। यह मेमोरी में गेम रूम रखता है, दो खिलाड़ियों के बीच चालें फ़ॉरवर्ड करता है, और इसके अलावा कुछ नहीं करता। एक छोटा VPS या यहाँ तक कि एक Raspberry Pi भी इसे आसानी से संभाल सकता है।

En Parlant~ को कॉन्फ़िगर करना

Section titled “En Parlant~ को कॉन्फ़िगर करना”

एक बार जब आपका रिले चालू हो जाए, तो En Parlant~ को उसकी ओर इंगित करें:

  1. En Parlant~ में Settings खोलें
  2. मल्टीप्लेयर रिले सर्वर URL सेटिंग खोजें
  3. अपने सर्वर का WebSocket एंडपॉइंट दर्ज करें:
    • Fly.io के लिए: wss://your-app-name.fly.dev
    • TLS प्रॉक्सी के साथ सेल्फ-होस्टेड के लिए: wss://relay.yourdomain.com
    • लोकल डेवलपमेंट के लिए: ws://localhost:3210

बस इतना ही। ऐप सभी मल्टीप्लेयर गेम्स के लिए आपके रिले का उपयोग करेगा।

रिले कैसे काम करता है, इसके बारे में कुछ बातें जानने योग्य हैं:

  • रूम कोड — सर्वर एक स्पष्ट कैरेक्टर सेट का उपयोग करके 6-कैरेक्टर गेम कोड जनरेट करता है। एक जैसे दिखने वाले कैरेक्टर को बाहर रखा गया है (कोई 0/O नहीं, कोई 1/I/L नहीं) ताकि कोड मौखिक रूप से साझा करते समय भ्रम से बचा जा सके।

  • रूम क्लीनअप — 30 मिनट की निष्क्रियता के बाद रूम स्वचालित रूप से हटा दिए जाते हैं। निष्क्रिय रूम को साफ़ करने के लिए हर 60 सेकंड में एक क्लीनअप टास्क चलता है।

  • कोई स्थायी स्टोरेज नहीं — सभी स्टेट मेमोरी में रहती है। यदि सर्वर रीस्टार्ट होता है, तो सक्रिय रूम खो जाते हैं। यह जानबूझकर किया गया है — रिले स्टेटलेस है और आसानी से बदला जा सकता है।

  • न्यूनतम संसाधन — सर्वर बहुत कम CPU और मेमोरी का उपयोग करता है। यह केवल एक खिलाड़ी से Socket.IO इवेंट प्राप्त करता है और उन्हें दूसरे खिलाड़ी को फ़ॉरवर्ड करता है। कोई गेम लॉजिक नहीं, कोई चाल वैलिडेशन नहीं, कोई डेटाबेस नहीं।