Campaign AI Recruitment - туториал
Автор: Савромат
Дата: 01 ноя 2014, 12:32 · Просмотров: 4 384
Дата: 01 ноя 2014, 12:32 · Просмотров: 4 384
Какие армии набирает Аи - важнейший вопрос для интересной игры. Поскольку я занимаюсь в Дарк-моде основном этими вещами, я знаю как это модифицировать. Но т.к. мне лень писать свой собственный тутор с нуля и я приверженец принципа "Не умножай сущностей сверх необходимых" - я решил оттолкнуться от английского тутора Litharion-а на ТВЦ, переведя и прокомментировав только то, что я сам делаю и делал.
Набор войск в армии Аи в Риме 2 подчиняется строгим закономерностям и регулируется системой таблиц, доступных для моддинга. Его вполне можно настроить.
Связь от юнита до приоритета его набора Аи в игре осуществлена через систему таблиц по схеме:
Config_key -> Template_key -> Template_ratios -> Unit_Group_key -> Main_Unit
Config_key:
Каждая фракция имеет в игре свой Config_key, назначенный для нее в стартпозе.
Compressed_Data -> World -> Faction Array -> Faction Array - "Number" -> Faction, строка 17
Faction Array ID
Вы можете найти все config_key, используемые в игре, в таблице cdir_military_generator_configs_table
Template_key:
Config_key сам по себе не отвечает за структуру набора Аи-армий. Он связывается с template_key в таблице cdir_military_generator_template_priorities_table. А последний уже напрямую выводит Аи на композицию отрядов в армию в игре. Именно так игра распознает какая фракция (config_key) c какой композицией отрядов (template_key) в игре связана. Все template_key используемые в игре вы можете найти в cdir_military_generator_templates_table
Template_ratio:
После того как template_key прописан для фракции (confige_key), он попадает в Group_keys - группы ключей - по которым разные типы армий группируют свои юниты. Group_keys используются для того чтобы разделить юниты по группам - отделить слонов от копейщиков и т.д. Если template_key не входит в Group_keys, Аи не будет набирать отряды этой группы.
cdir_military_generator_template_ratios_table - одна из главных таблиц от которых зависит приоритет набора отрядов в армии Аи. В какую группу какая композиция имеет доступ - определяет что будет в армии Аи а чего нет. Не поставите вы римскую композицию в группу слонов - не будет римский Аи слонов набирать никогда. Уберете композицию номадов из группы тяжелой копейной пехоты - не будет Аи кочевников набирать тяжелых копейщиков.
Unit_group_key:
Связь каждого юнита игры с группой (Group_keys) осуществляется через cdir_military_generator_unit_qualities_table, где unit_key из main_units_table сопрягается с Group_key и этому сопряжению выставляется цифровое значение приоритетности (quality) - чем выше, тем в рамках одной группы Аи будет больше стремится такой юнит набрать
Все используемые игрой группы юнитов можно найти в cdir_military_generator_unit_groups_table.
cdir_military_generator_unit_qualities_tables
cdir_military_generator_template_ratios_tables
cdir_unit_balances_tables - некоторые считают что она не работает совсем, я же не могу этого подтвердить; в этой таблице задается идеальный баланс типов юнитов (group_keys) в армии в пропорции и по количеству отрядов в стеке из 20 юнитов. Имхо она работает так же как "идеальный тип политики" в Риме 1 (помните, эти "balanced caesar", "fortified napoleon"? - такие же рекомендательные - необязательные - ориентиры для Аи)
cdir_military_generator_unit_qualities_tables
group_key: Этот ключ определяет к какой группе юнитов отряд принадлежит.
unit_key: Ключ юнита, отсылающий таблицу к main_units
quality: Цифры определяют приоритет набора отряда для Аи. Чем выше значение, тем больше Аи будет стремиться набрать этот отряд в рамках одной и той же группы (group_key)
cdir_military_generator_template_ratios_tables
template_key: Этот ключ определяет шаблон (композицию отрядов)
unit_group_key: Этот ключ определяет группу отрядов, которой соотносится шаблон (композиция).
ratio: Этот ключ определяет сколько отрядов указанной группы будет набирать Аи (в штуках в размерах фракции!). Чем больше значение - тем больше Аи наберет отрядов этой группы. Можно ставить от 1 до 99999. Х.з., я видел и больше отрядов одной группы у фракции. Имхо - он набирает в соотношении. Т.е. если Риму указано 15 отрядов штурмовой пехоты, 4 копейной пехоты, 4 стрелковой пехоты, 4 артиллерии, 5 штурмовой кавалерии, 1 верблюда, 1 слона, 1 ударной конницы и 1 стрелковой конницы - он такой набор и сделает, а потом начнет в рамках лимита армий по следующему кругу повторять.
3.Приоритетность набора для Аи
Этот сюжет проиллюстрирую на примере набора Аи египетских лучников (Egy_Archers) и египетских метателей дротиков (Egy_Favelinmen). В ваниле Аи Птолемеев набирает дротикометателей чаще чем лучников, хотя польза от последних по факту больше.
cdir_military_generator_unit_qualities_tables - table fragment
Ванила:
Default_land_infantry_missile Egy_Archers 500
Default_land_infantry_missile Egy_Javelinmen 534
Изменения:
Default_land_infantry_missile Egy_Archers 550
Default_land_infantry_missile Egy_Javelinmen 400
Итог:
Аи будет набирать египетских лучников охотнее чем египетских метателей дротиков.
Значение quality таблицы cdir_military_generator_unit_qualities_tables действительно только в рамках одной группы юнитов (group_key) и не имеет никакого отношения к величине guality юнитов других групп!
Вот, собственно, и все. Можно ввести в игру дополнительные группы юнитов и композиции набора, но это уже тема другого разговора.
Набор войск в армии Аи в Риме 2 подчиняется строгим закономерностям и регулируется системой таблиц, доступных для моддинга. Его вполне можно настроить.
1. Система таблиц - cdir table
Связь от юнита до приоритета его набора Аи в игре осуществлена через систему таблиц по схеме:
Config_key -> Template_key -> Template_ratios -> Unit_Group_key -> Main_Unit
Config_key:
Каждая фракция имеет в игре свой Config_key, назначенный для нее в стартпозе.
Compressed_Data -> World -> Faction Array -> Faction Array - "Number" -> Faction, строка 17
Faction Array ID
Вы можете найти все config_key, используемые в игре, в таблице cdir_military_generator_configs_table
Template_key:
Config_key сам по себе не отвечает за структуру набора Аи-армий. Он связывается с template_key в таблице cdir_military_generator_template_priorities_table. А последний уже напрямую выводит Аи на композицию отрядов в армию в игре. Именно так игра распознает какая фракция (config_key) c какой композицией отрядов (template_key) в игре связана. Все template_key используемые в игре вы можете найти в cdir_military_generator_templates_table
Template_ratio:
После того как template_key прописан для фракции (confige_key), он попадает в Group_keys - группы ключей - по которым разные типы армий группируют свои юниты. Group_keys используются для того чтобы разделить юниты по группам - отделить слонов от копейщиков и т.д. Если template_key не входит в Group_keys, Аи не будет набирать отряды этой группы.
cdir_military_generator_template_ratios_table - одна из главных таблиц от которых зависит приоритет набора отрядов в армии Аи. В какую группу какая композиция имеет доступ - определяет что будет в армии Аи а чего нет. Не поставите вы римскую композицию в группу слонов - не будет римский Аи слонов набирать никогда. Уберете композицию номадов из группы тяжелой копейной пехоты - не будет Аи кочевников набирать тяжелых копейщиков.
Unit_group_key:
Связь каждого юнита игры с группой (Group_keys) осуществляется через cdir_military_generator_unit_qualities_table, где unit_key из main_units_table сопрягается с Group_key и этому сопряжению выставляется цифровое значение приоритетности (quality) - чем выше, тем в рамках одной группы Аи будет больше стремится такой юнит набрать
Все используемые игрой группы юнитов можно найти в cdir_military_generator_unit_groups_table.
2. Таблицы отвечающие за набор отрядов
cdir_military_generator_unit_qualities_tables
cdir_military_generator_template_ratios_tables
cdir_unit_balances_tables - некоторые считают что она не работает совсем, я же не могу этого подтвердить; в этой таблице задается идеальный баланс типов юнитов (group_keys) в армии в пропорции и по количеству отрядов в стеке из 20 юнитов. Имхо она работает так же как "идеальный тип политики" в Риме 1 (помните, эти "balanced caesar", "fortified napoleon"? - такие же рекомендательные - необязательные - ориентиры для Аи)
cdir_military_generator_unit_qualities_tables
group_key: Этот ключ определяет к какой группе юнитов отряд принадлежит.
unit_key: Ключ юнита, отсылающий таблицу к main_units
quality: Цифры определяют приоритет набора отряда для Аи. Чем выше значение, тем больше Аи будет стремиться набрать этот отряд в рамках одной и той же группы (group_key)
cdir_military_generator_template_ratios_tables
template_key: Этот ключ определяет шаблон (композицию отрядов)
unit_group_key: Этот ключ определяет группу отрядов, которой соотносится шаблон (композиция).
ratio: Этот ключ определяет сколько отрядов указанной группы будет набирать Аи (в штуках в размерах фракции!). Чем больше значение - тем больше Аи наберет отрядов этой группы. Можно ставить от 1 до 99999. Х.з., я видел и больше отрядов одной группы у фракции. Имхо - он набирает в соотношении. Т.е. если Риму указано 15 отрядов штурмовой пехоты, 4 копейной пехоты, 4 стрелковой пехоты, 4 артиллерии, 5 штурмовой кавалерии, 1 верблюда, 1 слона, 1 ударной конницы и 1 стрелковой конницы - он такой набор и сделает, а потом начнет в рамках лимита армий по следующему кругу повторять.
3.Приоритетность набора для Аи
Этот сюжет проиллюстрирую на примере набора Аи египетских лучников (Egy_Archers) и египетских метателей дротиков (Egy_Favelinmen). В ваниле Аи Птолемеев набирает дротикометателей чаще чем лучников, хотя польза от последних по факту больше.
cdir_military_generator_unit_qualities_tables - table fragment
Ванила:
Default_land_infantry_missile Egy_Archers 500
Default_land_infantry_missile Egy_Javelinmen 534
Изменения:
Default_land_infantry_missile Egy_Archers 550
Default_land_infantry_missile Egy_Javelinmen 400
Итог:
Аи будет набирать египетских лучников охотнее чем египетских метателей дротиков.
Значение quality таблицы cdir_military_generator_unit_qualities_tables действительно только в рамках одной группы юнитов (group_key) и не имеет никакого отношения к величине guality юнитов других групп!
Вот, собственно, и все. Можно ввести в игру дополнительные группы юнитов и композиции набора, но это уже тема другого разговора.