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.