Soy un principiante absoluto con el desarrollo de juegos y todo lo que sé sobre cómo evitar / resolver colisiones, lo aprendí en este sitio o a través de él la semana pasada ... así que no dude en corregirme si lo que pregunto aquí es basado en suposiciones erróneas / malentendidos. Hice todo lo posible para ser claro, pero dicho esto, el tema aún es nuevo para mí.
Vehículos
En mi juego, tengo vehículos que se mueven de forma autónoma. Se colocan en un espacio 3D y su movimiento se rige por una serie de variables que son diferentes para cada vehículo. Los de interés aquí son principalmente:
- Solo movimiento hacia adelante .
- Una velocidad que puede variar entre min y max, pero cuyo min no es (incluso cercano a) cero.
- Un radio de dirección que depende de la velocidad (a mayor velocidad, mayor radio)
- Dos aceleraciones máximas (para disminuir y aumentar la velocidad)
Gol
Mi objetivo es implementar algún tipo de IA que evite la colisión al 100% (es decir, estaré seguro de que los vehículos nunca colisionarán).
Diseño
- Aunque preferiría más la idea de tener la IA "a bordo" (es decir, cada vehículo tiene su propia "IA para evitar colisiones", eventualmente consultar y / o enviar mensajes a otros vehículos) también es posible para mí implementar la CA AI en un nivel central (envío de comandos a los vehículos).
- En la mayoría de los casos, el vehículo simplemente tendrá que alejarse unos de otros en cualquier dirección, pero en ciertas circunstancias, deberán evitar la colisión y dirigirse hacia el mismo objetivo.
Lo que encontré hasta ahora y dónde me quedé atrapado
Dentro de los muchos enlaces que encontré en otras preguntas en este mismo sitio, encontré de uso particular estos:
Si bien estos tres enlaces "me abrieron los ojos" de muchas maneras, no tengo claro de inmediato cómo usar esa información en mi caso. En particular, el artículo # 2 solo "intenta" prevenir la colisión (pero las colisiones ocurren de vez en cuando). Si bien el artículo 3 debe detener los vehículos a veces para evitar colisiones.
Lo que también noté es que los algoritmos para evitar colisiones vinculados anteriormente usan una "proyección instantánea" de velocidad lineal para verificar si algo está en camino del vehículo. Me preguntaba si esto es suficiente en mi caso o si tuve que proyectar mi posición de una manera más realista (por ejemplo: si tengo 60 ° en una dirección de 90 ° a la derecha, debo calcular mi posición para el resto del tiempo). 30 ° de la curva, y luego asumiendo un movimiento lineal).
Finalmente, tengo mucho miedo a los callejones sin salida . En otras palabras: aunque la densidad de vehículos en el mundo será bastante baja, me preocupa que, dado un cierto número de vehículos que convergen hacia el mismo punto, una vez que se den cuenta de que están en curso de colisión, cualquier maniobra evasiva será imposible ya que traería el vehículo en un camino de colisión con algunos otros.
Pregunta
¿Cómo puedo alcanzar mi "objetivo"? Una explicación en profundidad es, por supuesto, muy apreciada, pero los enlaces a recursos externos también serían de gran ayuda (estoy seguro de que no soy el primero en este problema, pero ¿probablemente utilicé las palabras clave incorrectas para buscar en la web? )
¡Gracias de antemano por su ayuda!