Tengo que sincronizar el movimiento de varios jugadores a través de Internet, y estoy tratando de encontrar la forma más segura de hacerlo.
El juego está basado en fichas, solo puedes moverte en 4 direcciones, y cada movimiento mueve el sprite 32px (con el tiempo, por supuesto). Ahora, si simplemente enviara esta acción de movimiento al servidor, que la transmitiría a todos los jugadores, mientras la tecla de caminar se mantiene presionada, para seguir caminando, tengo que tomar el siguiente comando, enviarlo al servidor, y para todos los clientes, a tiempo, o el movimiento ya no será fluido. Vi esto en otros juegos, y puede ponerse feo bastante rápido, incluso sin retraso. Así que me pregunto si esta es incluso una opción viable. Sin embargo, este parece ser un método muy bueno para un solo jugador, ya que es fácil y directo (solo toma la siguiente acción de movimiento a tiempo y agrégalo a una lista), y puedes agregar fácilmente el movimiento del mouse (haciendo clic en un mosaico), para agregar un camino a una cola, eso se camina.
Lo otro que me vino a la mente fue enviar la información de que alguien comenzó a moverse en alguna dirección, y nuevamente una vez que se detuvo o cambió la dirección, junto con la posición, para que el sprite aparezca en la posición correcta, o más bien para que la posición se puede arreglar si está mal. Esto (con suerte) solo debería causar problemas si alguien realmente está rezagado, en cuyo caso es de esperar. Sin embargo, para que esto funcione, necesitaría algún tipo de cola, donde los cambios de dirección entrante y las cosas se guardan, para que el sprite sepa a dónde ir, después de que el movimiento actual al siguiente mosaico haya terminado. En realidad, esto podría funcionar, pero suena un poco complicado. Aunque podría ser la única forma de hacerlo, sin riesgo de tartamudeo. Si se recibe una parada o cambio de dirección en el lado del cliente, ' s se guarda en una cola y el personaje sigue moviéndose a las coordenadas especificadas, antes de detenerse o cambiar de dirección. Si el nuevo comando llega demasiado tarde, también habrá tartamudeos, por supuesto ...
Me está costando decidirse por un método, y todavía no pude encontrar ningún ejemplo para esto. Mi principal problema es mantener el movimiento del mosaico suave, por lo que otros temas relacionados con la sincronización del movimiento basado en píxeles no están ayudando demasiado.
¿Cuál es la forma "estándar" de hacer esto?