Шофер AI в гоночній грі


17

Мені цікаво, як я міг керувати автомобілями в гоночній грі.

Чи повинен мій агент AI керувати своїм автомобілем такими командами, як "дросель на 0,35, рульове колесо на 0,5 праворуч, гальмо на 0,0"? Або я повинен заздалегідь обчислити криву, до якої стикається автомобіль, і наочності, як передні передні колеса, тільки для того, щоб все виглядало послідовно? Або є якийсь інший спосіб?


4
Стратегія "дотримуватися ідеальної кривої" працює лише до тих пір, поки немає втручання. У момент, коли агенти ШІ почнуть взаємодіяти з іншими автомобілями (ухиляючись від них або забиваючись), їм потрібно буде імпровізувати.
Філіп

1
Так, щось на кшталт вузлів уздовж колії із рульовим керуванням.
MichaelHouse

1
Ось стаття про AI на ралі Коліна
МакРі

@gre_gor, це дуже корисна стаття, дякую!
dargemir

Відповіді:


16

Можна сказати, що на якомусь рівні гра йде за попередньо обчисленим шляхом. Оскільки треки гоночної гри - це, як правило, попередньо обчислений шлях.

Навіть якщо ми говоримо про генерування доріжок випадковим чином, гра, мабуть, обчислила поточну частину треків на той момент, коли машина потрапить туди.

Ну, це було легко. Що-небудь ще про це?

Обидва, слідуючи попередньо обчисленому шляху та систематично контролюючи автомобіль, мають систематичне використання в ігровій індустрії. Відповідь - використовувати і те, і інше.

Спочатку хочу зазначити, що "обчислення кривої" може означати дві речі:

  • Створення функцій, які виводять положення на кривій, маючи в якості параметра, наскільки далеко на ній ви хочете запитувати.

  • Створення контуру, що розуміється як перелік точок (або інструкцій та іншої керуючої інформації), які слід дотримуватися.

Перший може бути корисним для прогнозування або в деяких фізичних моделюваннях. Однак, коли ми говоримо про управління об'єктом, останній є рекомендованим підходом.

Примітка. Для старих ігор (1980-х років) інші автомобілі, де більше подобаються переміщення перешкод. Вони були там для вас, щоб уникнути їх і перевершити їх. Ми не говоримо про те.


  • Дотримуючись попередньо обчисленого шляху: Це корисно для кінематографічних творів або повторюваних сцен. Наприклад, у GTA San Andreas, на виїзних місіях переслідується ціль, і всі машини слідують заздалегідь визначеним шляхом (це гарантує, що ціль погоні може уникнути руху the). Однак, як тільки ви їх збурюєте, вони повертаються до управління AI, в цьому випадку AI доведеться знайти шлях, щоб дістатися туди, де він повинен слідувати його звичайному шляху.

    ※: Насправді це було попередньо записано. Запис і відтворення було однією з нових особливостей ігрового двигуна GTA SA.

  • Контролюється AI:

    ШІ у найпростішій формі - це державна машина. Він перевіряє, в якому стані він знаходиться, і виконує певні дії залежно від цього. Я буду називати ці поєднання стану і дії як поведінки. Дії не повинні відповідати геймпаду гравця. Ні поведінки.

    Для простої гри вам, мабуть, потрібні лише дві помітні форми поведінки: 1) якщо вона знаходиться на трасах, то слідуйте за слідом, уникаючи інших автомобілів та будь-яких перешкод, і 2) якщо її немає на доріжках, повертайтеся на траси.

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

    Для сучасної гри автомобіль також буде предметом фізичного моделювання (щоб вирішити зіткнення та зберегти реалізм). Зважаючи на це, кожна ітерація ігрового циклу автомобіль оновлюватиметься на основі його швидкості та прискорення, а також "керування, гальмування та прискорення" (змінюється швидкість) застосовуватимуться для того, щоб слідкувати за поточною поведінкою.

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

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


Щодо анімації, зазвичай, не годиться самостійно моделювати фізику для коліс. Якщо ви це зробите, це може додати реалістичності в грі, але коштуватиме продуктивність. Зазвичай гра буде анімувати колеса на основі поведінки, а не висловлювати поведінку з точки зору руху коліс та імітувати наслідки.

Звичайно, вам може знадобитися додатково розглянути будь-які колеса, що суперечать землі чи ні. І, можливо, анімаційна підвіска.


Це просто чудова відповідь, дуже дякую.
dargemir

0

Я настійно рекомендую відокремити модель фізики / стану автомобіля від контролера автомобіля, а агент AI та контролер програвача - два види взаємозамінних контролерів із командами високого рівня, як ті, які ви запропонували у своєму запитанні.

Це має ряд приємних ефектів:

  • Ви можете реалізувати та налагодити модель фізики / стану один раз для гравця та AI
  • Будь-які нові функції моделі фізика / стан негайно стосуються гравця та AI
  • Автомобіль гравців та AI поводяться послідовно на трасі, що збільшує сприйнятість та фактичну справедливість (якщо ви хочете перешкоджати гонщикам, звичайно, ви можете це зробити, змінивши параметри на автомобілях)
  • Різні види підтримки для багатьох гравців розвиваються набагато простіше.

Це , до речі, особливий випадок поділу MVC .


2
Мені подобається ця відповідь, але ця остаточна заява просто абсурдна. Зніміть його, і у вас є точка від мене. Поділ концернів ? - Звичайно. Але MVC не застосовується в межах вашої повної відповіді.
Інженер

1
Окрім того, що аспект View не обговорюється у запитанні чи відповіді, чому ви вважаєте, чому це абсурдно розглядати це як MVC?
Рассел Борогов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.