Como é configurado um servidor para um jogo multiplayer?
Criei recentemente um jogo multiplayer snake, e é muito difícil que eu tenha antecipado.
>p>Parece que o seu jogo não é baseado em turnos, pois você perguntou sobre>p>como é que um jogador é notificado que outro jogador fez uma jogada em tempo real?Neste caso, você precisa resolver um problema difícil no jogo multiplayer, que é a latência, a latência causa 2 tipos de problema.
a) Como propagar mudanças de estado do Jogador A para o Jogador B
b) Como reconhecer o comando do Jogador A e renderizar sua UI o mais rápido possível
Para o problema a), ele pode ser simplificado como segue
- Player A move, e enviar o comando move para o servidor em T0.>li>Server recebeu o comando move em T100.>li>li>Server enviou o comando move para Player B.>li>Player B recebeu o comando move em T200.
Note: T significa tempo, vamos assumir que a unidade está em milisegundos, o que é razoável.
Isso significa que o PlayerB só sabe que o PlayerA moveu 200 milisegundos depois, isso é um problema quando há interação entre jogadores (que é o principal ponto de venda do jogo multiplayer), porque isso significa que jogadores diferentes têm uma visão um pouco diferente do jogo, o que pode causar algum resultado inconsistente, por exemplo Do ponto de vista do jogador A, ela matou o jogador B, mas do ponto de vista do jogador B, ele não é morto, como resolver isso depende do desenvolvedor do jogo.
Valve tem um artigo sobre esta compensação de Lag
Problema b) é mais grave pois afecta directamente a experiência de jogo, se o Jogador A premir um botão de mover, quer mostrar que ele se moveu imediatamente, e não 100 ms depois.
Isso normalmente é resolvido usando a previsão do cliente, significando que seu cliente precisa prever o que está acontecendo no servidor antes que o servidor reconheça o pedido do jogador.
Há algum artigo na internet,
Acho a série por gabriel muito útil
Multijogador de ritmo rápido (Parte I): Introduction
Shameless plug: I also wrote one as I find there is some missing details which might help beginners
How does Multiplayer Game sync their state? Part-1
Artigos semelhantes
- Que tipo de servidor e banco de dados você deve usar para um jogo online multiplayer, baseado em navegador com chat?
- Qual é a maneira eficiente de construir um servidor para um jogo multiplayer online?
- Um fundo branco consome mais energia num LCD do que se estivesse configurado para preto?
- Por que meu iPhone muda para 3G quando ele está configurado em 4G?