• Server de jocuri pentru acțiune cooperativă - simulare autorizată, matchmaking și anti-cheat bazat pe Node.js + Colyseus

    4 zile în urmă
    • Buget dorit până la 850.75 USD
    • Se așteaptă un executant...
  • Situația inițială este că există un prototip de joc cooperativ în Unity (Netcode for GameObjects) pentru 2-8 jucători. Au apărut probleme pe P2P - desincronizat, fără compensare de întârziere, gazda renunță - meciul se destramă, trișorii modifică parametrii daune și viteză. Trebuie să treceți la un server de renume dedicat, cu camere, matchmaking și anti-cheat minim, păstrând în același timp logica actuală de luptă și inventar.

    Mediu tehnic - Linux (Ubuntu 22.04), Docker, Node.js 20 LTS, Colyseus 0.15+, Redis (pentru cozi și prezență), PostgreSQL (pentru conturi și progres), Nginx (terminare TLS), GitHub Actions (CI). Client Unity 2022 LTS, transport WebSocket (fără WebRTC). Implementare într-o singură regiune (încă nu există mai multe regiuni).

    Ceea ce ar trebui să se întâmple este un backend de server funcțional, cu o simulare autorizată a mecanismelor cheie (mișcare, luare daune, moarte/reapariție, pradă și inventar) și infrastructura de potrivire. Rezultatul ar trebui să poată fi implementat reproductibil în Docker Compose și să aibă un set de bază de valori/jurnale pentru diagnosticare.

    Domeniul de lucru pe etape
    1) Analiza modelului actual de rețea - analizați protocolul mesajului client, evidențiați stările care ar trebui să devină stări server și propuneți o schemă eveniment/instantaneu. Rezultatul ar trebui să fie un document de 1-2 pagini cu o listă de stări de autoritate, o listă de comenzi client și un plan de migrare.
    2) Implementarea serverului Colyseus
    - Potriviți camerele cu ciclul de viață: așteptați - începeți - jucați - terminați
    - Matchmaking după mod și interval MMR (simplificat) cu o coadă în Redis
    - Procesarea cu autoritate a comenzilor clientului: mișcare de introducere, folosire articol, atac, ridicare, drop
    - Validare server: viteză, frecvență de atac, razele de preluare, cooldown-uri
    - Tickrate 20/s, instantanee de stare 10/s, interpolarea clientului rămâne pe partea Unity (trebuie să determinați formatul datelor)
    3) Salvați și progresați
    - Schema PostgreSQL: utilizatori, sesiuni, progresie (minimală), potrivire_rezultate
    - Autorizare JWT (jeton de acces) și verificare server la intrarea în cameră
    - Înregistrați rezultatele meciului și actualizați MMR
    4) Nivel minim anti-cheat
    - Limitarea ratei comenzilor
    - Verifică serverul pentru stări imposibile (teleport, speedhack, foc rapid)
    - Sistem de încălcare: N evenimente suspecte per meci - marcați în match_results și loviți din cameră
    5) Infrastructură și calitate
    - Docker Compose: game-server, redis, postgres, nginx
    - Verificări de sănătate, jurnalizare structurată (pino sau similar), metrici de bază (endpoint Prometheus sau contoare simple în /metrics)
    - Acțiuni GitHub: listing, teste (unitate minimă pentru validarea comenzii), construirea unei imagini Docker

    Restricții
    - Nu puteți utiliza servicii gestionate, totul trebuie să funcționeze pe o singură mașină în Docker Compose
    - Fără achiziționarea de soluții anti-cheat plătite și fără drivere de kernel
    - Clientul Unity poate fi modificat minim - este posibil să adăugați un strat de adaptor subțire pentru un nou protocol și interpolare, dar fără a rescrie întregul joc
    - Dependențe externe ar trebui să fie comune și menținute activ

    Criterii de acceptare măsurabile
    - Creat cu o comandă docker compose up, după care sunt disponibile următoarele: /health, /metrics, crearea de potriviri și conectarea clienților
    - Sub o încărcătură de 8 jucători într-o cameră, serverul menține 20 tick/s fără degradare mai mare de 10% pe o mașină cu 4 vCPU 8GB (verificat cu un script bot simplu sau script de încărcare încorporat)
    - Serverul respinge cel puțin 5 tipuri de comenzi cheat: viteză, atac accelerat, încercarea de a provoca daune fără a lovi modelul serverului, ridicarea de pradă în afara razei, comenzile spam peste limită
    - Rezultatele meciului sunt scrise în PostgreSQL, MMR este actualizat, reconectarea utilizatorului salvează progresul
    - Depozitul are un README cu pași de pornire, variabile de mediu și o descriere a protocolului de mesaj

    Materiale disponibile - proiectul curent Unity (depozitar), descrierea mecanicii jocului, lista de mesaje/evenimente din prototipul actual. Este de așteptat PR/repozitivul final cu serverul, configurațiile, migrarea bazei de date și editările minime ale clientului necesare pentru a se conecta la noul server.
Oferta ta

Încă nu ai trimis o ofertă pentru această comandă.
Apasă „Trimite o ofertă” pentru a o trimite.

Aveți nevoie de o sarcină similară?

Dacă acest proiect este apropiat de ceea ce aveți nevoie, puteți consulta servicii gata în categorie sau publica propria sarcină cu bugetul, termenul și cerințele necesare.

The project «Server de jocuri pentru acțiune cooperativă - simulare autorizată, matchmaking și anti-cheat bazat pe Node.js + Colyseus» can be used as a reference for your own brief: what should be done, what result is needed and what budget to set.