tgoop.com/gamedesignercompendium/519
Last Update:
Штучний інтелект противників-людей в The Last of Us
хочу поділитись документом де описані основні підходи до розробки ШІ противників як у комбаті, так і у стелсі.
Посилання: https://www.gameaipro.com/GameAIPro2/GameAIPro2_Chapter34_Human_Enemy_AI_in_The_Last_of_Us.pdf
Основними стовпами дизайну стали:
1. Противники мають відчуватись “реалістичними” та “живими”.
2. Гравцю має здаватись, що вони працюють у команді.
3. Противники мають реагувати на вбитих, гравця і мати “інстинкт самозбереження”.
4. Противники мають бути небезпечними, щоб гравець боявся вступати в бій.
Щоб досягти цих цілей, розробники, зрозуміло, дуже старалися над аудіо- та візуальним супроводом, але також приділяли дуже багато уваги поведінці противників. Основна мета була максимально уникнути дивних маневрів, що можуть зруйнувати занурення гравця (зайняти позицію з неправильної сторони дверей або ж пробігти крізь напрям вогню свого напарника).
Навігація.
ШІ використовує два типи navmesh: класичний navmesh, що є відносно дешевим для перформансу, але не надто точним, а також не враховує всі потенційні перепони, та локальні 2D-сітки для КОЖНОГО окремо взятого противника. Другий тип навігації був у рази дорожчим за класичний, але давав хорошу точність у навігації та міг враховувати динамічні перешкоди. Для оптимізації розробники обмежили навігацію на 2D-сітках до одного разу на кадр (тоді як класичний вони могли викликати 40 разів на кадр), а противники мали чергу, у якій використовували 2D-сітки.
Окремим викликом було зробити захід у фланг і навігацію через простір “інтелектуальними”, щоб противники не робили це на відкритому просторі перед гравцем. Для цього розробники імплементували карту зору (exposure map).
На navmesh була вказана висота кожного елемента за допомогою бітів, що давало “топографічну карту” рівня і дозволяло розрахувати видимість. Позиція гравця бралася за основу, і далі вираховувалась видимість на 360 градусів. “Дешевизна” такого підходу дозволила використовувати його для розрахунку всіх найкращих маршрутів руху, особливо заходу у фланг гравця.
Зір.
Класичний конус для поля зору противника не спрацював для розробників, оскільки гра має достатньо великі відстані, а значить, чим ближче гравець до противника, тим легше уникати поля зору. І навпаки, що далі гравець від противника, то швидше і більше поле зору стає.
Щоб вирішити цю проблему, розробники замінили конус на кастомну форму поля зору, що давала кращий кут огляду ближче до противника і звужувала його на відстані.
Для визначення видимості гравця розробники використовували лише одну точку на тілі Джоела, що змінювала свою позицію залежно від того, чи знаходиться гравець у стелсі, чи вже вступив у бій.
У стелсі противники перевіряли, чи бачать центр грудної клітини, що дозволяло зробити стелс легшим для гравця. Однак під час комбата противники перевіряли видимість голови Джоела.
У випадку, якщо противник помітив гравця, він ставив мітку із часовою позначкою і передавав локацію гравця іншим противникам. Однак він не мав доступу до “поточної позиції”, доки знову не помітить гравця або ж доки гравець не вистрілить.
Противники намагаються взяти в “облогу” позицію гравця та наблизитись до неї так близько, як дозволяють укриття, але якщо гравець змістився більше ніж на 5 метрів від поточної позиції, одному противнику дається наказ перевірити останню відому точку, і якщо він не помітив гравця - всі противники починають пошук.
Незалежно від стану гравця (комбат чи стелс), видимість розраховується із таймером. У бою противникам треба менше кадрів “видимості гравця”, ніж у стелсі, але це гарантувало, що противник не реагуватиме на один кадр видимості гравця.
#gamedesign #AI #TLOU #enemy #navigation #combat #stealth
BY Конспект геймдизайнера [GD compendium]
Share with your friend now:
tgoop.com/gamedesignercompendium/519