WAR.EXE

Strategic Command WWII: War in Europe — блог разработчиков №2

В 2002 г  оригинальная игра Strategic Command представляла собой сравнительно простую конструкцию с лимитированным набором команд и небольшой картой 62×37, содержащей 2300 гексов. А требования, предъявляемые к  AI, были довольно тривиальными.

Сегодня мы видим, что Strategic Command WWII: War in Europe переросла в модифицируемый гексагональный игровой движок, позволяющий использовать карты 512×512 и содержащие  262 144 гексов!

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

Качество против Скорости

graphic

Хотя было бы гораздо проще научить AI, идентифицировать цели, просчитывать оптимальные результаты и маршруты передвижения на менее крупных картах, но при таком подходе любой неэффективный AI алгоритм может, к сожалению, привести к серьезным проблемам, связанным с пустой тратой времени, в тех случаях, когда карта увеличивается в 10 раз. Часто, единственный способ решить такую проблему – пожертвовать AI-качеством, чтоб улучшить его скорость прохождения шагов. Но, стоит упомянуть, что мы никогда не допускаем заметного снижения качества AI.

Базовой дизайн Strategic Command WWII

AI в игре  Strategic Command WWII: War in Europe – это то, что мы между собой называем «трехуровневый подход к проектированию».

  • Стратегический уровень
  • Тактический уровень
  • «Нечеткий» уровень

Верхний или стратегический уровень работает с большой картинкой и долговременным стратегическим планированием. Такие категории планирования, как закупки, исследования и развитие, а также объявления воин – все это лежит на этом уровне. Так как кодирование этих категорий больше не представляет какой-либо большой сложности, то их можно кастомизировать в течение кампании (или сценария) посредством текстовых скриптов AI, а затем внедрить их в кампанию с помощью Редактора.

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

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

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

AI-01

Условия стратегического уровня

  • Закупки
  • Исследования
  • Дипломатия и объявление воины
  • Наземный и воздушный бой, реорганизация
  • Защитное/наступательное планирование
  • Морской бой и переброс флота
  • Десантные атаки
  • Размещение войск на ключевых позициях.

Каждое из этих условий достигается через AI-скрипт (за исключением Реорганизации и оборонительного планирования, так как это происходит автоматически за счет игрового движка). Наземный, воздушный и морской бой также проходят в автоматическом режиме на тактическом уровне игрового движка, но могут быть отрегулированы с помощью написания оборонных скриптов для специфического планирования (для этого потребуется дизайнер кампании).

Базовая структура скрипта

  • Тип плана –Плана стратегического уровня какого типа это будет?
  • Триггер – С какой процентной вероятностью этот план «выстрелит» в реальности? [1-100%]
  • Целевая позиция – Какова главная цель этого плана?
  • Непостоянные условия – В какие условия попадет та или иная страна? Будет ли Германия полностью готова к войне?
  • Тактические условия – Какие тактические условия должны быть созданы? Берлин под угрозой?
  • Условия активации – Необходимые юниты на позиции?
  • Условия отказа – Юниты оказались в крайне нежелательной области, и мы должны считать, что план провалился? Например, план был создан, чтоб осуществить вторжение Оси в Великобританию в конце 1940, но СССР объявил войну и пошел на Берлин.
  • Глобальная вариативная перелинковка. Так мы можем группировать определенные планы, благодаря глобальным переменным значениям. Например, если мы хотим создать скрипт, где US Torch высаживается в Северной Африке, мы можем скоординировать необходимые скрипты PURCHASE (закупки), AMPHIBIOUS (десант) и FLEET (флот) таким образом, чтоб они работали вместе.
  • Перелинковка решений – это нечто похожее на Глобальную вариативную перелинковку, но эта функция нужна тогда, когда нужно сгруппировать AI, основываясь на игровых решениях, которые он принял. Например, AI решил, что Германия должна согласиться на План Z и построить авианосцы; необходимый скрипт FLEET может быть использован, чтоб применить имеющиеся перевозчики.

Перестроенные и пересмотренные AI-вызовы

  • Улучшения, адресованные разрешению шагов и устранению «узких мест» скорости вычисления
  • Продолжаем заставлять AI вести себя так, как хотим мы
  • Улучшения поведения
  • Простые исправления и улучшения
  • Что должен делать игрок человек?

Мы потратили некоторое время на улучшение скорости вычисления AI в Strategic Command WWII, и, устранив множество «узких мест», мы получили одно заметное преимущество: теперь, когда скорость перестала быть главной проблемой, мы можем улучшить AI в целом. Мы считаем, что идеальный AI должен наиболее точно имитировать поведение живого игрока.

Преимущество AI Fury Software

Великолепное преимущество, которым AI в Strategic Command WWII: War in Europe обладает сейчас, было получено им из игровой системы, которая развивается с  2001.

Несмотря на то, что странное поведение войск все еще возникает и нуждается в коррекции, мы сейчас чувствуем себя вполне комфортно относительно того, что мы больше не нуждаемся в том, чтоб AI делал то, что мы хотим.  Но мы стремимся к тому, чтоб его поведение совершенствовалось, а наша игра  выходила на качественно новый уровень.

Несколько примеров этого:

Оригинал тут

Первая часть

WarSpirit

"A good plan today is better than a perfect plan tomorrow."
- G. Patton

Комментировать

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.