Multiplayer tutorial 1: Conceitos

3

Index

Tagged

Contributors

Stats

23,830 visits, 37,348 views

Tools

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 14 Aug, 2015. Last updated 25 Feb, 2019

Prevenção batota

Se os pares disse o anfitrião onde estavam e que eles estavam fazendo no jogo, eo anfitrião confiava neles, pares poderia enganar. Eles simplesmente precisam enviar dados de repente dizendo que estavam do outro lado de uma parede, ou que eles tinham atacado um jogador que não poderia alcançar, e assim por diante. Para mitigar este, em vez os pares apenas dizer o anfitrião seus insumos , como quais as teclas de seta que estão actualmente detém para baixo. O anfitrião recebe este e começa a se mover esse jogador, e enviar dados de volta dizendo que o jogador onde ele pensa que são.

O problema imediato com isso é que ele adiciona um atraso para todas as entradas de jogadores. Se um jogador pressiona 'esquerda' com uma latência de 100ms, o anfitrião vai receber esse 100ms de entrada depois de ter sido pressionado. Em seguida, serão necessários mais 100 ms para atualização do hospedeiro com a nova posição do jogador para chegar de volta. Isso significa que todos os controles do pares sentir muito vagaroso, só entrando em vigor após uma fração significativa de um segundo. Para resolver isso, local do jogo do par usa previsão de entrada locais .

Input

Local previsão

Em vez disso, pressionando esquerda irá enviar uma mensagem para o anfitrião dizendo que a entrada foi pressionado, em seguida, local do jogo do jogador começa a mover-los de qualquer maneira , sem esperar pela confirmação do host! Desde o anfitrião e os pares estão executando o mesmo jogo, eles geralmente igualar-se bem de perto. Em seguida, o jogador recebe controles que sensação de resposta, e eles ainda não pode enganar: eles estão enviando apenas suas entradas, e não pode fingir ser em outro lugar. Mesmo que eles abriam jogo local, que só serve para desvantagem si mesmos, uma vez que todos eles podem fazer é mostrar-se como estar no lugar errado em relação ao hospedeiro.

O jogador do par no entanto, inevitavelmente deriva fora a posição de que o anfitrião vê-los. Há lotes de pequenos erros que podem se acumular no calendário da rede, a sincronização de framerate, medições em tempo delta e assim por diante. O par continua a receber mensagens a partir do host dizer onde eles estão, mas as mensagens estão atrasadas. No exemplo anterior, os pares recebe a sua posição a partir do hospedeiro com um atraso total de 200ms. Para corrigir desvios, o motor multijogador olha para a história objeto e compara onde foi 200ms atrás. Em outras palavras, as correções são feitas olhando para onde o objeto estava no passado, levando em conta a latência para o anfitrião. Se o objeto está no lugar errado, o motor multijogador irá gradualmente movê-lo para compensar. Isso acontece ao longo do tempo para tentar torná-lo menos perceptível. Em casos extremos, será necessária uma correção grande e perceptível, mas em boas condições de rede do movimento corresponde de perto e pequenos ajustes são feitos de uma forma que são difíceis de detectar.

[Previsão de entrada para os colegas] [18]

É importante salientar que esta não se limita a posições. O motor de vários jogadores tem a capacidade de fazer tudo isso a sincronização com qualquer variável de instância, e não apenas de X e Y coordenadas.

Lag

Em condições precárias da rede, pode haver efeitos óbvios no gameplay. Gamers geralmente se referem a esses problemas como "lag". Ele pode incluir movimento áspero (quando o buffer 80ms atualização está vazia), saltos ou descontinuidades na jogabilidade (quando ocorre a perda de pacotes e na próxima atualização alterar significativamente o estado do jogo), o jogador de repente mudar de posição (quando a previsão entrada local encontra um grande erro ), ou as consequências que aparecem injusto (geralmente o resultado de cada jogador ver o jogo com um atraso diferente, eo anfitrião fazendo uma decisão de autoridade em favor de um peer particular).

Infelizmente não há nenhuma boa solução para evitar esses problemas de forma permanente, a não ser para encontrar uma melhor conexão Internet de qualidade. Esses problemas geralmente ocorrem apenas em circunstâncias graves, como a perda de pacote completo por alguns segundos, ou mudanças temporárias súbitas e extremas de latência ou PDV. Em tais casos, é quase impossível para as várias técnicas de compensação para encobri-lo. Isso às vezes é simplesmente a realidade da comunicação através da Internet.

  • 0 Comments

Want to leave a comment? Login or Register an account!