Советы по созданию ИИ для 2D гоночной игры

10

У меня есть школьный проект по созданию ИИ для 2D гоночной игры, в которой он будет конкурировать с несколькими другими ИИ ( без столкновений ).

Нам дают черно-белое растровое изображение гоночной трассы, после получения карты нам разрешается выбирать базовые характеристики нашего автомобиля (управляемость, ускорение, максимальная скорость и тормоза). ИИ подключается к игровому серверу и дает ему несколько раз секундные цифры для текущего ускорения и руления. Кстати, я выбрал язык C ++. Вопросы:

Какова лучшая стратегия или алгоритм (так как я хочу попробовать и выиграть)? В настоящее время я имею в виду некоторые идеи, найденные в сети, и одну или две мои собственные, но я хотел бы, прежде чем начать кодировать, что моя точка зрения является одной из лучших. Какие хорошие книги есть по этому вопросу? На какие сайты мне ссылаться?


источник
1
Это будет зависеть от точности физического моделирования. Если бы не было никакой физики, я бы все время шел на полной скорости ... в противном случае я бы начал замедляться перед каждым ходом и ускоряться на 2/3 за ход.
Nate

Ответы:

2

Настройте базовый ИИ, а затем настройте API для управления вашим собственным автомобилем. Если вы можете победить его, вы должны настроить алгоритм записи, который затем может положительно укрепить ваш ИИ. Это может быть нейронная сеть для настройки действий вашего ИИ. Например, постепенное торможение в повороте и т. Д.

Вам разрешено использовать внешние библиотеки в вашем проекте? Если это так, я предлагаю вам взглянуть на FANN . Это быстрая библиотека нейронных сетей; чтобы спасти тебя писать самому. Если вам нужен исходный код, вы всегда можете написать его самостоятельно, однако это может занять некоторое время.

deceleratedcaviar
источник
1
Кажется излишним для меня.
о0 '.
2
@ Lo'oris Определенно, тем более, что это, вероятно, довольно простой школьный проект с ограниченным количеством времени, чтобы создать решение, я не думаю, что контролируемое обучение - это способ пойти на это, просто ради практичности.
Рэй Дей
Его не так сложно настроить, и в зависимости от уровня предмета, которым занимается OP, этот подход не обязательно является излишним. Это то, что я бы (и сделал), это весело, и может быть довольно просто для достижения эффективных результатов. Самое сложное - это определить, что должно быть сделано при предварительной обработке ...
замедленная
2

Если вы можете предварительно обработать карту перед запуском ИИ, то просто рассчитайте лучшие гоночные линии по сегментам карты.

Этот пост на GameDev.net имеет ряд предложений.

В мудрости AI книгах есть много статей о гонках ИИ. Я определенно рекомендую их, особенно первую, в которой есть статьи, описывающие, как вы можете представить карту как структуру данных в вашем AI.

Другой метод, который я видел, это простое обучение с подкреплением (Q-learning), которое, вероятно, займет несколько тысяч итераций, чтобы найти оптимальный путь. Это описано в этой статье: http://www.cs.ubc.ca/~zhijin/540report.pdf

Рэй Дей
источник