Галерея

Эврика! civ6_screen_03 Первая Мировая. Гунно-эфиопский фронт civ5_z305

Анализ разработки ИИ AtG (часть I) — общие очертания, основная стратегия и целевой ИИ

At the GatesЕщё несколько недель назад главный дизайнер ванильной Civ5 Джон Шейфер в своём блоге опубликовал статью, рассказывающую об основах разработки искуственного интеллекта (ИИ) в его собственной стратегии At The Gates. Мне понадобилось некоторое время на перевод этого солидного материала, но теперь эта работа завершена, и я начинаю серию публикаций об ИИ AtG. Предлагаю всем, кого интересует данная игра, отвлечься от нового дополнения Brave New World к всеми нами любимой Цивилизации и ознакомиться с первой частью материала, которая расскажет об общих очертаниях ИИ, наборе основных стратегий и выборе конкретных целей.

* * *

ИИ является самой важной особенностью каждой стратегической игры. Сама суть этого жанра состоит в том, чтобы предложить сложные решения в реиграбельном окружении, успех в котором требует постоянной адаптации. Хороший ИИ усиливает все три этих элемента, тогда как плохой может свести на нет всё впечатление.

В контексте игры «хороший» ИИ значит больше, чем просто «умный». Задача компьютерных оппонентов больше, чем просто противостояние человеку – они являются частью мира и систем геймплея, вроде экономики, дипломатии и боевых действий. Предводитель гуннов Аттила находится в игре не для того, чтобы воспрепятствовать вашей победе – он здесь, чтобы быть предводителем гуннов Аттилой, устрашающим военачальником, который налетает с огромными полчищами конных лучников, сжигает всё в поле своего зрения и уходит ещё до того, как вы соберётесь ему ответить. Продуктивна ли подобная стратегия? Будем надеяться! Но во многом это лишь второстепенная проблема.

Как уже было сказано, хороший ИИ также должен давать компетентный отпор. Особенно в части сражений, когда решения ИИ стоят в центре внимания и ошибки невозможно спрятать под ковёр. Такая компетентность требует от игроков ИИ составлять искусные планы и, конечно же, уметь менять их при необходимости.

Чтобы связать всё это воедино, вы тоже, как разработчик ИИ, должны иметь план. К этому моменту я потратил пару последних месяцев на то, чтобы сложить воедино чрезвычайно детализированную схему для каждой подсистемы ИИ и логику, с которой каждая из них будет работать. Обдумать всё это – лишь «черновой набросок», а затем необходимо перевести его в программный код. Чтобы протестировать свои наработки, я раз за разом проводил мысленные эксперименты, и я отбросил не одну важную деталь, когда становилось очевидным, что мои намерения и итоговый результат не гармонируют друг с другом.

Я бы не хотел публиковать эту работу сегодня (да и никогда… она уже составляет больше 200 страниц и продолжает расти!). Но я знаю, что многие из вас захотели бы понять, как я всё это вижу, поэтому я сделаю следующее: поделюсь с вами базовыми очертаниями тех компонентов, из которых будет состоять игрок ИИ. Как и всегда в разработке игр, я не сомневаюсь, что детали ещё тысячу раз поменяются, но я точно уверен, что общая структура останется до окончания работ над игрой и, весьма вероятно, для будущих игр.

Очертания ИИ

Информационная библиотека (ИБ) – Это не особенная система ИИ, а общее название для обширной коллекции данных для игрока ИИ… Сильнее ли меня этот парень? Насколько опасен этот тайл? И т.д.

Основная стратегия ИИ (ОСИИ) – Устанавливает основное направление, которого придерживается игрок на протяжении всей игры.

Целевой ИИ (ЦИИ) – Определяет, каковы приоритеты ИИ, какие доступны возможности, какие из них лучше преследовать, и т.д. Выбранные Цели придают форму решениям, принимаемым всеми нижеследующими подсистемами ИИ.

Экономический ИИ (ЭИИ) – Распределяет ресурсы, управляет выбором производства и руководит разными низкоуровневыми экономическими решениями, вроде выбора Перков Романизации.

Дипломатический ИИ (ДИИ) – Управляет ежедневными дипломатическими связями, включая то, когда предлагать торговлю, какие предложения мы примем, и какие формулировки будут использоваться при обмене.

