Estoy programando un servidor dedicado en C # usando BeamServer2 DLL's. Al principio quería ver a otros jugadores moverse en nuestro mapa Omuni ya hecho. Esto lo hice simplemente enviando su posición al servidor cada trama. Esto funcionó y pude jugar con algunos amigos, pero el movimiento no fue lento. Así que comencé a tratar de agregar suavizado de movimiento y también algo de seguridad para que no puedan enviar una posición falsa al servidor sin que el servidor impida que llegue a los otros clientes.
Lo que hice, hice un masterClient que tiene un control de movimiento en el RemotePlayer. Cuando un cliente quiere moverse, se mueve localmente y envía un mensaje al servidor con la dirección de moverse. El servidor que toma su velocidad y lo envía al masterClient. El MasterClient que mueve el RemotePlayer al igual que el RemotePlayer se mueve a sí mismo. Cuando deja de moverse, envía un mensaje con su posición. El cliente maestro que comprueba si la posición a la que ha llegado es tan cercana como la posición que tiene del cliente, si es realista de acuerdo con el ping del cliente, el servidor lo coloca en la posición del cliente.
Esto funciona, pero todavía tengo un problema de retraso y no estoy seguro de cómo solucionarlo. Debo hacer movimientos suaves en el cliente, pero descubrí que solo puedo saltar (x / 2, y / 2, z / 2) a la posición y colocarlo en la posición real el próximo cuadro, fallé en eso y yo Lo intentaremos nuevamente pronto. Incluso si se agrega eso, no estoy seguro de si el retraso está reparado.
¿Alguna otra técnica, sugerencia, pregunta, ...? Gracias Diede.