Дневник разработчиков Stellaris №252 — Искусственный и автоматический интеллект
Казалось бы, очередной дневник по улучшению ботов, но есть парочка нюансов.
"Всем привет, это я, Offe, один из человеков, работающих над Stellaris. СегоДня я поделюсь с вами новостями от хранителей по части ИИ. Но для начала давайте вспомним, каким изменениям подвергся ИИ в обновлении 3.3.
Если вы следили за дневниками по ИИ, то можете помнить, что главной целью обновления 3.3 «Весы» было улучшение способностей ИИ к управлению экономикой, в особенности на среднем и позднем этапах игры. Целью было сделать государства под управлением ИИ важными игроками не только на раннем этапе и придать взаимодействиям с ними больше значимости.
Среди обсуждений на наших форумах и на Reddit мне больше всего нравится видеть реакцию игроков на внезапно усилившиеся государства в Галактическом сообществе, принимающие резолюции против воли игрока.
Хотя в части экономики ещё есть над чем поработать, мы в целом довольны изменениями версии 3.3 и хотим сосредоточиться на иных аспектах ИИ.
Планы на 3.4С улучшением экономического ИИ остальные его аспекты стали ещё более явными целями для улучшения, в особенности управление военными флотилиями и дипломатические взаимоотношения с игроком.
Изменения в поведении военного ИИ
Для начала хочу отметить, что изменения в поВедении военных флотилий в версии 3.4 в основном касаются исправления ошибок, а не улучшений в принятии решений. И хотя разница всё равно будет заметна, проделанная работа на этом направлении не сравнится с изменениями в экономике.
Начнём с самого главного: дробление флотилий ИИ.
Несмотря на ошибки со слишком активным дроблением флотилий, фундаментально такое поведение соответствует изначальной задумке. ИИ направляет на задание ровно столько кораблей, сколько нужно, с запасом в 25%, чтобы иметь возможность одновременно выполнять несколько заданий. Главной проблемой было обилие слабых целей, вроде непрокачанных космических баз, что и побуждало ИИ дробить флотилии на множество частей с силой порядка 1000.
В теории это неплохой подход, но на практике у него было две проблемы. Во-первых, игрок мог просто взять большую флотилию и без труда уничтожать мелкие флотилии ИИ. Из-за этого ИИ выглядел некомпетентным, и к тому же такой подход раздражал сам по себе.
В версии 3.4 ИИ будет считать свои флотилии целиком наименьшими единицами для достижения военных целей. ИИ будет стараться объединять флотилии в мирное время, а во время войны попытается по возможности объединять соседние военные флотилии.
Чередование приказов
Поскольку ИИ начал заполнять пределы флотилий, теперь прЕдстоит решить проблему с постоянным чередованием приказов, из-за чего ИИ застревал в бесконечном цикле из двух приказов. Чаще всего причина крылась в том, что ИИ приказывал нескольким флотилиям выполнять один приказ, те пытались перегруппировываться, летели в соответствующие системы, но лишь снова и снова менялись местами.
Ведение за собой
В 3.3 мы снова разрешили ИИ следовать приказу «Вести за собой», но он работал не совсем так, как хотелось. К примеру, союзные флотилии ИИ иногда следовали за флотом игрока, хотя не должны были. Также были ошибки, когда ИИ переставал следовать за игроком, или не посылал все свои флотилии за игроком.
ИИ союзников в войнах
Во время войны с несколькими государствами под контролем ИИ на одной стороне один ИИ будет считаться лидером (он может отличаться от государства, возглавляющего войну с точки зрения дипломатии), а флотилии других ИИ будут следовать за ним. При подобном подходе появлялись ошибки, схожие с описанными выше, когда флотилии ИИ слишком часто переставали следовать за своей целью и никогда не добирались до конца.
ИИ вне войн, вызванных дипломатией
В обновлении 3.4 мы добавляем состояние войны для ИИ, которое активируется, когда ИИ сражается с кризисом середины или конца игры, и действует до победы над этим кризисом. Это значит, что в случае нападения на ИИ или его союзников, он будет использовать обычное военное поведение против целей, вроде Великого хана, пусть тот и не объявлял войну дипломатически.
С этим связано много плюсов, например:
— государства-ИИ теперь следуют приказу игрока вести за собой, если игрок воюет с кризисом;
— союзные государства-ИИ в случае нападения на них кризиса теперь помогают друг другу;
— государства-ИИ теперь будут искать и уничтожать системы, контролируемые кризисом, и так далее.
Мы также исправили ошибку, когда ИИ во время войны предпочитал сражаться с нейтральной целью, вроде левиафана.
Подготовка к войне для ИИ
В обновлении 3.4 мы добавили состояние подготовки к войне для ИИ, которое активируется в случаях, которые в версии 3.3 привели бы к объявлению войНы. Во время этой фазы ИИ будет собирать имеющиеся флотилии и стягивать их к границам планируемой цели.
При наличии достаточной военной разведки игрок получит уведомление о грядущем конфликте и, в зависимости от уровня этой разведки, более точный прогноз даты начала этого конфликта.
Дипломатия ИИ
Раз мы закончили с изменениями, касающимися войны, перейдём к изменениям дипломатии в обновлении 3.4.
Изменения ИИ федераций
Одной из основных жалоб игроков, находящихся в федерации с ИИ, был бесконечный спам предложениями об изменении одного и того же федерального закона, что зачастую выливалось в накопление отрицательного модификатора отношений и последующий выход из федерации.
В обновлении 3.4 мы добавили десятилетний период для каждой категории законов, во время которого ИИ не может послать повторное предложение. Возьмём для примера какой-нибудь федеральный закон, скажем, «Свободная миграция». Когда ИИ предлагает изменения свободной миграции, то никто из членов федерации, являющихся ИИ, не сможет предложить их повторно в течение 10 лет. Подобное изменение означает, что после каждого отказа от изменения свободной миграции должно пройти как минимум 10 лет перед повторным предложением.
Также мы исправили эксплойт, позволявший игроку многократно запускать голосование о принятии себя в федерацию, что накапливало отрицательный модификатор отношений и позволяло игроку расколоть федерацию.
Послы
Другой частой жалобой в отношении ИИ федераций был отказ государств-ИИ использовать своих послов в федерации, что является симптомом более крупной проблемы: использования ИИ послов в целом.
Государства-ИИ часто переназначали своих послов на одну и ту же должность, убирАя уже имеющегося посла и запуская кулдаун, в результате чего у ИИ оставался только один доступный неназначенный посол.
В обновлении 3.4 ИИ станут лучше управлять своими послами как внутри федерации и Галактического сообщества, так и для других дипломатических целей и шпионажа.
Изменения Галактического сообщества
Пускай голосование за бессмысленные резолюции и добавляло Галактическому сообществу реализма, были заметны некоторые проблемы:
Иногда ИИ предлагал резолюции, которые идут вразрез с его идеологией, например когда государства рабовладельцев предлагали запретить торговлю рабами-органиками. Причиной такому поведению являлось отсутствие дополнительной проверки: ИИ предлагал те резолюции, которые нравились ему больше всего, но не проверял, нравятся ли они ему достаточно для выдвижения.
ИИ также было запрещено отзывать свои резолюции. В большинстве случаев это бессмысленно, но бывают ситуации, когда отзыв резолюции является верным шагом. К примеру, когда ИИ предложил сократить число мест в Галактическом совете, но к началу голосования его дипломатический вес упал настолько, что принятие резолюции лишило бы его места в совете.
Схожим образом ИИ было запрещено голосовать против своих резолюций, но похожая ситуация может произойти и здесь. Например, если игрок объявляет резолюцию чрезвычайной и выДвигает её на голосование до того, как ИИ сможет её отозвать. В таком случае голосовать против своей резолюции имеет смысл.
При достаточном количестве разведданных об ИИ игрок теперь сможет увидеть, чем обусловлено решение ИИ на голосовании в Галактическом сообществе. Всплывающая подсказка и до этого была большой, но я знал, что смогу сделать её ещё больше.
Автоматизация планет и секторов
Для ИИ автоматизация планет и секторов не важна, но мы видели очень много просьб о том, чтобы предыдущие улучшения ИИ стали доступны игрокам. И хоть автоматизаЦия планет и секторов работает по иной системе, нежели экономика ИИ, нам всё равно казалось, что благодаря улучшениям в этой области играть станет намного удобнее.
В основу дизайна новой системы автоматизации лёг принцип «большинство игроков смогут использовать её хотя бы отчасти». То есть мы заранее предполагаем, что её будут использовать не все и не всегда, и что она сможет угодить всем игрокам, но, быть может, хотя бы часть игроков сможет найти в ней что-то полезное.
Так как же она работает? В версии 3.4 автоматизация планет получит дополнительное окно с настройками, в котором игроки смогут включать и выключать составляющие системы отдельно для каждой планеты, а также устанавливать значения по умолчанию для новых планет.
Вот наиболее важная настройка — категория.
Эта настройка заставит планету создавать новые должности в соответствии с заданной категорией, когда свободных должностей не останется. Теперь она гораздо строже задаёт, что именно соответствует категории. Например, включение этой настройки для горнодобывающей категории заставит планету строить только горнодобывающие районы и фабрики по очистке полезных ископаемых — и ничего более.
Также доступны следующие настройки.
— Блага. Строить новые сооружения для производства благ и тонко настраивать приоритет производящих блага должностей, чтобы сократить излишнее производство. Используется та же система, что у ИИ с версии 3.3.
— Редкие ресурсы. Строить новые сооружения для производства редких ресурсов с целью получать +3 единицы каждого ресурса в месяц. Кроме того, теперь система учитывает общегосударственные сооружения в очереди строительства и будет строить только по одному сооружению за раз.
— Сборка поселений. Строить резервуары для выведения, фабрики клонов, роботостроительные заводы и подобное.
— Жильё. При необходимости создавать дополнительное жильё, будь то с помощью районов или сооружений.
— Ячейки сооружений. Автоматически строить новый городской район для открытия дополнительной ячейки сооружений, когда свободных ячеек не осталось. Особенно полезно включать в мирах с научной категорией, потому что им всегда нужно много ячеек для сооружений.
— Преступность. Строить новые сооружения для борьбы с преступностью, когда она достигает опасных значений.
— Расчистка препятствий. Автоматически расчищать препятствия, когда они мешАют строить новые районы.
— Посмертная занятость. Строить центр посмертной занятости на планете с упором на добычу простых ресурсов.
— Пси-корпус. Строить сооружение «Пси-корпус» на всех доступных планетах.
Настройка автоматизации категории уделяет особое внимание тому, чтобы не строить слишком много сооружений, тогда как другие насТройки будут создавать сооружения даже когда нет необходимости в дополнительных должностях.
Скрипты всех виды автоматизации, кроме благ (для них используется поведение ИИ из кода), можно свободно изменять, если вам захочется создать мод с собственной автоматизацией. Файлы можно найти здесь:
game\common\colony_automation
game\common\colony_automation_exceptions
Автоматизация секторов
Эта система теперь располагается над автоматизацией планет. Приоритет сектора теперь определяет, какие категории для планет будут выбиратЬся при автоматическом их выборе, чтобы они подходили под назначенный приоритет.
Кроме того, в автоматизации секторов появился ещё и приоритет на производство единства, поскольку оно стало более важным в обновлении 3.3, и планеты тоже теперь можно автоматизировать на производство единства.
Для строительства научных лабораторий и сооружений для производства редких ресурсов больше не требуется улучшать столичное сооружение, поэтому автоматизация в таких категория будет работать как надо даже на недавно заселённых планетах.
Также мы добавили несколько недостающих категорий для различных типов планет, чтобы позволить автоматизировать и их тоже. Например, мир-кольцо теперь может быть миром-фабрикой или кузней, а миры улья — крепостями.
И на этом мы будем заканчивать сегодняшний дневник. Как всегда, если у вас есть какие-то вопросы, задавайте их в теме с дневником на форуме, и я постараюсь ответить на них.
Напоследок хочу сказать, что, к сожалению, выделенное мне время в команде хранителей уже истекло, так что это последний дневник про ИИ от меня. Но работа над ИИ продолжается, и со следующим его обновлением вы наверняка познакомитесь с новой человеческой единицей. Отдельно хочу поблагодарить всех участников сообщества, которые в последние месяцы участвовали в важных обсуждениях, как сделать ИИ лучше, и неустанно сообщали об ошибках на соответствующем форуме.
Спасибо вам всем!
P. S. Не пытайтесь найти меня, я человек и я в безопасности, не ходите сюда bpjuzf.mf/3XagYAb
Дети подземелийПривет! С вами Eladrin, заскочил ненадолго.
На этой неделе Nivarias рассказал о происхождении «Дети подземелий». Рыть тоннели немного дороже, чем строить на поверхности, но и у такого подхода есть преимущества, особенно когда враги пытаются разбомбить ваши города.
Литоиды не страдают от штрафов к росту поселений.
Основной вид государства с происхождением «Дети подземелий» получает признак «Житель пещер», который даёт дополнительное производство минералов в обмен на скорость роста и размер государства от поселений, а также новый признак минимальной пригодности. Жители пещер укрываются от враждебной поверхности, а потому любые планеты с пригодностью ниже 50% для них считаются пригодными на 50%.
I am a dwarf and I’m digging a hole.
Поскольку дети подземелий живут под землёй, у их городов уникальный внешний вид, который отображается в окне планеты вместо обычного.
Кто тут царь горы?
Одно из достижений, показанных на прошлой неделе, называлось Underlord. Оно ответит на вопрос, возможно ли зарыться слишком глубоко.
На следующей неделеВы только взгляните, который час, мы же попадаем прямиком на выход дополнения Overlord.
На следующей неделе мы опубликуем список изменений обновления 3.4 «Цефей» и расскажем о происхождении «Улей-прародитель». А когда закончите чтение, заглядывайте к нам на официальный сервер Stellaris в Discord и участвуйте в сессии вопросов-ответов с разработчиками! Начало в четверг в 18:00 МСК.
Увидимся!"
Отличный комментарий!