Фронтовой ИИ (ФИИ) – Распределяет Юниты между различными возможностями и делает запрос к ЭИИ, когда их нужно больше.

Тактический ИИ (ТИИ) – Каждый ход даёт особые приказания каждому Юниту.

Приоритет – Шкала из 20 значений, которая служит для общей оценки того, насколько что-то важно. Каждое название может иметь после себя «+» или «–», что делает его значимость чуть выше или ниже. Таким образом, приоритет «Очень Хороший–» будет на один уровень выше приоритета «Хороший+», который, в свою очередь, на один уровень выше приоритета «Хороший».

Зона – Небольшая группа тайлов, которая, вероятно, в итоге будет размером 3×3.

Основная стратегия ИИ (ОСИИ)

Сводка

ОСИИ выбирает единственную ОС, определяющую общее направление, которого на протяжении всей игры придерживается игрок ИИ. Она обусловливает что, но не как – она может определить для нас целью завоевание, но не сообщит нам о том, делать ли это по морю, конными Юнитами, и т.д. Подобные детали решаются на уровне ЦИИ, который принимает во внимание личные особенности и сложившуюся ситуацию.

Детали

В начале игры ОСИИ выбирает «предварительную» ОС, которая рекомендует игроку определённое направление, не заставляя его следовать какой-то особенной тактике. Возможно, мы планируем милитаристскую игру, но не знаем, какую она примет форму. Или мы собираемся мирно сосуществовать с римлянами, но не уверены, насколько тесно мы должны с ними взаимодействовать, так как не знаем наших соседей.

В XML каждому лидеру ИИ присвоен фиксированный набор ОС, из которого он может выбирать. Это гарантирует, что каждый лидер будет играть в соответствии со своей личностью, но не привязывает их к единственной стратегии, вроде «всегда атаковать всех, кого увидишь».

Факторы, которые необходимо учитывать

  • Присущие ИИ личностные характеристики являются самыми важными. Аттила никогда не будет отсиживаться и мирно играть со всеми, какая бы ни была ситуация.
  • Соседство с римлянами. Если мы очень близко, то, вероятно, захотим хороших с ними отношений. Если же мы очень далеко, тогда изо всех сил концентрировать на них своё внимание не имеет смысла.
  • Соседство с другими варварами. Если мы окружены врагами, то мы, вероятно, захотим залечь на дно и сыграть как можно безопасней, пока положение дел не утрясётся.
  • Доступность ресурсов. Если у нас совсем не будет Железа, то не будет смысла играть агрессивно.
  • География. Если мы находимся рядом с водой, то это открывает возможность морских налётов. Если же мы запрятаны в хорошо защищённый уголок, то можем позволить себе играть менее осторожно.
  • Баланс военной мощи. Если мы ведём крупную войну, теряем всю нашу армию и две трети населения, то, вероятно, пришло время сменить курс.

Отношения с другими системами

ОСИИ не получает информации ни от каких других подсистем.

  • ЦИИ: Единственная задача ОСИИ состоит в том, чтобы изменять Приоритет Целей, которые рассматриваются ЦИИ. Она принимает решения в одностороннем порядке (использую данные из ИБ) и ни от кого не получает информации.

Целевой ИИ (ЦИИ)

Сводка

Это ядро ИИ уровня игрока, которое устанавливает все коротко срочные и средне срочные цели. Здесь принимаются решения для всех случаев от объявления войны до определения месторождений ресурсов, которые необходимо захватить, или когда и куда мигрировать.

Причина, по которой столь многое делается в одном месте, состоит в том, что ИИ необходимо очень чётко понимать, как ему добиться успеха при конкурирующих друг с другом приоритетах. Этого можно добиться при помощи нескольких подсистем, которые «говорят на одном языке» или управляться со всем этим в одном месте. Мы выбрали последний подход.

Однако чем ЦИИ не занимается, так это деталями. Если нам нужно Железо, тогда ЦИИ определит, какое Месторождение наиболее ценно и назначит ему приоритет, после чего передаст эту задачу на исполнение ФИИ. Если в наличии не будет достаточного количества Юнитов, то ФИИ определит это и затем направит Запрос к ЭИИ.

Детали

ЦИИ использует два разных типа Целей, сконцентрированных в одном списки приоритетов:

