Multiplayer tutorial 1: Conceitos

3

Index

Taggé

Contributeurs

Statistiques

23,639 visites, 37,080 vues

Outils

Partager

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

Compensação das condições da rede

Para minimizar a perda de largura de banda e de pacotes, por padrão o motor multijogador transmite dados até 30 vezes por segundo. Os jogos geralmente rendem a 60 quadros por segundo, então isso significa que os dados só são enviados cerca de todos os outros quadros.

Compensating Para pares

Peers estará recebendo dados do host indicando dados do objeto, tais como as suas posições. Se eles simplesmente diretamente exibido o que foi recebido, movimentos de objetos iria aparecer instável como eles só são atualizados todos os outros quadros. Eles também poderiam mover de forma irregular, com as atualizações sujeitos ao PDV e perda de pacotes.

Para melhorar a experiência de jogo, o motor multijogador [interpolação] [4] entre as atualizações de valores como X e Y coordenadas. No caso de posições, que vai interpolar linearmente entre as actualizações. Por exemplo, se os dados estão vindo em todos os outros quadros, em seguida, o quadro que não recebe uma atualização irá utilizar um meio caminho valor entre as duas atualizações de ambos os lados. Isso faz com que o movimento suave de novo sem a necessidade de mais dados.

No entanto quando o processamento de um quadro interpolado, ele não sabe o que o próximo valor é ainda, porque isso vai chegar no futuro! Em vez de usar uma máquina do tempo, o motor multijogador resolve isso adicionando um atraso extra artificial de 80ms para os colegas. Isso significa que o motor multijogador pode saber sobre as próximas atualizações à frente do que é atualmente a renderização. Mesmo que a próxima actualização está ausente devido a perda de pacotes, pode ser capaz de usar o próxima actualização depois que a interpolar direcção. Mesmo que as condições precárias da rede significa que não há atualizações para 80ms, o motor pode manter extrapolando a partir da direção das duas atualizações anteriores. Este, porém, é apenas conjecturas, eo objeto pode saltar se a próxima atualização mostra o objeto tem de fato ido para outro lugar.

O motor de multijogador permite que você use três possíveis modos de interpolação de valores: linear (como, por posições de objetos), angular (como, por ângulos de objetos), e nenhuma (para dados que não devem ser interpolados, como um booleano que indica se um laser está ligado ou não).

Variações

Latency

Deve notar-se que a latência pode mudar. Por exemplo, um dispositivo de roteamento em algum lugar pode ficar sobrecarregada, e os dados entre dois jogadores de repente fica re-roteadas por um caminho diferente, que é mais lento; ou talvez um novo caminho mais rápido se torna disponível. Latências vezes também melhorar gradualmente no primeiro minuto ou mais depois da conexão, como os dispositivos ao longo da rota de conexão gradualmente otimizar a conexão e descobrir o caminho mais rápido possível. A latência é constantemente reavaliado para detectar tais variações.

Se a latência diminui, o motor multijogador funciona temporariamente o jogo de uma forma muito ligeira fast-forward para que ele reduz o quão longe você está vendo o jogo. Por outro lado, se a latência aumenta muito ligeiramente executa o jogo em câmera lenta e aumenta o quão longe você está vendo o jogo. Isso é necessário para evitar o movimento instável, irregular que ocorre quando os 80ms atrasar já não cobre nenhuma atualização. Essas adaptações devem acontecer lentamente o suficiente para ser imperceptível, mas ajuda a garantir a melhor experiência possível, mesmo que a qualidade da conexão varia durante o jogo.

Compensating Para o host

O anfitrião tem a versão autoritária do jogo. Eles têm latência zero, uma vez que não há necessidade de transmitir dados para si. Em outras palavras, o anfitrião está participando do jogo "real", e os colegas estão fazendo o seu melhor para tornar o mesmo jogo com atualizações atrasadas e possivelmente irregulares do host. O anfitrião tem uma ligeira vantagem gameplay como resultado.

Você pode pensar que o anfitrião precisa para interpolar entre as atualizações das posições de objetos recebidos de pares. Este, na verdade, não acontece, porque os colegas não devem contar para o anfitrião onde eles estão. Na verdade, o anfitrião deve dizer aos colegas onde estão. A razão para isso é abordado na próxima seção.

  • 0 Comments

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