Поради щодо створення AI для 2D гоночної гри


10

У мене є шкільний проект зі створення AI для 2D гоночної гри, в якій він буде конкурувати з декількома іншими ШІ ( без зіткнення ).

Нам дається чорно-біле растрове зображення гоночної траси, нам дозволяється вибирати основні статистичні дані для нашого автомобіля (керованість, прискорення, максимальна швидкість та гальма) після отримання карти. AI підключається до сервера гри та дає йому кілька разів секундні номери для поточного прискорення та керування. Я вибрав мову, до речі. Питання:

Яка найкраща стратегія чи алгоритм (оскільки я хочу спробувати перемогу)? На даний момент я маю на увазі деякі ідеї, знайдені в мережі, і одна-дві власні, але я хотів би, перш ніж почати кодувати, що моя перспектива є однією з найкращих. Які хороші книги з цього приводу є? На які сайти слід звернутися?

2d  c++  ai  racing 

1
Це залежало б від точності моделювання фізики. Якщо фізики немає, я б увесь час ходив на повній швидкості ... інакше я б почав гальмувати перед кожним поворотом і швидко проходити на 2/3 повороту.
Нейт

Відповіді:


2

Налаштуйте базовий AI, а потім налаштуйте API для управління власним автомобілем. Якщо ви можете перемогти його, вам слід створити алгоритм запису, який може позитивно підсилити ваш AI. Це може бути нейронною мережею, щоб налаштувати дії вашого AI. Такі як поступове гальмування в кут тощо.

Чи дозволяється вам використовувати зовнішні бібліотеки у своєму проекті? Якщо так, то пропоную поглянути на FANN . Це швидка бібліотека нейронних мереж; щоб врятувати вас, пишучи своє. Якщо вам потрібен вихідний код, ви завжди можете його написати самостійно, проте це може зайняти деякий час.


1
Здається, мені надмірно.
o0 '.

2
@ Lo'oris Безумовно, тим більше, що це, мабуть, досить простий шкільний проект з обмеженою кількістю часу, щоб створити рішення, я не думаю, що контрольоване навчання - це спосіб вирішити це, лише заради практичності.
Рей Дей

Це не так важко налаштувати, і залежно від рівня теми, яку займає ОП, цей підхід не обов'язково може бути надмірним. Це те, що я хотів (і зробив), його задоволення, і може бути досить простим для досягнення ефективних результатів. Найважча частина - це визначення того, що слід зробити під час попередньої обробки ...
deceleratedcaviar

2

Якщо ви можете попередньо обробити карту перед запуском AI, то просто обчисліть найкращі гоночні лінії через сегменти карти.

У цій публікації на GameDev.net є ряд пропозицій.

У книгах AI Wisdom є багато статей про гоночний ШІ. Я напевно рекомендую їх, особливо першу, в якій є статті, що описують, як можна представити карту як структуру даних у вашому AI.

Ще один метод, який я бачив, - це просте підкріплення навчання (Q-навчання), яке, ймовірно, потребує декількох тисяч ітерацій, щоб отримати оптимальний шлях. Це описано в цій роботі: http://www.cs.ubc.ca/~zhijin/540report.pdf


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.