Нове у створенні AI - з чого почати? [зачинено]


58

Я новачок в ігровому програмуванні і намагаюся зробити базову космічну гру з 2d зверху вниз з 2 космічними кораблями, які б'ються між собою. Я добре вживаюсь з керованим користувачем космічним кораблем, але поняття не маю, як навіть почати програмувати AI. Чи кращі певні методи / зразки для цієї ситуації? З чого я б навіть почав?


1
Ось мої слайди про AI з курсу, який я зробив: sol.gfxile.net/gpc/05ai.pdf
Jari Komppa

4
якщо заяви. їх багато.
deceleratedcaviar

Відповіді:


34

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

Практичний посібник зі створення повноцінної Ігри AI: Том I


27

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

Ви можете буквально піти від чогось такого:

if( targetInRange == true )  
{
    FireAtTarget();
}
else if( bulletComingTowardsMe == true )
{
    MoveAwayFromBullet();
}
else
{
    WanderAroundAimlessly();
}

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

  • Пересуватися
  • Вогонь
  • Втікай

І коли ці дії могли статися?

  • Рухатися - нічого більше робити
  • Вогонь - коли я помічаю ворога
  • Втікайте - Коли мені мало здоров’я / Коли я веду вогонь / тощо

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

Більше можна знайти тут: http://www.red3d.com/cwr/steer/
І я б точно рекомендував книгу Мата Бакленда Програмування Гра AI на прикладі , особливо коли ви починаєте.

Коли вам це дуже зручно, я б запропонував переглянути державні та стратегічні схеми.

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

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


@Fuu Привіт для редагуючого партнера :)
Ray Dey

9

Можливо, ви захочете переглянути OpenSteer та документацію Steering Behaviors, яка йде разом із цим. Вихідний код не на початковому рівні, але концепції, що стоять за ним, повинні дати вам добрі ідеї.


Чи користуються люди openteer в іграх чи це більше для моделювання?
jle

Я, принаймні, намагаюся використовувати його в грі, що розробляється. Наразі це добре працює для мене. Я вважаю, що автор багато чого розробив, працюючи в групі Playstation в Sony - це, ймовірно, перетворило його на деякі ігри. MobyGames перераховує його за кредитами JohnMadden Football та однієї з ігор Leisure Suit Larry.
AShelly

FreeOrion використовує OpenSteer у своєму тактичному бойовому двигуні.
Майк Стробель

1
+1 Для згадування openteer. Якщо ви хочете побачити кілька чудових прикладів складання дуже простої поведінки разом, щоб сформувати щось, що виглядає дуже складним і хитромудрим. Оформити перевірку рульового поведінки! Google, "Boids", і подивіться на кілька цікавих цілей. Не тихо, чого ти хочеш, але це покаже тобі, що з простоти виходить складність
onedayitwillmake

9

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

  • Підійдіть ближче до цілі
  • Атакова ціль
  • Біжіть від цілі
  • Просувайтесь до джерел живлення
  • Використовуйте джерела живлення

Тоді ви будете використовувати логіку (стан машини) для вибору між цими стратегіями. Наприклад: Якщо корабельні щити впали нижче 50%, тоді біжіть від цілі і рухайтеся до підсилювачів / цілющих предметів тощо.


1
тож кожен раз за допомогою циклу гри він визначає, яка з цих стратегій має пріоритет, а потім виконує це?
jle

@jle Досить. Таким чином, кожна з ваших стратегій буде розбита на власні класи, зберігаючи свій код.
Брайан Денні

7

Я можу запропонувати вам придбати книгу Штучний інтелект для ігор від Іана Міллінгтона - це чудово! :) http://www.ai4g.com/

Вихідний код знаходиться у ліцензії Github - MIT.

Звичайно, якщо ви не використовуєте C / C ++, то це може бути менш актуальним.

Але насправді дивовижне введення у світ Штучної дурості / інтелекту.

Речі, які вам знадобляться, - це рульове управління та державні машини. Для початківців.


2

Деякі практичні поради, якщо ви їдете на державні машини: остерігайтеся мегастату.

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

Це може здатися нерозумним, оскільки вам доведеться додавати стани бігу до кожної окремої машини, але оскільки ви обмежені лише одним або двома виходами, ваші стани в кінцевому рахунку дуже малі, тому це не повинно бути проблемою.

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


2

Математика поведінки для AI гри

Додавання цієї книги до списку вихідних точок вивчення програмування AI. Орієнтуючись на спостереження та реалізацію поведінки, а не на алгоритми обмеженого застосування, я вважаю, що він цілком відповідає задачі.


1

Як створити AI - складне питання, оскільки воно складається з багатьох частин:

  • Ви обираєте загальну архітектуру / парадигму для свого AI. На основі сценаріїв? Чи використовуватиме це планування? Це проста FSM чи ви віддаєте перевагу BT?
  • Потім ви застосовуєте ці парадигми з певним втіленням / набором інструментів.
  • Тепер вам залишається вибір ігрового дизайну, оскільки ви повинні думати про поведінку, яку використовуватиме ваша архітектура.

Інші плакати пропонували чудові книги, і я захоплююсь AI4Games, запропонованими jacmoe, навіть якщо це частими частинами досить загальним (як багато книг, що, зрозуміло, зрозуміло).

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

  • Я думаю, що найкращий спосіб дізнатися про ігрове (AI) кодування - це занадто дивитися на хороший, працює код. Отже, досліджуйте ohloh.net та github та шукайте існуючі проекти FOSS!
  • Звичайно, ви можете вибрати на тверду частину і грати існуючі (але прості) гри. Спробуйте змінити поведінку інженера і подумайте «Як я б це спроектував?». Звичайно, підказки завжди допомагають, і це, мабуть, саме тому ви запитали тут, на gamedev.SE!
  • Щось середнє - це занадто перегляд наявних шутерських ігор на форумах GameMaker! Ви можете знайти масу простих сценаріїв, які зроблять трюк! ;)

1

Подумайте, що ви робите, коли граєте в гру. Задайте собі кілька питань.

  • Яка інформація мені потрібна для прийняття рішення?
  • Коли я реагую на зміни?
  • Які мої "довгострокові" цілі в цій ігровій сесії?

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

Потім, через 500 мілісекунд, я роблю це знову.

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

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