Dicas para criar uma IA para um jogo de corrida 2D

10

Eu tenho um projeto escolar para construir uma IA para um jogo de corrida 2D, no qual competirá com várias outras IAs ( sem colisão ).

Nos é dada uma imagem bitmap em preto e branco da pista de corrida; podemos escolher estatísticas básicas para o nosso carro (manuseio, aceleração, velocidade máxima e freios) depois de recebermos o mapa. A IA se conecta ao servidor do jogo e fornece várias vezes um segundo número para a atual aceleração e direção. A linguagem que eu escolhi é C ++, a propósito. As perguntas são:

Qual é a melhor estratégia ou algoritmo (já que quero tentar vencer)? Atualmente, tenho em mente algumas idéias encontradas na rede e uma ou duas minhas, mas gostaria antes de começar a codificar que minha perspectiva é uma das melhores. Que bons livros existem sobre esse assunto? A quais sites devo me referir?


fonte
1
Isso dependeria da precisão da simulação física. Se não houvesse física, eu iria a toda velocidade o tempo todo ... caso contrário, começaria a desacelerar antes de cada turno e aceleraria em 2/3 no turno.
Nate

Respostas:

2

Configure uma IA básica e, em seguida, configure uma API para lidar com seu próprio carro. Se você conseguir vencê-lo, configure um algoritmo de gravação que possa reforçar positivamente sua IA. Essa poderia ser uma rede neural para ajustar as ações da sua IA. Como travagem gradual em um canto, etc.

Você tem permissão para usar bibliotecas externas em seu projeto? Nesse caso, sugiro que você olhe para a FANN . É uma biblioteca de rede neural rápida; para poupar você escrevendo seus próprios. Se você precisar do código-fonte, sempre poderá escrever por conta própria, mas pode levar algum tempo.

deceleratedcaviar
fonte
1
Parece um exagero para mim.
o0 '.
2
@ Lo'oris Definitivamente, especialmente porque esse é provavelmente um projeto escolar bastante simples, com um tempo limitado para criar uma solução, não acho que o aprendizado supervisionado seja o caminho a seguir, apenas por uma questão de praticidade.
Raio Dey
Não é tão difícil de configurar e, dependendo do nível do assunto que o OP está fazendo, essa abordagem pode não ser necessariamente um exagero. É o que eu faria (e fiz), é divertido e pode ser bastante simples para alcançar resultados efetivos. A parte mais difícil é determinar o que deve ser feito no pré-processamento ...
deceleratedcaviar
2

Se você pode pré-processar o mapa antes de executar a IA, basta calcular as melhores linhas de corrida através dos segmentos do mapa.

Esta publicação no GameDev.net tem várias sugestões.

Os livros da AI Wisdom têm MUITOS artigos sobre IA de corrida. Definitivamente, eu os recomendaria, especialmente o primeiro que possui artigos que descrevem como você pode representar o mapa como uma estrutura de dados dentro da sua IA.

Outro método que eu vi é o aprendizado por reforço simples (Q-learning), que provavelmente levará alguns milhares de iterações para obter o caminho ideal. Está descrito neste documento: http://www.cs.ubc.ca/~zhijin/540report.pdf

Ray Dey
fonte