Velocidad de modelado de propagación de información ligera en simulación de combate espacial

29

Estoy trabajando en un simulador de combate espacial que tiene lugar en áreas relativamente vastas (un cubo de espacio ~ 20 minutos luz por lado) y utiliza (en su mayoría) física realista. Uno de los elementos clave que quiero modelar es la velocidad de propagación de la información en el espacio de batalla, es decir, si el jugador A activa su impulso principal en un lado del espacio de batalla, hay un retraso de 20 minutos antes de que el jugador B lo vea y puede reaccionar a eso

Incluso para espacios de batalla relativamente pequeños, este es un factor importante dada la velocidad involucrada. Un barco de 500 m de longitud que haga 30kps se desplazará por completo en 1/60 de segundo, por lo que incluso atacar a un oponente a solo unas décimas de segundo de luz se verá afectado por el retraso de la luz.

No he visto esto antes, y me pregunto si hay algunas mejores prácticas para modelar esto. En este momento estoy marcando la hora de cada evento y marcándolo con una ubicación, poniéndolo en una cola, y luego cada marca comprobando para ver si alguno de los objetos en el mundo del juego está nuevamente en el borde del cono de luz y agrego el evento a su cola de sensores. Lo optimizaré (pero aún no lo he hecho) eliminando cualquier evento que ya haya sido detectado por todos los objetos que posiblemente puedan sentirlo, pero aún así, creo que esto se volverá bastante engorroso y comerá mucho de ciclos si hay cientos de objetos de detección en juego (lo cual es bastante rutinario).

¿Hay modelos de datos que serían más adecuados para esto que debería consultar?

John Biesnecker
fuente
77
No sé la respuesta, pero diré ¡qué pregunta más linda!
Tim Holt el
Whoa! Los juegos son principalmente sobre visualización. Necesito saber cómo planeas visualizar a tus oponentes cuando los píxeles son demasiado grandes. Indicadores simples de HUD? ¿Un juego de aventura en modo texto? ¡Por favor iluminame!
Jonas Byström
1
Dices que tu modelo es físicamente preciso. ¿Es eso newtoniano o relativista? Eso podría hacer una gran diferencia en tales escalas.
MSalters
1
No es que responda la pregunta, pero tal vez mirar A Slower Speed ​​of Light te dará algunas ideas.
Michael Pankov
@ JonasByström: la vista de larga distancia es bastante compleja, y estoy tratando de limpiarla. Básicamente, espero que sea una vista probabilística de dónde estará el objetivo en el futuro, según el retraso de la luz y las estimaciones de la computadora de la nave del máximo delta-v del objetivo. Sin embargo, en este momento es bastante menos impresionante que eso :)
John Biesnecker

Respuestas:

9

Solo lluvia de ideas aquí ...

Curiosamente, el retraso de la red es tu amigo en este caso. Como desea que ocurra un retraso para algunos paquetes de datos, al menos si se trata de dibujar. Pero en lugar de un retraso base que cada jugador normalmente tendría para todos los paquetes de datos afectados solo por la velocidad de su red, debe aplicar un retraso específico para cada evento a cada jugador en función del retraso de la velocidad de la luz.

Por lo general, el servidor enviaría actualizaciones a todos los clientes al mismo tiempo, pero lo que necesita es que el servidor calcule el "retraso ligero" para cada evento (en función de la distancia del espectador) y luego no envíe una actualización hasta que hora.

Por lo tanto, para cada evento, calcule el retraso de tiempo entre el evento y cada jugador, luego ponga en cola ese evento para que no se envíe al sorteo hasta que haya pasado el tiempo de retraso.

Esto no aborda el efecto del cambio de posición o velocidad del jugador después de que ocurra el evento, pero podría ajustar los eventos que se habían puesto en cola en función de los cambios del jugador. Un jugador comienza a acercarse, acercar el evento a tiempo. El jugador se aleja, se aleja a tiempo.

El cambio Doppler sería algo interesante para incluir en la mezcla, en función del delta de movimiento entre el espectador y el evento.

Tim Holt
fuente
Ya estoy modelando el cambio de posición y velocidad. A pesar de la escala, los objetos en el juego generalmente no avanzan una fracción apreciable de la velocidad de la luz, por lo que los eventos los alcanzan con relativa facilidad, pero hay un control en cada tic si el receptor está en la esfera que podría haber visto el evento, por lo que si te mueves hacia un buen clip o lo alejas, esto puede afectarlo con unos pocos tics. ¡Sin embargo, Doppler sería interesante! Algo a tener en cuenta. :-)
John Biesnecker
2
Algo a tener en cuenta, si utiliza este método, nadie que escanee los paquetes podrá obtener información antes de lo que debería. Eve Online hace algo similar con los barcos encubiertos. Cuando un barco se mueve en un área, todos los clientes son notificados, pero cuando un barco encubierto se mueve, a los clientes no se les dice nada. De lo contrario, aunque el cliente no muestre la nave, los paquetes lo harían.
Ray Britton
5

La pregunta es: ¿qué tan exacta necesita que sea su imagen retrasada para que se desarrolle realmente? Si está buscando una precisión del 100%, necesitará guardar las acciones o el estado de cada objeto en el mapa en cada tic y, como usted dice, reproducirlos en un retraso basado en la distancia. Si no le importa mucho la precisión, que rara vez necesita en los juegos, puede guardar el estado a intervalos y extrapolar entre ellos cuando se recupere el retraso. Puede optimizar no guardando actualizaciones idénticas.

Alternativamente, puede vectorizar todo el movimiento y guardar una ruta para cada objeto junto con un tiempo de inicio visto desde un observador universal. Luego puede calcular la posición esperada de un objeto para cada observador en función del contador de tiempo universal y la hora local en función de los nodos de ruta que ha guardado. Cuando la marca de tiempo de un nodo de ruta va detrás de la luz de todos los objetos relevantes, la descartas.

Editar: lo anterior supone que vas a hacer trampa en la relatividad básica al tener un observador absoluto (supongo que el jugador). Esto le robaría algunos de los aspectos más interesantes de la dilatación del tiempo, pero modelarlos sería un proyecto en sí mismo> _>

jono
fuente