Patrones para competir con el comportamiento de IA

9

Entonces, digamos que tienes una IA de carreras basada en spline. Suponga que ya puede manejar los conceptos básicos de frenado y dirección alrededor de la pista.

¿Cómo estructuraría e implementaría la prevención de colisiones, adelantamientos, borradores, bloqueos y otros comportamientos para que sus autos sigan siendo competitivos pero hagan carreras interesantes?

Los enlaces a documentos / implementaciones serían increíbles.

tenpn
fuente
qué tipo de motor está utilizando,
Harshal Benake

Respuestas:

7

¿Has visto comportamientos de dirección para personajes autónomos ? Consideraría un algoritmo " CrowdPathFollowing" para mantenerse en la pista y evitar colisiones. Es posible que pueda mezclar un comportamiento de "Seguimiento del campo de flujo" para dibujar, pasar y bloquear: haga que el campo de flujo siga la trayectoria pasada y proyectada del jugador, pero se divida en torno a su ubicación actual.

      /-------------\
 ----<  [playerCar]  >-----
      \-------------/

Eso debería hacer que la IA tenga la tendencia de seguirlo directamente detrás de él y moverse directamente al frente para bloquear, y al mismo tiempo alentar pases limpios.

AShelly
fuente
1
Soy consciente de los boids, pero es una buena referencia. Tengo un poco de miedo de muchos comportamientos (permanecer en la línea de carreras, evitar autos, bloquear, reclutar, etc.) interactuando de maneras que son demasiado complejas para sintonizar, y terminando con la colisión ocasional de casos extremos. Esto está bien para los peatones, pero catastrófico para los autos de carrera que necesitan mantenerse en movimiento.
Tenpn
He trabajado con la API OpenSteer que implementa muchas de estas cosas. Me ha resultado bastante fácil sintonizar. En su caso, haría que el peso de "SteerToAvoidCollision" sea muy alto. No sé qué vehículos son carreras, pero yo creo que si se hace bien para la gran mayoría de los casos, entonces el golpe ocasional restante o golpe debido a un caso extremo es probablemente bastante realista ....
AShelly
¿Eran vehículos de dirección o algo más? Tengo miedo de situaciones que causen problemas, como dos vehículos adelante a su izquierda y uno adelante a su derecha. El vector promedio daría como resultado un movimiento correcto, aunque eso podría ponerlo en contacto con el vehículo de la derecha.
Tenpn
Estaba trabajando principalmente con peatones, así que no puedo jurar que funcionará. Una cosa para recordar es que no tiene que ser una combinación de comportamientos, puede ser una jerarquía. Por lo tanto, puede evitar que las colisiones tengan mayor prioridad que cualquier otra cosa. En el caso de que describa, el automóvil solo iría a la derecha hasta que el camino predicho se cruzara con el camino del automóvil derecho, en ese momento evitar que el colisión se convierta en la fuerza principal. También puede agregar condiciones especiales: por ejemplo, si no se encuentra una ruta segura en N cuadros, agregue el frenado fuerte.
AShelly
1

Anti-Patrón: oponentes que adaptan su velocidad

Desafortunadamente no puedo darle patrones, pero me gustaría nombrar un patrón anti. No intentes adaptar la velocidad de los controladores de IA a la del jugador humano. La idea detrás de esto es crear condiciones de carrera justas para aficionados y profesionales y abandonar la necesidad de múltiples niveles de dificultad (y su implementación).

Sin embargo, lo que suena bien en el papel resulta horrible en la práctica y la serie MotoGP falló miserablemente en la implementación de este comportamiento. Terminó en los oponentes conduciendo a 5mp / h cuando te quedaste quieto durante un par de segundos y la imposibilidad de saber si has mejorado en el juego (muy mal feedback)

Dave O.
fuente
Gracias. Estoy hablando específicamente de comportamientos interesantes de raza aquí en lugar de equilibrar o niveles de dificultad, pero lo tendré en cuenta.
Tenpn
55
Casi todos los juegos de carreras incluyen alguna forma de bandas de goma para mantener al jugador en la acción, o mantener la IA cerca del buen jugador. El truco es ser sutil y saber cuándo apagarlo. Una vez que el jugador se da cuenta, se siente engañado.
wkerslake
La situación de MotoGP parece un problema de llevarlo demasiado lejos, en lugar de un problema con las bandas de goma en general. No es irrazonable que los conductores en la parte delantera manejen con más precaución y los autos en la parte trasera intenten desesperadamente cerrar la brecha, y creo que tiene valor modelarlo de esa manera y presentarlo de manera transparente al jugador.
Jibb Smart
Esta es una publicación interesante sobre el tema: gamasutra.com/view/feature/3920/... Básicamente te colocan en 3 grupos de corredores de IA y te permiten avanzar de un grupo a otro durante el transcurso de la carrera.
Felsir