Driver AI en juego de carreras


17

Tengo curiosidad por saber cómo podría controlar los autos en un juego de carreras.

¿Debería mi agente de IA controlar su automóvil con comandos como "acelerar en 0.35, volante en 0.5 a la derecha, frenar en 0.0"? ¿O debería calcular previamente una curva a la que se adhiere el automóvil, y las imágenes como el giro de las ruedas delanteras son solo para que todo se vea consistente? o hay otra manera?


44
La estrategia de "apegarse a la curva ideal" solo funciona mientras no haya interferencia. En el momento en que los agentes de IA comiencen a interactuar con otros autos (esquivándolos o embestidos), deberán improvisar.
Philipp

1
Sí, algo así como nodos a lo largo de la pista con dirección tipo boids.
MichaelHouse

1
Aquí hay un artículo sobre IA en el Rally 2 de Colin McRae
gre_gor

@gre_gor, este es un artículo muy útil, ¡gracias!
dargemir

Respuestas:


16

Podemos decir que, en algún nivel, el juego sigue un camino precalculado. Dado que las pistas del juego de carreras son (generalmente) una ruta pre-calculada de todos modos.

Incluso si estamos hablando de generar las pistas al azar, el juego debe haber calculado la porción actual de las pistas para el momento en que llega el automóvil.

Bueno, eso fue fácil. ¿Algo más al respecto?

Ambos, siguiendo un camino precalculado y controlando el automóvil sistemáticamente tienen usos en la industria del juego. La respuesta es usar ambos, más o menos.

En primer lugar, quiero mencionar que "calcular una curva" puede significar dos cosas:

  • Crear funciones que generarán la posición en la curva, teniendo como parámetro qué tan lejos desea consultar.

  • Crear una ruta, entendida como una lista de puntos (o instrucciones y otra información de control) a seguir.

El primero puede ser útil para la predicción o en algunas simulaciones físicas. Sin embargo, cuando hablamos de controlar un objeto, este último es el enfoque recomendado.

Nota: Para juegos más antiguos (1980), los otros autos eran más como obstáculos en movimiento. Estaban allí para que los evitaras y los superaras. No estamos hablando de eso.


  • Seguir una ruta calculada previamente: Esto es útil para cinemáticas o escenas repetibles. Por ejemplo, en GTA San Andreas, las misiones de persecución, el objetivo de persecución y todos los autos siguen una ruta predefinida (esto asegura que el objetivo de persecución pueda evitar el tráfico ※). Sin embargo, tan pronto como los perturba, vuelven al control de AI, en este caso, la IA tendrá que buscar el camino para llegar a donde debería estar siguiendo su camino normal.

    ※: De hecho, fue pregrabado. Grabar y reproducir fue una de las nuevas características del motor de juego GTA SA.

  • Controlado por AI:

    La IA en su forma más simple es una máquina de estados. Comprueba en qué estado se encuentra y ejecuta alguna acción dependiendo de eso. Me referiré a estas combinaciones de estado y acción como comportamientos. Las acciones no tienen que coincidir con el gamepad del jugador. Tampoco los comportamientos.

    Para un juego simple, probablemente solo necesites dos comportamientos notables: 1) si está en las pistas, entonces sigue la pista evitando otros autos y cualquier obstáculo y 2) si no está en las pistas, vuelve a las pistas.

    En esta etapa, no está lejos de seguir un camino (las pistas). Sin embargo, dado que las pistas no son realmente una línea, no estamos hablando de seguir un camino, sino de estar cerca de él (evitando otros autos y cualquier obstáculo). Lo que significa que la IA tiene que resolver "dirección, frenado y aceleración".

    Para un juego moderno, el automóvil también estará sujeto a la simulación física (para resolver la colisión y mantener el realismo). Debido a eso, cada iteración del ciclo del juego el automóvil se actualizará en función de su velocidad y aceleración, y también se aplicará "dirección, frenado y aceleración" (ajustes a la velocidad) para seguir el comportamiento actual.

    También quiero mencionar que los juegos modernos pueden tener comportamientos que son más complejos, por ejemplo, la IA puede elegir golpear a otro automóvil o bloquear su camino. De hecho, la IA puede incluso elegir cuál aplicar en función de alguna forma de aprendizaje automático, pero estoy divagando.

    Finalmente, tenga en cuenta que también puede ser útil tener un control más simple para los automóviles con IA fuera de la vista del jugador. Ya sea por rendimiento o por bandas de goma (que en este caso mantiene a los autos con IA cerca del jugador para mantener la carrera interesante, puede considerarse como la trampa de la IA cuando realmente no puedes dejar atrás a ningún oponente).


Acerca de la animación, generalmente no es una buena idea simular la física de las ruedas de forma independiente. Si lo haces, podría agregar realismo al juego, pero costará rendimiento. Por lo general, el juego animará las ruedas en función del comportamiento en lugar de expresar el comportamiento en términos de movimiento de las ruedas y simular las consecuencias.

Por supuesto, es posible que deba poner una consideración adicional en lo que sea que las ruedas estén en contacto con el suelo. Y quizás animando la suspensión.


Esta es una respuesta maravillosa, muchas gracias.
dargemir

0

Recomiendo separar el modelo de estado / física del automóvil del controlador del automóvil y hacer que el agente de IA y el controlador del jugador sean dos tipos de controlador intercambiable, con comandos de alto nivel como los que sugirió en su pregunta.

Esto tiene una serie de buenos efectos:

  • Puede implementar y depurar el modelo de física / estado una vez tanto para el jugador como para la IA
  • Cualquier característica nueva del modelo de física / estado se aplica inmediatamente tanto al jugador como a la IA.
  • Los coches de jugadores e IA se comportan de manera constante en la pista, lo que aumenta la equidad percibida y real (si quieres perjudicar a los corredores, por supuesto, puedes hacerlo cambiando los parámetros en los coches)
  • Varios tipos de soporte multijugador se vuelven mucho más fáciles de desarrollar.

Este es un caso particular de separación MVC , por cierto.


2
Me gusta esta respuesta, pero esa declaración final es simplemente absurda. Quítalo y tienes un punto de mí. ¿Separación de preocupaciones ? - Ciertamente. Pero MVC no se aplica en el contexto de su respuesta completa.
Ingeniero

1
Además del hecho de que el aspecto Ver no se discute en la pregunta o respuesta, ¿por qué crees que es absurdo enmarcar esto como MVC?
Russell Borogove
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.