Actualmente estoy desarrollando un shooter zombie de arriba hacia abajo, en tiempo real. Estoy codificando esto en Java, usando JBox2D como mi motor de física. He estado codificando la red esta semana, y ahora estoy a la altura de la sincronización física.
Estoy planeando usar el modelo predictivo de cliente / servidor autorizado, donde el cliente puede moverse libremente, siempre que el servidor lo apruebe más tarde. Esto implica que el cliente envía paquetes que contienen datos de movimiento al servidor, y el servidor calcula la latencia y vuelve a simular el mundo desde un estado anterior.
Mi problema es que mi motor de física actual, JBox2D (básicamente un puerto de Box2D), no admite la reversión del mundo, y aparentemente no es tan fácil serializar los datos mundiales. Tengo 2 soluciones, podría modificar / ampliar mi motor de física actual o escribir el mío.
Razones para escribir mi propio motor de física:
- Puedo eliminar funciones innecesarias. En un juego de arriba hacia abajo, solo necesito mecánicas de colisión y fuerzas de manejo. No hay gravedad involucrada.
- Puedo entender mejor el código, y [probablemente] sería más fácil implementar funciones de reversión
Razones para extender / modificar JBox2D
- Escribir mi propio motor de física sería una gran cantidad de trabajo, que podría ser engorroso
- JBox2D tiene una comunidad muy solidaria que me puede ayudar con mi desarrollo
- JBox2D, tiene optimizaciones específicas, para cosas como la detección de colisiones, que lo hacen útil
- Algunos trabajos ya se han hecho al respecto, pero se ha compartido poco código
¿Cuáles son tus opiniones? Este es mi primer juego, y no soy un desarrollador profesional de juegos. Si alguien pudiera proporcionar algunos enlaces al trabajo ya realizado en el área (preferiblemente usando JBox2D / Box2D / Java).
strictfp
todas partes, lo que afectará seriamente el rendimiento. De lo contrario, el servidor y el cliente pueden no obtener exactamente los mismos resultados. Recomendaría usar un punto fijo en su lugar.