Які форми поведінки повинні перетворитись на створення неідеального учасника ШІ?


19

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

Редагувати: мій конкретний випадок використання з ворогами, схожими на MMO, наприклад, World of Warcraft, хоча з меншою кількістю графіки. Зауважте, що це означає як людських, так і нелюдських ворогів (тварин, монстрів тощо)

Відповіді:


14

На тему Gamasutra є дуже цікава стаття: Інтелектуальні помилки: як включити дурість у свій AI-код Міка Веста.

У цій статті йдеться про AI гру в басейні. При здійсненні такого AI досить легко зробити його горщиком кульки при кожному пострілі. Спрощений спосіб зробити AI менш «розумним» - це, як пропонується в інших відповідях, додати випадковий коефіцієнт до обчислення, змусивши ІІ пропустити більше.

Але є два основні вади при такому підході. По-перше, це непередбачувано. Для гравця, який грає в режимі "Легкий", неприпустимо, щоб AI отримував "удачу". Що робити, якщо ваш випадковий коефіцієнт змушує ШІ зробити ще кращий удар, забивши більш цінний м'яч або виконуючи комбо? Ви не знаєте, що відбудеться, і пощастило не повинно бути варіантом ШІ у простому режимі.

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

З моєї точки зору, прочитавши цю відкриваючу статтю, не досконалий ШІ ніколи не повинен використовувати рандомізацію як фактор спрощення. Це зовсім навпаки. Простіший ШІ повинен бути розумнішим, але намагаючись допомогти гравцеві.

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

Таким чином, гравець подумає, що йому пощастило. І це те, чого ви очікуєте від гри, коли в неї легко будете грати.


1
Також AI було б корисно пам'ятати, чим гравець може скористатися. Розробники можуть подумати, що у нього є «легкий горщик», але якщо він не може його заповнити, AI повинен менше використовувати тактику випадку. Це також вигідно, тому що ви можете тренувати гравця, пам'ятати, що він не може робити, і цілеспрямовано використовувати це так часто, поки він не зможе, таким чином гравець не нудить і не розчарується.
Джонатан Коннелл

Хоча я згоден з тим, що не використовую рандомізацію, я не погоджуюся з "допомогою гравцеві": це було б як обман, тільки набагато гірше, тому що ти брешеш гравцеві.
o0 '.

@ Lo'oris: Ну, я не вважаю це брехнею. Коли гравці говорять грі на нього легко, він очікує, що гра буде ніжною. Коли ви граєте в гру, з якою ви дійсно добре знаєтеся з другом, який лише відкриває її, я відчуваю, що цілком нормально давати йому можливості. Це робить гру більш приємною для всіх.
Тин

1
Є хороша публікація в блозі Шона Харгрівза про рандомізацію та можливість людини помітити шаблони у випадковості. Це перекладає тонну, в цьому випадку гравець неправильно судить про тактику гравця AI.
Джонатан Коннелл

1
Насправді я думаю, що рандомізація на точність - це хороший шлях. З справжнім гравцем, який не такий великий, іноді він помилиться і влучить у кращий м'яч.
AttackingHobo

10

Ключова концепція - уникати надання NPC "досконалих знань".

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

Я впевнений, що буде налічено ще багато прикладів, можливо, ви можете сказати нам про вашу гру, і ми можемо отримати більш конкретні :-)


4

Один з швидких способів зробити ідеальний AI-боєздатний - це його прийняття недосконалих рішень, додавши деякий «шум» або до його входів, або до виходів. Під шумом я маю на увазі деякі випадкові фактори.

Ось невеликий приклад для виходу:

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

Ось кілька ідей для введення даних:

  • Якщо дії базуються на здоров’ї опонента, додайте випадковий коефіцієнт (скажімо +/- 10 для 0-100 бар стану здоров’я) до сприйнятого стану AI.
  • Те ж саме для рейтингу дій, якщо AI знає, що деякі атаки сильніші за інші, довільно додайте / віднімайте там деякі значення.

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

Сподіваюся, це допомагає, і удачі!


3

Важко дати прямо корисну відповідь, не знаючи, що саме ти намагаєшся зробити.

Я можу сказати дві речі з цього приводу, які можуть вам допомогти.

