Ho letto l' articolo Valve sul networking multi-player che è stato adattato dall'articolo del 2001 di Yahn Bernier chiamato Metodi di compensazione della latenza nella progettazione e ottimizzazione del protocollo in-game client / server . Sto realizzando un gioco multigiocatore in tempo reale utilizzando un server node.js collegato ai client tramite socket.io e ho alcune domande relative ai principi dettagliati di seguito:
Interpolazione entità
[Interpolazione] impedisce il movimento nervoso che ciò porterebbe normalmente a buffering degli aggiornamenti del server per poi riprodurli con gli spazi uniformemente interpolati tra. Può anche proteggere dai problemi causati dalla perdita di pacchetti.
Previsione lato client
La previsione è la nozione del client che prevede gli effetti delle azioni del giocatore locale senza attendere che il server li confermi. Lo stato previsto di un'entità viene testato rispetto ai comandi del server quando arrivano fino a quando non viene rilevata una corrispondenza o una mancata corrispondenza.
Compensazione del ritardo
La compensazione del ritardo è la nozione del server che utilizza la latenza di un giocatore per riavvolgere il tempo durante l'elaborazione di [input utente], al fine di vedere cosa ha visto il giocatore quando è stato inviato il comando. In combinazione con la previsione, la compensazione del ritardo può aiutare a combattere la latenza della rete al punto da eliminarla quasi dal punto di vista di un attaccante.
I principi si applicano a TCP come fanno a UDP e ci sarebbero differenze nell'implementazione? Vedo che l'interpolazione di entità non avrebbe bisogno di protezione dalla perdita di pacchetti, ma questo è tutto.
Posso persino comunicare tra un server e un browser Web e viceversa utilizzando UDP e Node.js?
Poiché il documento ha più di un decennio, questi principi sono ancora in uso o sono apparse altre tecnologie?
Qualsiasi aiuto sarebbe molto apprezzato.