Estou construindo um jogo multiplayer em tempo real que executa o mesmo loop 'físico' no cliente e no servidor. Estou usando um comportamento de direção 'vaguear' que é um movimento aleatório essencial. O cliente e o servidor geram números aleatórios diferentes ao executar os algoritmos de desvio.
Gostaria de saber como posso manter um movimento naturalmente aleatório, mas use alguma constante que garanta que o cliente e o servidor cheguem à mesma conclusão.
Respostas:
Você pode usar semente aleatória . Selecione o mesmo valor de 32 bits no servidor e no cliente (ou o servidor pode enviá-lo ao cliente no início). Use-o como semente para gerador aleatório. Você pode enviar a semente real do servidor para o cliente com a atualização do estado do jogo. Se você não quiser enviá-lo, verifique se o cliente e o servidor geram o mesmo número de números aleatórios por esse gerador aleatório.
O que você deve saber antes de decidir não enviar a semente real ao cliente:
fonte
Se o servidor e o cliente concordarem com a semente, a maioria dos algoritmos aleatórios produzirá os mesmos valores.
fonte