Задачи – Абстрактные «вещи, которые мы хотим сделать», вроде расшатывания готов, получения больше Железа или миграции.

Возможности – Конкретные «вещи, которые мы можем сделать», вроде нападения на готов, завладения месторождением Железа на тайле X или миграции в регион Y.

Создание и выполнение целей

Прежде всего, каждая отдельно возможная Цель анализируется на жизнеспособность и, в случае успешности, получает приоритет. Текущие Цели выполняются в первую очередь и получают небольшой бонус (благодаря чему ИИ не меняет постоянно свои решения), а затем уже следуют новые Цели. Скомбинированный таким образом список сортируется.

Затем Цели с более высоким приоритетом меняют приоритет Целей, идущих в списке позади них – если мы решили идти на римлян войной, то не имеет смысла пытаться выполнять их Задания!

Любая Цель с приоритетом по меньшей мере «Средний–» считается Активной, что означает, что другие системы ИИ будут её выполнять. Всё, что ниже этого порога, полностью игнорируется. Рассматривая каждую возможность и проставляя ей очки, мы «фокусируем внимание ИИ».

В конечном счёте, у ЦИИ есть власть над всеми другими системами. Если она скажет объявить войну, именно это и будет сделано – и к чёрту последствия.

Отношения с другими системами

  • ОСИИ: Наша текущая ОС меняет приоритеты отдельных Целей внутри ЦИИ. ОС «Сиди тихо» существенно снизит приоритет для всех Целей типа «Напасть на игрока X».
  • ЭИИ: Когда ЦИИ хочет осуществить невоенное строительство, исследование, выбор и т.д., она отправляет Запрос в ЭИИ. Производственные Запросы ЦИИ чрезвычайно редки, так как все Запросы, касающиеся Юнитов, идут от ФИИ (которая, в свою очередь, получает свои задачи от ЦИИ – передача полномочий в её лучшем виде!).
  • ДИИ: Цели ЦИИ формируют основной подход ДИИ («торгуй, когда возможно»), а иногда даже дают специальные указания («постарайся выторговать Железо»). ЦИИ принимает решение об объявлении войны или заключении мира. При обсуждении условий мира ЦИИ говорит ДИИ основные параметры, которые будут приемлемыми. Чтобы лучше представить себе всё это: ЦИИ принимает важные решения, тогда как ДИИ занимается ежедневными делами.
  • ФИИ: ЦИИ передаёт ФИИ две вещи. Во-первых, основные военные цели, вроде «захватить города готов», «посеять хаос у гуннов» или «игнорируя всё остальное, защитить свою родину!» ЦИИ также выдаёт специфические миссии, вроде «захватить вражескую крепость» или «занять вон то месторождение Железа». ЦИИ также получает информацию со стороны ИБ ФИИ относительно того, стоит ли нам вступать в бой, и если да, то как.

В следующей части перевода мы поговорим об Экономическом и Дипломатическом ИИ. Продолжение следует…

by Jon Shafer

русский перевод – GobblinS

CivGames.com

5 comments to Анализ разработки ИИ AtG (часть I) — общие очертания, основная стратегия и целевой ИИ

  • Во первых огромное спасибо GobblinS за перевод! Надеюсь игра оправдает ожидания.
    И огромное спасибо Джону за статью. Прочитал и сохранил. Думаю, перечитаю ещё не один десяток раз, так как сам озадачен созданием стратегической игры.

    Ну и некоторые ошибки:
    …которая расскажет об общих очертанияХ ИИ… (Не хватает буквы)
    …вроде расшатывания готов… (Наверное, имеются ввиду Готы и тогда с большой буквы. А иначе непонятно кто и к чему там готов 😆 )
    …вроде нападения на готов… (То же самое)

    Дочитал до конца, заметил ещё места где названия племён пишутся с маленькой буквы: готы, гунны…

    • Первую опечатку поправил, что касается названия племён, то они, вроде бы, как и названия народностей, в русском языке пишутся с маленькой буквы (готы, чукчи, византийцы, кривичи). Поправьте меня кто-нибудь со ссылкой на источник, если я не прав :roll:

      А за перевод, пожалуйста. Завтра-послезавтра ждите обещанного продолжения.

  • Отличная работа, GobblinS!

    — Джон

  • bbqq

    Эти инструкции можно использовать не только ботам 🙂

Leave a Reply