top of page
  • Join our Discord!
  • Join our Kickstarter!

ИИ ЧАСТЬ ДВА

Добро пожаловать во вторую часть журнала разработки ИИ.


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



В качестве условия для выполнения стратегии мы здесь используем "MoreThanGameTimeSeconds"(1). Из этого условия следует, что стратегия активна с первой секунды игры до самого её конца.


Итак, у нас есть две стратегии для ресурса и энергии, которые могут быть активны одновременно.

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


И наконец, у нас есть менеджер стратегий, который создает таблицу с названиями стратегий, которые нужно запустить.







База, расширения и другие локации.



Итак, когда у нас есть одна или более стратегий, их нужно где-то выполнить.

Для этого мы определим области на карте, на которых мы будем запускать стратегии.


Первая область - это главная база, она определяется местоположением Командира или фабрики/инженера. За это отвечает"AILocationCreator". В случае необходимости, он также создает новые области в виде расширений или блокпостов. Например, если ИИ были переданы юниты или постройки, и поблизости нет базы, будет попросту основана новая.


После создания новой базы или расширения, для этой локации запускаются две функции Lua.

Сначала запускается "AILocationManager". Он просматривает список стратегий и выбирает, какие формации построек и юнитов должны быть запущены для данной области.

Организатор формаций юнитов и построек (далее формер) представляет следующий код:























Debug: при значении True позволяет отслеживать отдельный формер исключая общий лог locationmanager.

FormerName: случайное название для формера

RunWithStrategy: здесь располагаются названия стратегий, при выполнении которых будет запускаться формер

Priority: определяет приоритет данного формера

RunOnBaseType: указывает, на базах какого типа будет применяться формер.

AIPlan: название Lua функции, которую формер должен выполнить.


NeedMobileBuilder: здесь указывается требуемый уровень технологий инженеров и их нужное количество.

Сначала устанавливаем точное описание юнита. (MOBILE + ENGINEER + TECH1)

Далее идут два числа: минимум и максимум инженеров, которых мы хотим использовать.

Вторая строчка спецификаций нужна на случай, если условие выше не выполнено.

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


FormerConditions: как и в случае со стратегиями, здесь решается при каких условиях запускать формер.

wantStructures: как и в случае с инженерами, здесь мы только указываем категории построек.

desiresAssist: здесь указывается желаемое количество инженеров на ассист.



Так, а что насчет процесса стройки ?




Вторая функция Lua это "AILocationExecutor". Он ответственен за запуск формеров, определенных функцией "AILocationManager". В нашем случае, это формеры для стратегий "BuildMoreResource" и "BuildMoreEnergy". Здесь указания передаются отдельным специализированным функциям, которые активируют у требуемых юнитов команды, такие как "атаковать" или "строить".



Именно так, собственно, всё и строится!



Спасибо за внимание, увидимся в следующем девлоге, посвященном ИИ.


С наилучшими пожеланиями, ваш Uveso.

421 просмотр0 комментариев

Недавние посты

Смотреть все

Comentários


bottom of page