Следующие построения жестко прописаны в коде, поэтому не удаляйте их. Некоторые построения могут быть использованы игроком при создании группы, другие используются ИИ в определенных типах сражений:
• Multiple Selection Drag Out Land
• Spear Point
• Crane’s Wing
• Flying Geese
• Reclining Dragon
• War of the Tiger
• Bark of the Pine Tree
• Cloud Dragon
• Flying Bird
• Double Line Standard
• Grand Battery
• Cavalry Heavy Right
• Cavalry Heavy Left
• Melee Frontline
• Artillery Crossfire
• Siege Approach Column
• Siege Approach Line
• Ambush Column
• War of the sword
• Bird cloud
• Three day-old moon
• Extended snake
• Boshin Line Astern
• Boshin Line Abreast
• Multiple Selection Naval
Редактор
Рекомендуется Notepad++ или другой xml редактор для обнаружения ошибок во вносимых правках.
Как работают построения
Для примера рассмотрим Double Line Standard. Она выглядит так
1.0
Attack
Defend
Default_Deployment
0
1
2
В верхней части такие строки:
1.0
Attack
Defend
Default_Deployment
Приоритете (Priority) – одно значение, помогающее ИИ решить, какое построение использовать. Можно использовать это для создания разных построений для игрока и для ИИ, делая одни доступными только для игрока (AI priority 0.0) и другие для ИИ с большими значениями.
AIPurpose позволяет задавать, какие построения используются при атаке ИИ, какие при обоорне, какие – в обоих случаях, а также используется ли построения для размещения.
Есть дополнительные строки, которые могут быть добавлены после AI строк для помощи ИИ в выборе.
•
Тэги Min и MaxUnitCategoryPercentage могут быть применены для ограничения % юнитов определенного типа, при наличии которого эта формация будет применена ИИ.
Переходим к блокам.
Они выглядят следующим образом
•
•
•
•
•
•
Каждый блок дает преимущества; это помогает ИИ распределять юнитов по блокам построения.
Кроме блока 0, остальные располагаются относительно друг друга (Блок 0 – ContainerAbsolute, все остальные ContainerRelative). Они располагаются по координатам х и у. Так, например, в построении Double Line Standard блоки 0,1 и 2 позиционируются так:
Юниты в блоке могут быть построены в линию или колонну посредством тэга EntityArrangement для каждого блока.
В рамках блока могут быть разные строки, определяющие какие классы юнитов размещать в нем и приоритет для каждого класса юнитов. Сочетание в блоке приритетов класса юнитов, приоритета разных блоков и AIPriority для всего построения влияет на выбор построения ИИ в сражении.
Убедитесь, что в построении есть как минимум один блок, содержащий запись для EntityDescription=”any”. Так чтобы юниты, полностью не подходящие под критерии других блоков были все-таки размещены. Если этого не будет, ИИ проигнорирует построение.
Помните, ИИ не всегда имеет идеальную армию для большинства построений, поэтому желательно заложить немного гибкости «про запас».
Несколько блоков могут быть сгруппированы вместе в стянутый блок, как показано ниже:
•
•
• 0
• 1
• 2
•
•
Прочие блоки могут быть затем позиционированы относительно стянутого блока, что упростит организацию сложных построений.
Создание Групповых Построений
В ВОВ кликните по Groupformations.pack в working_data и обработка файла запустится.
Тестирование построений в игре.
Простой способ проверить новое построение, добавленное или модифицируемое вами это задать AIPriority всем другим построениям 0.0 (сделайте перед этим резервную копию. Загрузить игру и затем в кастом битве выбрать армию, которая идеально соответствует этому построению.
Возможные проблемы
• Пропущенные скобки, при ручном редактировании случается часто и где Notepad++ особенно эффективен в их выявлении;
• Блоки не по порядку или номер(а) пропущен(ы). Блоки должны начинаться с 0 и далее по порядку.
• В игре юниты располагаются поверх друг друга. Это возможно, если они не расположены в блоке или блоки расположены недостаточно далеко друг от друга по осям х и у.
• Помните, если у ИИ не идеальная армия для построения он попытается заполнить ее наилучшим образом, делайте блоки вашего построения достаточно гибкими, чтобы юниты не были размещены странным образом, если определенные блоки не заполнены.