Sistema di ripristino del gioco in rete

2

Si può spiegare lo specifico e i dettagli di un framework netplay per un gioco che ottimizza la connessione attraverso una meccanica "previsione / rollback", come si vede nei giochi in cui la velocità è una priorità (sparatutto in prima persona, giochi di combattimento moderni da Street Fighter IV, ecc.?

Ho già studiato questo articolo come esempio: Rete multiplayer di origine , che descrive le tecniche di Valve utilizzate nei loro tiratori su un livello alto e astratto. Tuttavia, è semplicemente troppo alto e teorico per essere utile a me. Altri articoli simili seguono questo stesso schema; nessuno offre esempi di codice o esempi di lavoro.

Ho precedentemente realizzato sistemi di netplay che usano TCP / IP non ottimizzato, il che è ovviamente tremendamente lento e non utile per nulla, eccetto il gioco LAN. Anche se ho frequentato un corso universitario sulla programmazione di rete, sono fiducioso e abbastanza esperto per aver realizzato questo sistema attraverso la copia approssimativa di altri codici preesistenti.

    
posta Southpaw Hare 11.03.2013 - 06:55
fonte

1 risposta

2

Gli algoritmi di previsione / rollback funzionano in modo simile alla compressione MPEG. MPEG prevede possibili modifiche basate su un frame precedente. I fotogrammi di follow-up finiscono per essere per lo più diff via dai fotogrammi precedenti. Quando c'è un cambiamento importante ... o ogni tanto un Keyframe è codificato per sincronizzare l'immagine reale decompressa con gli effettivi.

In modo simile piuttosto che dover sincronizzare ogni azione su tutti i client, l'host fa previsioni sui frame successivi (aiutato dai fatti che conosce il mondo - questo missile viaggerà dritto fino a quando non colpisce qualcosa) e dai client Fai lo stesso.

I client ricevono le differenze (giocatore una direzione modificata) sotto forma di input raw e aggiornamenti "key frame" dal server e sincronizzano il loro stato con quello. L'invio di operazioni di input ai client e una sincronizzazione completa ogni tanto dal server riduce le chatter pur consentendo al server di essere il "master" di stato.

Non ricordo dove ho letto questo articolo che mi ha dato una buona comprensione della tecnica (o Gamasutra o una delle serie di Game Programming Gems), ma si discute di come questo sia stato un miglioramento dello stack di rete tra Doom 2 e Quake. I hanno trovato un buon esempio in C # che mostra un algoritmo di previsione che puoi build on.

Ecco una domanda simile su Gamedev su quell'argomento molto importante

    
risposta data 11.03.2013 - 22:48
fonte

Leggi altre domande sui tag