Tenho que sincronizar o movimento de vários jogadores pela Internet e estou tentando descobrir a maneira mais segura de fazer isso.
O jogo é baseado em blocos, você só pode se mover em 4 direções, e cada movimento move o sprite 32px (com o tempo, é claro). Agora, se eu simplesmente enviasse essa ação de movimentação para o servidor, a qual seria transmitida a todos os jogadores, enquanto a tecla Walk estiver pressionada, para continuar andando, eu tenho que executar o próximo comando, enviá-lo ao servidor, e para todos os clientes, com o tempo, ou o movimento não será mais tranquilo. Vi isso em outros jogos, e pode ficar feio bem rápido, mesmo sem atrasos. Então, eu estou querendo saber se esta é mesmo uma opção viável. Esse parece ser um método muito bom para um jogador, já que é fácil e direto (basta executar a próxima ação de movimento a tempo e adicioná-la a uma lista), e você pode adicionar facilmente o movimento do mouse (clicando em algum bloco), para adicionar um caminho a uma fila que é percorrida.
A outra coisa que me veio à mente foi enviar as informações de que alguém começou a se mover em alguma direção e, novamente, uma vez que ele parou ou mudou de direção, junto com a posição, para que o sprite apareça na posição correta, ou melhor, para que a posição pode ser corrigida se estiver errada. Isso deve (espero) causar problemas apenas se alguém realmente estiver atrasado; nesse caso, é de se esperar. Para que isso funcione, eu precisaria de algum tipo de fila, onde as mudanças de direção recebidas e outras coisas são salvas, para que o sprite saiba para onde ir, após a conclusão do movimento atual para o próximo bloco. Isso pode realmente funcionar, mas parece meio complicado demais. Embora possa ser a única maneira de fazer isso, sem risco de gagueira. Se uma parada ou mudança de direção é recebida no lado do cliente, é ' s salvos em uma fila e o char continua se movendo para as coordenadas especificadas, antes de parar ou mudar de direção. Se o novo comando chegar tarde demais, também haverá gagueira ...
Estou com dificuldades para decidir sobre um método e ainda não consegui encontrar nenhum exemplo disso. Meu principal problema é manter o movimento do bloco suave, e é por isso que outros tópicos relacionados à sincronização do movimento baseado em pixel não estão ajudando muito.
Qual é a maneira "padrão" de fazer isso?