По-перше, (і це, безумовно, найважливіше), якщо ви намагаєтесь змусити ворога відчути себе цікавішим і людяним, то ваша бойова тактика не має значення. Трюк у тому, щоб змусити гравців "повірити", що ворог живий, - це використовувати анімацію, звуки та невеликі деталі, щоб мати на увазі поведінку людини. Ідеальний AI може ходити за кутом, бачити гравця і стріляти. Людський ШІ може ходити за кут, бачити гравця, дивуватися по обличчю і тривожно кричати і стріляти. Перший здається робототехнічним. Другий здається людським. Обидва використовують однаковий AI всіляко, крім вставки анімації безпосередньо перед зйомкою (або, щоб зберегти тактичну поведінку однаковою, під час зйомки).

По-друге, уникайте рандомізації. Гравці не оцінюють це настільки, як дизайнери хочуть подумати, що будуть. Гравці не бачать, що "комп'ютер генерував 1 із 100, за ним 5, 3 та 4, тому коефіцієнти помилок для останніх чотирьох знімків становили лише 1%, 5%, 3% та 4%, і це чому ти загинув за півсекунди цього раунду ". Гравці просто бачать ворогів, які іноді дико пропускають, а в інші часи їх повторюють без будь-яких помітних причин, що неймовірно засмучує. Хороший ігровий дизайн багато в чому стосується побудови шаблонів, які мають гравці людини можутьспостерігати, вчитися та бити, і робити успіх гравця, виходячи з його власного судження та вмінь та інтуїції, а не робити це про те, чи пощастило гравцеві. Прагнення до рандомізації випливає з досвіду використання настільних ігор та азартних ігор, обидва з яких неймовірно відрізняються носіями, ніж відеоігри (а те, що працює в одному засобі, часто не має сенсу в іншому).


1

Пам’ятаю, на нашому курсі AI в коледжі була тема про те, щоб зробити AI більш "людиною" і менш досконалою. Це було багато років тому, тому я просто пам’ятаю кілька кульових точок з вершини свого розуму.

  • Використовуйте "бібліотеки ходів". Якщо ви боретеся з орком, дайте йому сказати 3 бойові процедури, які вони повторюються раз у раз. Це робить боротьбу легшою, будучи більш передбачуваною, що здається протилежним тому, що ви хочете, але все-таки робить AI менш "ідеальною машиною" і більше "noob, повторюючи один і той же рух знову і знову".
  • По можливості оптимізуйте. Якщо, як ви кажете, ваш AI заснований на обчисленні найкращого ходу, поставте штучний ліміт на цей розрахунок. Зробіть пошук неглибшим або обмежте кількість кроків. Замість найкращого ходу будь-коли AI вибере просто хороший хід. Це може додати чимало різноманіття до поведінки ваших ворогів, оскільки є багато більше корисних, ніж найкращих кроків.
  • Робіть помилки навмисно. Замість найкращого кроку виберіть другий чи третій кращий. Або навіть вибрати хід, який має погану корисність. Це може вирішити вашу точку "непередбачуваності".

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


0

Я щойно побачив це спливаюче вікно і хотів поділитися ідеєю, якою я користувався в минулому.

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

  • Напад мечем (30 очок)
  • Заклинання вогню (50 балів)
  • Заклинання льодом (20 балів)

Підсумуйте загальну кількість балів (100)

Візьміть статистику інтелекту персонажа з максимально можливого значення для цієї статистики (скажімо, 60 із 100).

Створіть випадкове число між 0 (або деяким іншим рівнем) та коефіцієнтом інтелекту (0,6), помножте на загальну кількість балів (100). Скажімо, у нашому прикладі результат 45.

Тепер ви починаєте віднімати погані ходи з цього значення, поки не досягнете нуля. (Віднімаємо по порядку.)

Спочатку ми вважаємо Льодове заклинання, яке набрало 20. 45 - 20 = 25. Це вище нуля, тому ми викидаємо крижане заклинання.

По-друге, подивіться на Атаку мечем, вартістю 30 очок. 25 - 30 = -5. Ми потрапили на наш поріг, тому вибираємо Атаку дією меча.

У цій системі персонаж із низьким рівнем інтелекту не вибере найкращого кроку. А персонаж з високим інтелектом часто вибере найкращий хід. (У цьому прикладі персонаж із досконалим інтелектом вибирає найкращий хід у 50% часу.)

Додавання механізму підлоги до випадкового числа збільшить шанс на вибір кращих рухів.

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