Estou programando um servidor dedicado em c # usando DLLs do BeamServer2. No começo, eu queria poder ver outros jogadores se mexendo no nosso mapa Omuni já criado. Fiz isso enviando sua posição ao servidor em cada quadro. Isso deu certo e eu pude brincar com alguns amigos, mas o movimento não foi isento de problemas. Então, comecei a tentar adicionar suavização de movimento e também alguma segurança para que eles não pudessem simplesmente enviar uma posição falsa ao servidor sem que o servidor o impedisse de alcançar outros clientes.
O que eu fiz foi criar um masterClient que possui um motionController no remotePlayer. Quando um cliente quer se mover, ele se move localmente e envia uma mensagem ao servidor com sua direção para se mover. O servidor pega a velocidade e envia para o masterClient. O masterClient que move o remotePlayer da mesma forma que o remotePlayer se move. Quando ele para de se mover, ele envia uma mensagem com sua posição. O masterclient que verifica se a posição que ele chegou é tão próxima quanto a posição que ele tem do cliente, se é realista de acordo com o ping do cliente que o servidor o coloca na posição do cliente.
Isso funciona, mas ainda tenho um problema de atraso e não tenho certeza de como corrigir isso. Devo suavizar o movimento do cliente, mas descobri que posso apenas lerp (x / 2, y / 2, z / 2) para a posição e colocá-lo na posição real no próximo quadro; falhei nisso e tentará novamente em breve. Mesmo se isso for adicionado, não tenho certeza se o lagg foi corrigido.
Quaisquer outras técnicas, sugestões, perguntas, ...? Obrigado, Diede.