Estoy construyendo un juego multijugador en tiempo real que ejecuta el mismo ciclo de 'física' en el cliente y el servidor. Estoy usando un comportamiento de dirección 'deambular' que es un movimiento aleatorio esencial. El cliente y el servidor generan diferentes números aleatorios al ejecutar los algoritmos de desplazamiento.
Me pregunto cómo puedo mantener un movimiento de aspecto aleatorio natural, pero usar algo constante que asegure que el cliente y el servidor lleguen a la misma conclusión.
Respuestas:
Puedes usar semilla aleatoria . Seleccione el mismo valor de 32 bits en el servidor y el cliente (o el servidor puede enviarlo al cliente al inicio). Úselo como semilla para generador aleatorio. Puede enviar la semilla real del servidor al cliente con la actualización del estado del juego. Si no desea enviarlo, debe asegurarse de que el cliente y el servidor generen el mismo número de números aleatorios mediante este generador aleatorio.
Lo que debe saber antes de decidir no enviar semilla real al cliente:
fuente
Si tanto el servidor como el cliente están de acuerdo con la semilla, la mayoría de los algoritmos de aleatorización generarán los mismos valores.
fuente