Padrões para o comportamento de IA de corrida

9

Então, digamos que você tenha uma IA de corrida baseada em splines. Suponha que ele já possa lidar com os conceitos básicos de frenagem e direção na pista.

Como você estruturaria e implementaria comportamentos de prevenção de colisões, ultrapassagem, desenho, bloqueio e outros comportamentos para que seus carros continuassem competitivos, mas fizessem corridas interessantes?

Links para documentos / implementações seriam incríveis.

tenpn
fonte
que tipo de motor você está usando,
Harshal Benake

Respostas:

7

Você já viu Comportamentos de direção para personagens autônomos ? Eu consideraria um algoritmo "CrowdPathFollowing" para permanecer na pista e evitar colisões. Você pode ser capaz de misturar um comportamento "Seguimento do campo de fluxo" para desenhar, passar e bloquear - faça o campo de fluxo seguir o passado e o caminho projetado do jogador, mas se dividir em torno de sua localização atual.

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

Isso deve fazer com que a IA tenda a seguir diretamente atrás dele e se mover diretamente na frente para bloquear, e ainda assim incentivar passes limpos.

AShelly
fonte
11
Estou ciente dos boids, mas é uma boa referência. Estou com um pouco de medo de muitos comportamentos (permanecer na linha de corrida, evitar carros, bloqueios, correntes de ar etc.) interagindo de maneiras muito complexas para sintonizar e acabando com uma colisão ocasional. Isso é bom para pedestres, mas catastrófico para carros de corrida que precisam continuar em movimento.
Tenpn
Eu trabalhei com a API OpenSteer, que implementa muitas dessas coisas. Eu achei muito fácil de ajustar. No seu caso, eu faria o peso "SteerToAvoidCollision" muito alto. Não sei em quais veículos você está pilotando, mas acho que, se você acertar na grande maioria dos casos, a colisão ocasional ou o bash ocasionais devido a um case de borda provavelmente serão bem realistas ...
Ashelly
Aquilo era veículos de direção ou algo mais? Tenho medo de situações que causam problemas, como dois veículos à sua esquerda e um à sua direita. O vetor médio resultaria em um movimento certo, mesmo que isso o colocasse em contato com o veículo da direita.
Dezpn 09/08
Eu estava trabalhando principalmente com pedestres, então não posso jurar que funcionará. Uma coisa a lembrar é que não precisa ser uma mistura de comportamentos - pode ser uma hierarquia. Assim, você pode evitar que colisões tenham uma prioridade mais alta do que qualquer outra coisa. No caso em que você descreve, o carro só daria certo até que o caminho previsto cruzasse o caminho do carro direito, evitando que esse colisão se tornasse a força dominante. Você também pode adicionar condições especiais: por exemplo, se nenhum caminho seguro for encontrado em N quadros, adicione uma frenagem forte.
ASHelly
2

Houve uma sessão parcialmente sobre isso na conferência AI Game Dev deste ano em Paris. Você pode encontrar os slides e um resumo aqui:

http://aigamedev.com/open/coverage/paris10-report/#session9

fatia de limão
fonte
11
O link para o ppt é 404.> _ <
tenpn
ta - a abordagem dele é interessante, mas o código com o qual estou trabalhando atualmente é realmente mais avançado!
Dezpn
1

Anti-Padrão: Oponentes adaptando sua velocidade

Infelizmente, não sou capaz de lhe dar padrões, mas gostaria de nomear um anti-padrão. Por favor, não tente adaptar a velocidade dos drivers de IA à do jogador humano. A idéia por trás disso é criar condições justas de corrida para amadores e profissionais e abandonar a necessidade de vários níveis de dificuldade (e sua implementação).

No entanto, o que parece bom no papel acaba sendo péssimo na prática e a série de MotoGP falhou miseravelmente ao implementar esse comportamento. Acabou nos adversários dirigindo a 5mp / h quando você ficou parado por alguns segundos e na impossibilidade de saber se você melhorou no jogo (feedback muito ruim)

Dave O.
fonte
Obrigado. Estou falando especificamente sobre comportamentos interessantes de corrida aqui, em vez de equilibrar ou níveis de dificuldade, mas vou ter isso em mente.
tenpn
5
Quase todos os jogos de corrida incluem alguma forma de elástico para manter o jogador em ação ou manter a IA perto de um bom jogador. O truque é ser sutil com ele e saber quando desligá-lo. Uma vez que o jogador percebe, eles se sentem enganados.
wkerslake
A situação do MotoGP parece um problema de levar isso longe demais, em vez de um problema com as faixas de borracha em geral. Não é irracional para os pilotos da frente dirigir com mais cautela e os carros atrás tentarem desesperadamente fechar a lacuna, e acho que vale a pena modelá-la dessa maneira e apresentá-la de forma transparente ao jogador.
perfil completo de Jibb Smart
Este é um post interessante sobre o tema: gamasutra.com/view/feature/3920/… Basicamente, eles colocam você em 3 grupos de corredores de IA e permitem avançar de grupo em grupo durante o curso da corrida.
Felsir