Введение в ИИ
НЕ ДЛЯ НОВИЧКОВ
Этот раздел рассчитан на опытных скриптеров, имеющие базовые познания в программировании ИИ.
Что стоит знать перед работой:
ИИ в HOI4 ужасен
убейте меня...., хуже только работа с ним.Вы не можете редактировать боевой ИИ, вам это не позволено.
ИИ может игнорировать коэфициенты выставленные вами.
ИИ не умеет видеть местность. Единственное что он видет - континент.
ИИ нельзя задать статическую покупку ресурсов, а значит, невозможно заскриптить стандартными методами.
ИИ сам выстраивает интерес к ресурсам базируясь на потребности в производстве техники. Если ресурс для техники не используется, значит он не нужен. Заскриптить самому невозможно.
Сущность стратегий ИИ:
Сущноть стратегий содержит одну или несколько стратегий ИИ и определяет, когда и как они должны применяться. Когда страна проверяет сущность, она будет разрешена только в том случае, если enable
она истинна, а abort
пустая или ложная. Сущность отключается, если abort
она не пуста и истинна. Он также отключается, если abort_when_not_enabled
установлен и enable
имеет значение false
.
Обращенная сущность работает совсем по-другому. сущность включается для страны-источника, если она указана как id
в ai_strategy
и enable_reverse
пуста или истинна. Затем сущность проверяется на соответствие целям. Если target_array
и/или targets
установлен, они используются как возможные цели. В противном случае все страны используются в качестве возможных целей. enable
и abort
спусковые проверяются для каждой возможной цели. Если цель проходит эти проверки, все ai_strategy
элементы записи включены для источника, но заменяются id
на цель.
Стратегии ИИ:
Стратегический ИИ влияет на принятие решений в других компонентах ИИ по определенным стратегическим соображениям (типы), которые также могут быть нацелены. Например, страна может быть стратегически заинтересована в защите другой страны, независимо от текущих дипломатических отношений и статуса альянса. Или он может захотеть произвести больше единиц определенного типа.
С точки зрения структуры, стратегия AI имеет только четыре атрибута: type
, value
, id
, и target
. Только некоторые типы используют id
и/или target
. Все четыре атрибута по своей сути являются целыми числами, но если они type
указаны первым, id
атрибут может ссылаться на соответствующие значения по имени. target_country
это еще один способ установить target
. Он принимает индекс страны или тег и в обоих случаях проверяет, относится ли он к допустимой стране.
ИИ сам создает динамические стратегии, но можно добавлять и статические. Статические стратегии в первую очередь определяются с помощью записи стратегии ИИ в Hearts of Iron IV/common/ai_strategy
или плана стратегии ИИ. Черты лидера страны (в /common/country_leader
) могут нести стратегии ИИ, которые активируются, когда соответствующий человек становится правителем. Индивидуальные стратегии также могут быть добавлены напрямую с помощью эффекта add_ai_strategy
(например, в случае событий, национальных фокусов и тд. и тп).
Эффективные стратегии ИИ страны сохраняются в файлах сохранения как ai
атрибут страны.
Типы:
Так как скриптеры ИИ обращаются к списку стратегиям очень часто, значит и разумнее их выставить наверх.
При определении ai_strategy
тип определяет, какой аспект стратегии ИИ изменяется. Дополнительные ai_strategy от LaR можно найти в /common/ai_strategy/default.txt
Тип
ID
Описание
put_unit_buffers
См. Ai_strategy/default.txt
Используется для указания ИИ гарнизона в определенных регионах
conquer
<тег>
Поощряет военный ИИ нацеливаться на указанный тег.
colonize
????
???? "Не используется".
explore
????
???? "Не используется".
antagonize
<тег>
Подталкивает дипломатический ИИ к противодействию по отношению к другой указанной стране.
befriend
<тег>
Подталкивает дипломатический ИИ к тому, чтобы относиться к другой указанной стране лучше.
protect
<тег>
Подталкивает дипломатический ИИ страны, чтобы попытаться защитить другую указанную страну.
consider_weak
<тег>
Подталкивает ИИ к рассмотрению указанного тега как слабого.
influence
????
???? "Не используется".
alliance
<тег>
Подталкивает дипломатический ИИ к формированию союза с другой указанной страной.
build_ship
????
???? "Не используется".
build_airplane
????
???? "Не используется".
build_army
<роль подразделения>
Приказывает ИИ построить дивизию или оборудование (например, самолеты или корабли), которые относятся к определенной роли подразделения.
build_building
<здание>
Приказывает ИИ построить определенное здание в определенном месте. Использует target
для указания местоположения стейта.
research_tech
<технология>
Приказывает ИИ исследовать определенную технологию, если это возможно.
garrison
<целое число>
Используется в ai_strategies/SOV.txt, USA.txt, ENG.txt, какая часть армии должна оставаться в гарнизоне
contain
<тег>
Подталкивает дипломатический ИИ к действиям против другой страны, например к сдерживанию своих будущих потенциальных врагов.
invade
<тег>
Подталкивает ИИ к вторжению в указанный тег.
unit_ratio
<тип объекта>
От всей армии это соотношение (в%) того типа подразделения, которое должна иметь армия.
role_ratio
<роль подразделения>
От всей армии это соотношение (в%) роли этого подразделения, которое должна иметь армия. Роли могут быть определены произвольно в ai_templates
.
land_xp_spend_priority
????
???? "Не используется".
pp_spend_priority
<решение> <гарантия> <отношение> и т.д.
Устанавливает приоритет расходования политической власти на указанное действие.
template_prio
<тип объекта>
Устанавливает приоритет шаблона указанного типа юнита для ИИ.
template_xp_reserve
????
Устанавливает XP, зарезервированный для AI, чтобы учитывать изменения шаблона.
equipment_design_priority
????
????
equipment_stockpile_surplus_ratio
????
Устанавливает прибавочную стоимость базового оборудования.
air_factory_balance
????
Изменяет заводское соотношение воздуха.
equipment_production_factor
<тип объекта>
Изменяет порядок производства оборудования для указанного типа юнита.
equipment_variant_production_factor
<оборудование>
Изменяет расположение производства варианта оборудования для указанного оборудования.
equipment_production_min_factories
<тип объекта>
Устанавливает минимальное заводское количество, необходимое для начала производства оборудования для указанного типа юнита.
ignore
<тег>
Подталкивает ИИ к игнорированию указанного тега.
area_priority
<область ии>
Поощряет военный ИИ нацеливаться на указанную область ИИ.
send_volunteers_desire
<тег>
Изменяет настрой ИИ на отправку добровольцев на указанный тег.
occupation_policy
<тег>
Определяет политику оккупации по отношению к указанному тегу.
support
<тег>
Изменяет настрой ИИ на поддержку указанного тега против партизан.
naval_avoid_region
<стратегический регион>
Изменяет режим избегания ИИ указанного стратегического региона военно-морскими силами.
prepare_for_war
<тег>
Подталкивает ИИ к планированию атаки для возможной войны с целью
save_equipment
<оборудование>
Заставляет ИИ сохранять оборудование указанного типа до установленного значения.
pp_spend_amount
<решение> <гарантия> <отношение> и т.д.
Устанавливает сумму, разрешенную для траты политической власти на указанное действие.
declare_war
<тег>
Подталкивает ИИ к объявлению войны указанному тегу.
ignore_army_incompetence
????
Устанавливает склонность ИИ игнорировать некомпетентность армии.
spare_unit_factor
????
Устанавливает коэффициент боевого резерва. Используется, чтобы побуждать ИИ отправлять больше юнитов для помощи на союзных фронтах, а не гарнизонировать свою территорию.
dont_join_wars_with
<тег>
Подвигает ИИ к отказу от защиты целевой страны, когда задействован указанный тег. Использует target_country
для определения целевой страны.
added_military_to_civilian_factory_ratio
????
Изменяет коэффициент соотношения количества военных и гражданских предприятий.
factory_build_score_factor
????
Изменяет расположение сборки ИИ для состояния. Используйте target
для определения целевого стейта
ignore_claim
<тег>
Устанавливает игнорирование ИИ претензий к указанному тегу. Принимает 1 как значение.
dockyard_to_military_factory_ratio
????
Изменяет соотношение верфей и военных заводов.
dont_defend_ally_borders
????
Подталкивает ИИ к отказу от защиты указанного союзника.
force_defend_ally_borders
????
???? "Не используется".
building_target
<здание>
Приказывает ИИ увеличивать количество <постройки>. Сюда входят те, которые уже находятся в собственности и приобретены торговлей (гражданский завод).
production_upgrade_desire_offset
<оборудование>
???? "Не используется".
force_build_armies
????
Заставляет ИИ строить армии
strike_force_home_base
<регион>
Приоритет портов региона для военно-морских операций
garrison_reinforcement_priority
????
Приоритет гарнизона
intelligence_agency_branch_desire_factor
????
????
intelligence_agency_usable_factories
????
????
Атрибуты ИИ:
allowed: (тип: AND триггер) Оценивается только один раз в начале игры, поэтому условия должны быть статическими (например,
tag = GER
илиis_historical_focus_on = yes
). Если запись не разрешена, она больше никогда не проверяется, поэтому это можно использовать для повышения производительности.enable: (тип: AND триггер) Включает запись (если abort также не является пустым и истинным).
abort: (тип: AND триггер) Если не пусто и истинно, отключает запись.
abort_when_not_enabled: (тип: да/нет, по умолчанию: нет) Если включено, запись будет отключена, когда
enable
станет false.ai_strategy: (тип: стратегия ИИ, может появляться несколько раз) стратегия ИИ, применяемая с этой записью
reversed: (тип: да/нет, по умолчанию: нет) использовать обратную семантику, как описано выше
enable_reverse: (тип: AND триггер) дополнительный триггер для страны-источника для передачи обратного триггера
target_array: (тип: переменная) Переменная массива, содержащая обратные цели, например
neighbors
,exiles
илиenemies
.target: (тип: список переменных) Список индивидуальных обратных целей, например
{ GER ENG FRA }
Шаблоны ИИ:
В /common/ai_templates
файлы определяют шаблоны, используемые роли, которые ИИ должен использовать.
Роли - это ядро системы шаблонов ИИ. Их можно создавать произвольно, что позволяет мододелам создавать собственные роли.
Каждый шаблон, назначенный роли, будет формировать группу для этой роли, а затем оценка пригодности каждого доступного шаблона используется для определения того, какой из них используется в определенный момент для конкретной роли.
В качестве примера, используем шаблон "средних танков - ОБТ" Economic Crisis:
Шанс ИИ
Обнаруженный во многих файлах, ai_will_do
- это элемент, который выдает число, которое ИИ использует при взвешивании решений. Функционально он очень похож на mean_time_to_happen
и использует ту же систему модификаторов, которая там описана. Однако у него другая интерпретация базы и фактора.
Обратите внимание, что интерпретация ИИ полученного числа не одинакова во всех случаях использования, но обычно выборка пропорциональна вероятности размеру.
base (Тип: переменная с заданной областью действия, по умолчанию: 1) Базовое значение вычисления до применения каких-либо модификаторов.
factor (Тип: число (с 3 десятичными знаками), по умолчанию: 1) Последний коэффициент, применяемый при вычислении.
Пример:
Результат: 0 для GER (10.5 0 = 0) 74 для FRA (((10.5 + 1) 3 + 2.5) 2 = 74) 23 для остальных мажоров ((10.5 + 1) 2 = 23) 21 для миноров (10.5 * 2 = 21)
ИИ мир
В /common/ai_peace
файлы управления ИИ при мирной конференции.
Существует пять типов мирного поведения:
гражданская война
демократичный
коммунист
фашист
по умолчанию
Есть пять базовых вариантов мира, а именно:
annex
liberate
puppet
take_states
force_government
Пример:
ИИ фокусы
Каждый фокус ИИ можно изменить с помощью соответствующего модификатора для конкретной страны, называемого ai_focus_<x>_factor
, который применяется после вычислений по умолчанию, указанных выше. Например, ai_focus_naval_air_factor = 0.5
добавляет 50% бонус к фокусу морской авиации страны.
Приоритет исследования В common/ai_focuses
файлы управления, сколько фокусы ИИ влияет на какие виды исследований и национальных фокусов.
Каждое имя фокуса может иметь постфиксный тег страны, чтобы сделать конкретную настройку фокуса для страны, например, ai_focus_aviation_GER
.
Пример:
Исторические фокусы Этот фокус не имеет значения, но ИИ будет следовать за национальными фокусами в указанном порядке, если включены исторические фокусы ИИ.
Чтобы добавить исторические национальные фокусы, вы добавляете ai_historical_focus_list_<tag>
, который содержит национальные фокусы, которым ИИ должен уделять приоритетное внимание. Эта система была в некоторой степени дополнена стратегическими планами ИИ, которые учитывают исторические списки фокусов, но также отклоняются от них, когда основные предположения нарушаются.
Пример:
Область ИИ
В /common/ai_areas
управления каталогов отнесений земельных провинций именованным областей ИИ. Они, в свою очередь, используются только стратегией ИИ, area_priority
описанной ниже. Каждая сухопутная провинция относится только к одной области ИИ. Используется первая совпадающая область. Нет необходимости назначать область ИИ каждой провинции земли, но неназначенные области не могут быть указаны в area_priority
стратегии. Область ИИ отображается во всплывающей подсказке отладки провинции.
Пример:
Планы ИИ
В /common/ai_strategy_plans
файлы определяют конкретное общего поведение ИИ для конкретных тегов, используемые для исторических планов по умолчанию.
Пример:
Last updated