Estive lendo o artigo da Valve sobre redes para vários jogadores que foi adaptado do artigo de Yahn Bernier em 2001 chamado Métodos de compensação de latência no projeto e otimização de protocolos no cliente / servidor no jogo . Estou criando um jogo para vários jogadores em tempo real usando um servidor node.js. conectado aos clientes através do socket.io e tenho algumas perguntas sobre os princípios detalhados abaixo:
Interpolação de entidade
[Interpolação] evita o movimento instável que isso normalmente levaria ao armazenar em buffer as atualizações do servidor e depois reproduzi-las com as lacunas interpoladas suavemente entre elas. Também pode proteger contra falhas causadas pela perda de pacotes.
Previsão do lado do cliente
Previsão é a noção do cliente prever os efeitos das ações do jogador local sem esperar pelo servidor para confirmá-las. O estado previsto de uma entidade é testado em relação aos comandos do servidor à medida que chegam até que uma correspondência ou uma correspondência incorreta seja detectada.
Compensação de atraso
Compensação de atraso é a noção de que o servidor usa a latência de um jogador para retroceder o tempo ao processar [entrada do usuário], para ver o que o jogador viu quando o comando foi enviado. Em combinação com a previsão, a compensação de atraso pode ajudar a combater a latência da rede a ponto de quase eliminá-la da perspectiva de um invasor.
Os princípios se aplicam ao TCP como ao UDP e haveria alguma diferença na implementação? Percebo que a interpolação de entidade não precisaria proteger contra a perda de pacotes, mas é isso.
Posso me comunicar entre um servidor e um navegador da web e vice-versa usando UDP e Node.js?
Como o artigo tem mais de uma década, esses princípios ainda estão em uso ou apareceu outra tecnologia?
Qualquer ajuda seria muito apreciada.