Улучшаем поведение ИИ - Легко!
Лучшие авторы в этой теме
-
Lazarka 7 сообщений
-
Тимстер Липкенс 1 сообщение
-
KovAlexey 1 сообщение
-
Херсонський Кавун 1 сообщение
-
Vana332228 1 сообщение
Популярные дни
Популярные сообщения

Lazarka
Было у меня желание написать свой мод, по улучшению поведения ИИ, оно и сейчас есть, но я понимаю что у меня абсолютно нет времени этим заниматься, даже несмотря на то что я безумно этого хочу. Поэт

Lazarka
Добро, закончу на днях, как будет время.

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

Lazarka
Осталась еще политическая стратегия - как заставить ИИ принимать правильные законы. Плюс, заключение, как всё правильно организовать, для создания мода по ИИ. Затем скину файлы собственного

Lazarka
я так понял что никому не интересно, кому надо тот и сам во всем разберется, а чисто из любопытства никто технический текст читать не будет.

KovAlexey
Да почему? Лишним бы не было. Материала очень мало, хороший бы гайд не помешал, как вообще писать "скрипты" (если это вообще ими можно назвать) под этот движок, искать модификаторы и тд У ме
-
Сейчас на странице 0 пользователей
- Нет пользователей, просматривающих эту страницу
-
Модераторы онлайн
- alexis
Рекомендованные сообщения
Было у меня желание написать свой мод, по улучшению поведения ИИ, оно и сейчас есть, но я понимаю что у меня абсолютно нет времени этим заниматься, даже несмотря на то что я безумно этого хочу.
Поэтому я решил поделиться тем, в чём мне удалось разобраться, возможно у кого то есть больше возможностей и данная информация поможет сэкономить время, чтобы не разбираться самому.
Здесь не будет базовой информации, типо как создавать мод, но перейдем сразу к рассмотрению файлов которые отвечают за поведении ИИ, и определимся с тем, - что мы можем, чего не можем, и как это лучше сделать.
Мы рассмотрим все аспекты, начиная от строительства зданий, дипломатии, воин, принятия законов и всего, что необходимо для того чтобы например заставить ИИ США или любой другой страны,
- стать супер страной, с мега показателями ВВП, и составить достойную конкуренцию игроку.
Сейчас мы не рассматривает настройки ИИ которые есть в defines, и которые отвечают за поведение ИИ абсолютно всех стран. Т.е. меняя значения в defines, мы меняем поведения сразу всех стран,
но мы хотим научится менять поведении ИИ конкретной страны, не затрагивая другие страны.
Файлы которые отвечают за поведении ИИ находятся в common/ai_strategies.
Здесь 4 файла. (скрин вставить)
Один общий, называется 00_default_strategy, стратегии прописанные здесь применимы ко всем странам сразу.
И три дополнительных файла:
01_admin_strategies отвечает за строительство зданий, импорт и экспорт, налоги.
02_diplomatic_strategies отвечает за дипломатию, с кем дружить, кого любить, на кого нападать, а также какие цели преследовать, например сделать марионеткой, или аннексировать или отнять область.
03_political_strategies отвечает за принятие законов.
То что прописано в admin, political, diplomatic перемножается, а иногда складывается с теми цифрами что уже есть в 00_default_strategy.
admin, political, diplomatic, - какая стратегия сейчас используется конкретной страной, мы можем это увидеть прямо в игре, нажав на страну (сделать скрин)
Здесь настраиваем: что и когда строить, налоги, политику импорта и экспорта
По аналогии с файлом 01_admin_strategies мы можем создать свой файл и придумать ему название, например 10_IAI_admin_strategies.
Далее прописываем саму стратегию и разбираемся что к чему:
ai_admin_strategy_iai_1_jap_1836 = { #<придумываем оригинальное название
icon = "gfx/interface/icons/ai_strategy_icons/resource_expansion.dds" # картинка, которая будет отображаться в профиле страны
type = administrative # здесь задаем тип стратегии (administrative/diplomatic/politic). тип отвечает только за то в какой ячейке профиля страны будет отображаться стратегия.
desired_tax_level = very_high #желаемый уровень налогов very_low/low/medium/high/very_high
max_tax_level = very_high #максимально допустимый уровень налогов
min_tax_level = very_high #минимально допустимый уровень налогов
building_group_weights = { # приоритеты для постройки зданий. Есть какие то базовые значения(они нам не известны или есть в defines),
# то что мы пишем тут, работает addictively(т.е. не множитель, а сложение), цифры тут суммируются с базовыми значениями (но это не точно)
bg_iron_mining = 80.0 # если мы хотим что бы ИИ сконцентрировался на постройке железных шахт bg_iron_mining поднимаем значение до 80.0.
# Какое именно значение установить 50, 80, 100 или 1000, нужно смотреть на деле, запускаем игру, в консоли пишем Observe,
# и наблюдаем строит ли ИИ нужное нам количество шахт или нет, и соответственно уменьшаем или увеличиваем.
bg_tools_industry = 80.0 # инструменты
bg_ships_industry = 60.0 # верфи
bg_paper_industry = 40.0 # бумага
bg_logging = 20.0 # дерево
bg_light_industry = 0.5 # легкая индустрия (група объединяющая несколько зданий(бумага, инструменты, еда и др.))
bg_construction = 0.5 # строительный сектор
bg_public_infrastructure = 1.1 # порты
# приоритет строительства некоторых зданий всегда выше чем других
# например если bg_government = 1.0 а bg_iron_mining = 80.0,
# то ИИ всёравно будет строить Правительственные здания, пока ему кажется что их нехватет, и он не обращает внимание на то что у нас bg_iron_mining = 80.0
# пока не удовлетворит дефицит правительственных зданий. Потому если мы хотим, в какой то период времени, полностью запретить строительство Казарм, Морских Баз, Университетов и Правительственных зданий,
# то мы задаем здесь отрицательные значения. Также всё проверяется путем прогонок в режиме наблюдения, насколько занизить или повысить эти значения.
bg_technology = -2.0 # университеты
bg_government = -0.2 # правительственные здания
bg_army = -2.0 # казармы
bg_navy = -2.0 # морские базы
# полный список групп bg_ зданий мы можем найти в папке common/building_groups
# но здесь есть ньюанс, не для каждого здания есть своя группа
# например есть группа bg_light_industry которая объединяет в себе инструменты, бумагу, еду и другое
# но мы хотим что бы ИИ сконцентрировался именно на строительстве инструментов сейчас, не повышая при этом приоритет бумаги и всего остального.
#для этого нам нужно создать новую группу
# название придумываем сами, например bg_tools_industry, там пишем что эта группа пошла от bg_light_industry ,
bg_tools_industry = {
parent_group = bg_light_industry
default_building = building_tooling_workshops - название которое мы берем из папки buildings
}
# и в папке buildings, в самом здании(инструменты находятся в файле 01_industry) пишем, что теперь оно принадлежит не к группе bg_light_industry ,
# а к нашей новой конкретной группе bg_tools_industry
building_tooling_workshops = {
building_group = bg_tools_industry < здесь меняем группу на нашу
texture = "gfx/interface/icons/building_icons/tooling_workshops.dds"
....
....
}
# и теперь здесь мы можем использовать это bg_tools_industry и задавать ему значения которые нам нужны: bg_tools_industry = 80.0
}
goods_stances = {
# здесь задаем политику для экспорта и импорта,
grain = { stance = wants_export } # значит ИИ выберет политику экспорт без пошлин
tools = { stance = wants_high_supply } # обеспечить внутренне потребление = высокие налоги на экспорт
clippers = { stance = wants_high_supply }
iron = { stance = wants_high_supply }
lead = { stance = wants_high_supply }
wood = { stance = wants_high_supply }
hardwood = { stance = wants_high_supply }
sulfur = { stance = wants_high_supply }
}
# если мы хотим чтобы ИИ построил больше зданий строительного сектора,
# то добавляем в нашу стратегию wanted_construction_sector_levels
wanted_construction_sector_levels = {
value = 0
add = { # +1 здание за каждые 2 миллиона ВВП
value = gdp
divide = 2000000
}
add = { # + 1 здание за каждые 2 миллиона населения
value = total_population
divide = 2000000
}
if = { # тут можно добавить каки то условия, например,
#если у нас принят закон Традиционализм, то умножаем значения полученые выше на 0.75
limit = { has_law = law_type:law_traditionalism }
multiply = 0.75
} # эти условия проверяются только один раз, при смене стратегии. Например сейчас у ИИ нет закона традиционализм,
# а потом он появился, то это условие не срабатfет, пока ИИ не сменит стратегию. лучше перезначать стратегию в ивентах, используя команду set_strategy, но об этом позже.
min = 1
max = 100
}
# Тоже самое работает для казарм и морских баз
# How many levels of barracks should the AI have
# Using this value in other strategies will function additively
wanted_army_size = {
value = 0
# На основе ВВП
add = {
value = gdp
divide = 100000 # 1 level of barracks per 100k incorporated population
max = 10 # но не больше +10 от ВВП
}
}
wanted_navy_size = { } # здесь для флота пишем условия. Опять же, если мы не хотим увеличивать флот или армию, то можно вообще не прописывать в нашей стратегии wanted_army_size или wanted_navy_size
possible = { exists = c:JAP THIS = c:JAP } # ограничение, кому можно использовать эту стратегию. Например эту стратегию может использовать только Япония.
weight = { # вес, или приоритет стратегии. Стратегии переназначаются сами, примерно раз в три месяца, в зависимости от приоритета прописанного здесь
value = -100 # приоритет минус 100, если мы не хотим что бы ИИ сам выбирал эту стратегию, пока не сработают заданые нами условия, или пока мы не назначим явно эту стратегию.
# условие: если это Япония, если сушествует глобальная переменная:Имя_переменной, если дата меньше 1838 года, то добавить 2000 к приоритету этой стратегии.
if = { limit = { exists = c:JAP THIS = c:JAP has_variable = IAI_strategy_1_JAP current_game_date < 1838.1.6 } add = 2000 }
#Важно: по моим наблюдения, условия когда ИИ должен сменить одну стратегию на другую, лучше проверять в ивентах и назначать новую через set_strategy,
# потому что условия прописанные тут, проверяются с большой задержкой и могут вообще не сработать, по каким то неведомым мне причинам.
}
}
Опубликовано Lazarka,
Закреплено StrаtegiumПрисоединиться к обсуждению
Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.