на главную страницу
Крупнейший сайт о стратегиях. Обзоры новинок.Активный ФОРУМ и встречи с разработчиками. Большая качалка МОДов для RTW и не только. Родной дом «Империи» и «Бонапарта».
На internetwars.ru


ЭНЦИКЛОПЕДИЯ МОДЕЛИРОВАНИЯ

 

Вернуться к оглавлению

КАК СОЗДАВАТЬ НОВЫЕ БОЕВЫЕ ФОРМАЦИИ


НАШ ФОРУМ

Здесь можно задать вопрос по этому тутору. м

Активно обсуждаем военные игры, историю, МОДы, и новинки
игрового мира.

Рассмотрим для примера следующую. Она рассчитана на размещение членов семьи генералов.

begin_formation ai_family_multi

        attack

            defend

            ai_priority                                2.0

 

            ;; Family-members, first line

            begin_block 0

                        min_units                     2

                        max_units                    3

                        not_general

                        unit_type                      skirmish cavalry                       1.0

                        default_melee_state                 skirmish

                        unit_density                             close

                        min_unit_width                        16

                        max_unit_width                                   22

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        2.0

                        priority             1.0

            end_block

 

            ;; Family-members, left

            begin_block 1

                        not_general

                        unit_type                      skirmish cavalry                       1.0

                        default_melee_state                 skirmish

                        unit_density                             close

                        min_unit_width                        16

                        max_unit_width                                   22

                        block_formation                                  line

                        block_relative_pos       0 -18.0 -2.0

                        inter_unit_spacing        2.0

                        priority             0.8

            end_block

 

            ;; Family-members, right

            begin_block 2

                        not_general

                        unit_type                      skirmish cavalry                       1.0

                        default_melee_state                 skirmish

                        unit_density                             close

                        min_unit_width                        16

                        max_unit_width                                   22

                        block_formation                                  line

                        block_relative_pos       0 18.0 -2.0

                        inter_unit_spacing        2.0

                        priority             0.8

            end_block

 

            ;; Family-member, General

            begin_block 3

                        min_units                     1

                        max_units                    1

                        unit_type                      skirmish cavalry                       1.0

                        default_melee_state                 skirmish

                        unit_density                             close

                        min_unit_width                        16

                        max_unit_width                                   22

                        block_formation                                  line

                        block_relative_pos       0 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             1.0

            end_block

 

            ;; Siege equipment, left

            begin_block 4

                        unit_type                      siege                                        1.0

                        default_melee_state                 fire_at_will

                        unit_density                             close

                        min_unit_width                        11

                        max_unit_width                                   11

                        block_formation                                  line

                        block_relative_pos       3 -6.0 -2.0

                        inter_unit_spacing        6.0

                        priority             0.4

            end_block

 

            ;; Siege equipment, right

            begin_block 5

                        unit_type                      siege                                        1.0

                        default_melee_state                 fire_at_will

                        unit_density                             close

                        min_unit_width                        11

                        max_unit_width                                   11

                        block_formation                                  line

                        block_relative_pos       3 6.0 -2.0

                        inter_unit_spacing        6.0

                        priority             0.4

            end_block

 

            ;; Dummy block

            begin_block 6

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       3 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

На тактике построение в этой формации выглядит, как показано на картинке справа:

Я постараюсь объяснить использование операторов формаций на примере той формации, которая находится выше, так как очень важно понимать назначение каждой одиночной команды, из которых мы может сделать интересные комбинации операторов, так что нам понадобится внимание, чтобы уяснить некоторые тонкости моддинга формаций.
Несмотря на то, что в этой формации у меня нет генерала, он всегда автоматически будет находится в центре формаций, как вы можете здесь увидеть.

-Название формации
Каждая формация начинается с ее собственного названия, так же как каждая характеристика, юнит, здание или город ... так же как любому компоненту в игре должно быть присвоено какое-то имя, без которого она не сможет распознавать его.
Обычно, когда вы называете что-то, вам не следует повторять это название дважды или более, хотя, кажется, игра может  оперировать с повторяющимся названием, но все же я рекомендую использовать разные названия в формациях.

Формация начинается с оператора: "begin_formation”, который следует за именем, которое вы присвоили формации.
в конце каждой формации необходимо использовать команду "end_formation"

-Цель формации
Существует несколько различных целей для формации, и вы не можете добавлять свои цели.
ИИ устанавливает определенные цели для каждой армии, которая участвует в битвах:

-attack
-defend
-march
-pursue
-standard_ambush_defender_deployment

-существует еще несколько целей для битвы у моста и осады (про них позже)

Когда армия разворачивается, она  будет по умолчанию развернута в "defend" formation  и сохранит "defend" purpose или после начала битвы переключится на "attack" purpose.
Армия, задействованные в качестве подкрепления, должна использовать вместе цели "attack/defend", исходя из опыта Дарта  Вейдера.
Как точно ведут себя подкрепления на поле боя, я точно не знаю ... пока, но что я точно знаю, это  что ИИ-армии с  "defend" могут включить подкрепления в свой состав и присоединить к себе огромную армию, а это значит, что нужно быть уверенным, что ваша формация не ограничена максимально 20, это может быть причиной того, что подкрепления так и не присоединятся на поле битвы, хотя я думаю, что это не единственная причина. .
Лучше всего использовать сразу две цели в формации:
attack
defend
(как у меня записано в формации выше)
.

Вам не нужны формации только для атаки и защиты, хотя они позволять сделать существенные различия между атакующей и обороняющейся армией (или в подкреплении, по меньшей мере, в некоторых случаях).

Я точно не знаю, как используются "march" and "pursue" формации, так как в моих текущих экспериментах я делал очень простыми и никогда не замечал, чтобы они когда-нибудь использовались , что не значит, что они никогда не используется. Я, пока, просто не знаю.

"standard_ambush_defender_deployment" purpose используется, когда армия успешно сделала засаду, и армия разворачивается в середине засадной зоны.
Примечания по развертыванию в засаде; будьте уверены, что, когда вы играете большими или огромными армиями, она действительно способна развернутся в засадной зоне, так как ванильная версия не может аккуратно оперировать формациями в таких зонах. Ванильная версия часто ставит армии в колонну шириной в один отряд. Из-за этого армии становятся слишком длинными, и половина стека разворачивается в углу кары, делайте армии шире или в 2-3 колонны, в зависимости от настроек игры, это поможет избежать нежелательных случайностей.

- Приоритет формации
После указывания цели формации необходимо установить приоритет.

Я лично использую приоритет двух уровней: 2.0 для attack и defend и 1.0 для всего остального.
Это приводит к тому, что  attack and defend formations всегда будут предпочтительнее для ИИ, чем   формация только с одной командой  attack/defend, которая может использоваться только подкреплениями, и любые другие формации могут быть использованы, если только корректной  формации соответствует нужный приоритет.

-Поддерживаемые фракции
Если вы хотите, чтобы формации использовалась только конкретными фракциями, вы должны использовать оператор "supported_factions" до фактического начала формации.
Команда используется примерно так:

supported_factions romans_julii, romans_scipii и так далее

Итак, что мы имеем теперь после всего вышесказанного:

begin_formation ai_my_formation

        attack

            defend

            ai_priority                                1.0

 

            supported_factions romans_julii, romans_scipii

 

            {Здесь начинается фактически формация}

 

end_formation

Формация (если сказать просто) – это комбинация блоков. Их использование зависит от ваших знаний и фантазии.
Каждому из этих блоков могут быть даны различные настройки, которые сделают похожие на первый взгляд формации абсолютно различными.

Когда армия развернута (ИИ или игрока), игра просматривает формации в поисках наиболее подходящей, используя корректную цель формации и просматривая приорететы, поэтому подходящая для обороны формация не может быть использована в атаке и так далее.

Есть несколько способов воздействия на игру, чтобы заставить выбирать нужную для вас формацию, наиболее «грубые» - это приоритет и поддерживаемые фракции, хотя оба блока могут и не дать игре выбрать формацию. Для примера, вы хотите выбрать формацию для фракции, где много кавалерии (гунны и т.д.) Но в формации вы забыли поставить блок кавалерии. Тогда из-за этих двух ограничений игра или вылетит, или выберет не ту формации.

- Ложные блоки
Существует два вида блоков: ложные блоки и блоки для юнитов.
Ложные блоки включают два конпонета:
-spacer
-spans

Spacer позволяет создавать пустые блоки без размещения юнитов. Это необходимо, например, чтобы установить дополнительное расстояние между двумя другими блоками при нехватке необходимых юнитов в стеке. Спейсеры нужны для создания промежутков (не занятых юнитами) между блоками и юнитами.

Пример формации с полезным спейсером.
Это формация создана для генерала и армии лучников, которые ступают в битву вкачестве подкрепления (нетесрированная формация, дает представление, как работает спейсер):

begin_formation ai_archer_small_reinforcements

        attack

            defend

            ai_priority                                1.0

 

            begin_dummy_block 0

                        spacer                         0.0 0.0 60 30

            end_dummy_block

 

            ;; Archers, left

            begin_block 1

                        min_units                     1

                        max_units                    3

                        unit_type                      ranged_missile_infantry                        1.0

                        default_melee_state                 fire_at_will_and_defend_and_skirmish

                        unit_density                             close

                        min_unit_width                        40

                        max_unit_width                                   40

                        block_formation                                  column

                        block_relative_pos       0 -2.0 0.0

                        inter_unit_spacing        3.0

                        priority             1.0

            end_block

 

            ;; Archers, right

            begin_block 2

                        min_units                     1

                        max_units                    3

                        unit_type                      ranged_missile_infantry                        1.0

                        default_melee_state                 fire_at_will_and_defend_and_skirmish

                        unit_density                             close

                        min_unit_width                        40

                        max_unit_width                                   40

                        block_formation                                  column

                        block_relative_pos       0 2.0 0.0

                        inter_unit_spacing        3.0

                        priority             1.0

            end_block

 

            ;; Generals unit, in center behind

            begin_block 3

                        min_units                     1

                        max_units                    1

                        unit_type                      general_unit                             1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 -12.0

                        inter_unit_spacing        2.0

                        priority             1.0

            end_block

 

            ;; Dummy block

            begin_block 4

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       3 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

 

end_formation

Эта формация для 2-6 отрядов лучников вместе с генералом, хотя эта формация может быть использована так для генерала, так и для одного отряда лучников – все зависит от других формаций в файле.
Лучники развернуты в две колонны с промежутком, чтобы позволить потенциально генералу атаковать под прикрытием лучников.

Spans необходимы для того, чтобы связать несколько блоков в один, когда нужно разместить что-то относительно этих нескольких блоков.
Обычно спаны не нужны, но в некоторых случаях они могут быть поллезными, например, когда у вас есть две линии пехоты и вы хотите, чтобы кавалерия развернулась на определенном расстоянии от оконечности фланга, вы можете объединить обе линии пехоты для большей уверенности в правильном развертывании кавалерии. Не важно, сколько юнитов находится в первой и во второй линии, спаны сделают первую и втоhe. линию как бы одним блоком, и кавалерия будет разворачиваться относительно обех линий.
Вы можете разместить примерно от 1 до 10, более этого числа мне использовать не приходилось.

Вы можете использовать спаны как в этой формации.
Здесь две линии пехоты, 1 я хочу использовать, чтобы проиллюстрировать команду:

begin_formation ai_legion_smallcavalry

        attack

            defend

            ai_priority                                1.0

 

            ;; Legions, first line

            begin_block 0

                        max_units                    8

                        unit_type                      light_pilum_infantry                  1.0

                        default_melee_state                 fire_at_will

                        unit_density                             close

                        min_unit_width                        20

                        max_unit_width                                   20

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        10.0

                        priority             1.0

            end_block

 

            ;; Legions, second line

            begin_block 1

                        max_units                    6

                        unit_type                      heavy_pilum_infantry               1.0

                        default_melee_state                 fire_at_will

                        unit_density                             close

                        min_unit_width                        20

                        max_unit_width                                   20

                        block_formation                                  line

                        block_relative_pos       0 0.0 -12.0

                        inter_unit_spacing        12.0

                        priority             1.0

            end_block

 

            begin_dummy_block 2

                        spans               0 1

            end_dummy_block

 

            ;; Cavalry, right flank .. AI loves cav. on right!

            begin_block 3

                        max_units                    2

                        unit_type                      heavy cavalry                           1.0

                        unit_type                      light cavalry                             1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       2 24.0 -12.0

                        inter_unit_spacing        2.0

                        priority             0.6

            end_block

 

            ;; Dummy block

            begin_block 4

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       2 0.0 -12.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Как видите, первая линия состоит из легкой пехоты, вторая – из тяжелой.
Вы точно не знаете состав армии, когда используйте формацию, теперь, чтобы включить в построение кавалерию,   вам достаточно указать ее расстояние от спанов, а не стараться примерить к каждой линии по отдельности..
Спаны позволяют быстро и удобно разместить генерала и артиллерию в какой-то точке относительно всей формации:

- Блок юнитов
Блоки юнитов фактически формируют все формацию, они позволяют армиям отличаться друг от друга, и они визуально видны на поле боя.
С этого момента моддинг действительно начинается ....

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

begin_formation ai_dummy_formation

        attack

            defend

            ai_priority                                1.0

 

            ;; Dummy block

            begin_block 0

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Это прекрасно работающая формация, лучше той, которая используется в стандартной версии игры под названием «простая линия».

Я буду помечать команду следующим образом:
синий цвет-> необходимые
синий цвет с курсивом -> дополнительные

begin_block # Эта команда является началом блока и должна быть пронумерована, начиная с 0. (Ложные блоки нумеруются в одном порядке с блоками для юнитов).

min_units                    1
max_units                   2

Если вы захотите, вы можете поставить определенное количество юнитов блоке и указать минимальный и максимальный диапазон. В этом случае в блоке будет строго определенное вами количество юнитов. Можно указать в обоих параметрах равное значение, тогда в блоке будет только
то число юнитов. Но надо помнить, что в формации может не оказаться подобного числа юнитов, тогда она не будет аработать. Также в максимальном диапазоне можно указать число 0, когда блок является лишним.

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

Будьте внимательны, когда используйте эту команду. Если она неправильно расположена, она может причинить неудобства.
Не следует использовать эту команду в каждом блоке, часто генерал развертывается во вторую и третью очередь, но бывает, что первый блок уже заполнен. Это трудно объяснить, и поэтому я привожу пример.

Эта формация (наиболее вероятно) поместит вашего генерал в  "любой квадрат", если вы будете использовать 2 или более отряда тяжелой кавалерии

begin_formation ai_small_cavalry

        attack

            defend

            ai_priority                                1.0

 

            ;; Cavalry, first line

            begin_block 0

                        min_units                     1

                        max_units                    1

                        unit_type                      heavy cavalry               1.0

                        unit_density                             close

                        min_unit_width                        20

                        max_unit_width                                   20

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        2.0

                        priority             1.0

            end_block

 

            ;; Cavalry, second line

            begin_block 1

                        not_general

                        unit_type                      heavy cavalry               1.0

                        unit_density                             close

                        min_unit_width                        20

                        max_unit_width                                   20

                        block_formation                                  line

                        block_relative_pos       0 0.0 -12.0

                        inter_unit_spacing        2.0

                        priority             1.0

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       1 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Эта формация разместит юнита (не генерала) а первую очередь в первом блоке,  который заполнен из-за оператора ограничения юнитов 1 поэтому игра пытается разместить генерала во втором блоке, но там стоит оператор, не позволяющий генералу там оказаться. В результате генерал отправляется в последний блок, называемый  "любой квадрат".

Подобная формация, но теперь рабочая:

begin_formation ai_small_cavalry

        attack

            defend

            ai_priority                                1.0

 

            ;; Cavalry, first line

            begin_block 0

                        max_units                    1

                        unit_type                      heavy cavalry               1.0

                        unit_density                             close

                        min_unit_width                        20

                        max_unit_width                                   20

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

            ;; Cavalry, second line

            begin_block 1

                        not_general

                        unit_type                      heavy cavalry               1.0

                        unit_density                             close

                        min_unit_width                        20

                        max_unit_width                                   20

                        block_formation                                  line

                        block_relative_pos       0 0.0 -12.0

                        inter_unit_spacing        2.0

                        priority             1.0

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       1 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Если вы обратите внимание на первый блок и рассмотрите приоритет блока, вы увидите, что я его сильно снизил, также оператор min_units удален, поэтому игра так не ведет себя в заполнении блока.
Игра помещает первый юнит во второй блок, в конечном счете, помещая генерала в первый блок, так как это не позволяется сделать во втором блоке, потому что он заполняется оставшимися юнитами. Отмечу, что эта конкретная формация поместит генерала в «любой квадрат», если армия увеличится до 10 юнитов, так как разница в приоритетах блока  даст себя почувствовать приблизительно на 9 или 10 юните. Хотя все же маловероятно для генерала быть развернутым позже, я все же обычно отмечал такое явление и старался его предупредить.

По меньшей мере, с командой нет проблем самой по себе, но она все же работает немного проблематично.  Обратите внимание на самую первую формацию в туторе, она  располагает генерала в центральном блоке с помощью сочетания операторов  min_units, max_units, block-priority, not_general.

unit_type                    any                                         0.1
Этот оператор отображает, какой вид юнита вы хотите разместить в конкретном блоке и с каким приоритетом. Отмечу, что если вы в первую очередь разместите легкую пехоту с приоритетом 0.1,  а затем тяжелую пехоту с приоритетом 1.0,  конечно, тяжелой пехоты будет больше, но если имеется очень много легкой пехоты, в первую очередь будет размещена именно она. (Если не хотите этого, то начинайте с тяжелой пехоты и оканчивайте легкой). Таким способом можно увеличить количество легкой пехоты в блоке, если вы этого хотите.
Типы юнитов, которые можно использовать, прописаны в EDU.  Намример, это   infantry or cavalry, или комбинация типов и классов юнитов:light infantry or heavy infantry.
Но можно прописывать также некоторые особенности юнитов:  phalanx or non_phalanx_spear, или атрибут: chanting _screeching

Как видите, узнать типы юнитов можно, просматривая ванильные файлы.

default_melee_state               fire_at_will_and_defend_and_skirmish
Позволяет эффективно настроить поведение юнитов в битве(максиму 3 значения).
Когда армии развернуты, большинство юнитов получают свои установки на бой, например, лучники начинают бой с активированными кнопками «огонь по желанию» и «перестрелка». Когда вы используйте оператор default_melee_state  в пределах блока, в котором хотите настроить эти состояния юнитов, имейте в виду, что если вы задали  лучникам fire_at_will, они больше не перестреливаются, пропишите им  defend, и они болше не ведут огонь по желанию и не перестреливаются.Итак, чтобы заставить лучников выполнять все 3 эти действия, вам нужно прописать fire_at_will_and_defend_and_skirmish. Отмечаю, что в данном случае команда еще и активирует специальные виды боеприпасов, если они есть у юнита.  Однако, следует еще помнить, что игра в процессе битвы может на время переделать эти настройки: вам, наверняка, приходилось видеть в начале игры лучников, стреляющих обычными стрелами, а потом заменяющих их огненными.

Также, можно отключить все эти настройки, если использовать специальные команды, как показано здесь. В данном случае лучники не стреляют и держат позицию.

default_melee_state               dummy
Эта команда делает то же самое, что и:
default_melee_state               anyone_homeetc etc ...

Вам следует весьма осторожно использовать defend, так как это нельзя отключить, также ИИ не может поменять настройку во время битвы. В этом случае юниты не атакуют активно.
Также вам следует знать, что  default_melee_state не работает правильно в формациях для игрока.
Напоследок, все же невозможно точно определить, в какой момент ИИ по собственной инициативе может поменять настройки данного параметра по ходу битвы.

unit_formation          square
unit_formation          phalanx
unit_formation          wedge

Потенциально полезная команда, хотя я не использую ее в своих формациях.
Оператор позволяет вам поставить юнит в специальное построение (3 примера выше), но будет бесполезна для тех юнитов, которые не обладают способностью так строится.  Также мы понимаем, что ИИ по умолчанию ставит фалангистов в фалангу, но команда может предотвратить нежелательный выход юнита из этого построения.
Построение testudo работает некорректно в этой команде, его не следует использовать.

unit_density                close
unit_density                loose

Позволяет установить плотность строя отряда. Возможно два варианта: close или loose.
Но часто в битве ИИ сам меняет плотность на свой взгляд, так что этот параметр работает лишь отчасти.
Так я не пытался тестировать, мне не удалось точно установить, когда именно ИИ меняет плотность отряда.

min_unit_width                                  20
max_unit_width                                 20

С помощью этих команд можно регулировать ширину построения отряда в зависимости от различных боевых задач.

Дарт Вейдер упоминал  "min_unit_depth" и "max_unit_depth", но мне не удалось заставить эти команды работать в игре.

block_formation                    line
block_formation                    column
block_formation                    square

С помощью этих 3 видов построений блоков вы можете построить каждый блок по своему. Более всего используется построение в линию, так как оно наиболее эффективно. Но иногда бывают случаи, когда может потребоваться и колонна. Каре часто нормально не работает в боях на тактической карте.

- Определение позиции блока
Эта очень важная команда, от нее во многом зависит успешная работа формации.

Когда вы хотите расположить свою армию в битве, у вас есть два способа это сделать:

block_relative_pos       0 0.0 0.0

или комбинация команд:

normalised_pos            0.0 0.0

normalised_rot             0.0

Первый способ гораздо легче и более распространен, второй гораздо труднее и не всегда адекватно работает.
Вам следует помнить, что следует выбирать на всю формацию только один метод построения.  Иначе в том случае, если в одном блоке вы используйте 1 метод, во втором 2, то игра вылетит.

Минимальные значения команд таковы:

normalised_pos            0.0 0.0

normalised_rot             0.0t

Максимальные значения:

normalised_pos            1.0 1.0

normalised_rot             360.0

Я сам плохо понимаю значение команд, но дам несколько примеров, как они работают:

begin_formation ai_normalisedstuff_defend

            defend

            ai_priority                                3.0

 

            ;; First line of infantry

            begin_block 0

                        max_units                    3

                        unit_type                      heavy_pilum_infantry               1.0

                        default_melee_state                 fire_at_will_and_defend

                        unit_density                             close

                        block_formation                                  line

                        normalised_pos                       0.0 0.0

                        normalised_rot             0.0

                        inter_unit_spacing        6.0

                        priority             1.0

            end_block

 

            ;; Second line of infantry

            begin_block 1

                        max_units                    2

                        unit_type                      heavy_pilum_infantry               1.0

                        default_melee_state                 fire_at_will_and_defend

                        unit_density                             close

                        block_formation                                  line

                        normalised_pos                       0.0 0.0

                        normalised_rot             0.0

                        inter_unit_spacing        6.0

                        priority             1.0

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        normalised_pos                       0.0 0.0

                        normalised_rot             0.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Посмотрите, где армии развернуты относительно центра развертывания.

и

begin_formation ai_normalisedstuff_defend

            defend

            ai_priority                                3.0

 

            ;; First line of infantry

            begin_block 0

                        max_units                    3

                        unit_type                      heavy_pilum_infantry               1.0

                        default_melee_state                 fire_at_will_and_defend

                        unit_density                             close

                        block_formation                                  line

                        normalised_pos                       0.6 0.6

                        normalised_rot             45.0

                        inter_unit_spacing        6.0

                        priority             1.0

            end_block

 

            ;; Second line of infantry

            begin_block 1

                        max_units                    2

                        unit_type                      heavy_pilum_infantry               1.0

                        default_melee_state                 fire_at_will_and_defend

                        unit_density                             close

                        block_formation                                  line

                        normalised_pos                       0.0 0.0

                        normalised_rot             45.0

                        inter_unit_spacing        6.0

                        priority             1.0

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        normalised_pos                       0.0 0.0

                        normalised_rot             45.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Опять, армии находятся в центре построения, но это не произвело поворота.

Не используйте подобные значения в  normalised_pos  except for 0.0 0.0, если вы не хотите сломать формацию.

block_relative_pos    0 0.0 0.0
Я считаю, что эта самая важная команда в моддинге формаций.
Эта команда позволяет вам располагать блок относительно других блоков во всех направлениях. Объяснение можете взять в самом файле.
Первая цифра в команде обозначает, относительно какого блока будет вестись ориентирование блока, то есть относительно которого он будет располагаться. Вторая пара цифр обозначает перемещение влево или вправо относительно блока. Для перемещения вправо нужно поставить знак -. Вторая пара обозначает перемещение взад и вперед. Для перемещения взад нужно поставить знак-.
Вот первый пример:
block_relative_pos    2 -4.0 5.0
В данном случае блок будет располагаться относительно второго блока на 4 метра вправо и на 5 вперед.

Я проиллюстрирую эту команду еще несколькими примерами.

begin_formation ai_position_defend1

            defend

            ai_priority                                2.0

 

            supported_factions romans_julii

 

            ;; Legions

            begin_block 0

                        unit_type                      heavy_pilum_infantry               1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        12.0

                        priority             1.0

            end_block

 

            ;; Cavalry

            begin_block 1

                        unit_type                      heavy cavalry                           1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 -12.0

                        inter_unit_spacing        2.0

                        priority             0.9

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       1 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Следующая:

begin_formation ai_position_defend2

            defend

            ai_priority                                2.0

 

            supported_factions romans_brutii

 

            ;; Legions

            begin_block 0

                        unit_type                      heavy_pilum_infantry               1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        12.0

                        priority             1.0

            end_block

 

            ;; Cavalry

            begin_block 1

                        unit_type                      heavy cavalry                           1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 -12.0 0.0

                        inter_unit_spacing        2.0

                        priority             0.9

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       1 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Теперь такая:

begin_formation ai_position_defend3

            defend

            ai_priority                                2.0

 

            supported_factions romans_scipii

 

            ;; Legions

            begin_block 0

                        unit_type                      heavy_pilum_infantry               1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        12.0

                        priority             1.0

            end_block

 

            ;; Cavalry

            begin_block 1

                        unit_type                      heavy cavalry                           1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 -12.0 -12.0

                        inter_unit_spacing        2.0

                        priority             0.9

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       1 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

inter_unit_spacing     2.0
Эта команда позволяет поставить промежуток между юнитами в одном блоке. Например, ваши войска в одном блоке стоят в линию, и в этом случае расстояние между ними будет равняться 2 метрам.

priority                       1.0
Это последняя команда, без которой не может обойтись ни один блок. Она позволяет установить приоритет для каждого блока внутри формации.

В этой формации первая линия будет заполняться  10  юнитам до размещения юнитов во второй линии, max_units предотвращает размещение лишних юнитов в первой линии.

begin_formation ai_priority_defend

            defend

            ai_priority                                2.0

 

            ;; Legions

            begin_block 0

                        max_units                    10

                        unit_type                      heavy_pilum_infantry               1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        12.0

                        priority             1.0

            end_block

 

            ;; Legions

            begin_block 1

                        unit_type                      heavy_pilum_infantry               1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 -12.0

                        inter_unit_spacing        12.0

                        priority             0.1

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       1 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Теперь обсудим другой способ работы с приоритетами. я покажу несколько примеров.
Я покажу вам две формации, каждая из которых содержит линию кавалерии и линию пехоты, пока же я ходу, чтобы в первой была преимущественно пехота, а во второй – кавалерия. Понаблюдайте, как я буду менять приоритеты.

Первая формация: у пехоты высокий приоритет, у кавалерии поменьше

begin_formation ai_priority_infantry

            defend

            ai_priority                                2.0

 

            ;; Legions

            begin_block 0

                        unit_type                      heavy_pilum_infantry               1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        12.0

                        priority             1.0

            end_block

 

            ;; Cavalry

            begin_block 1

                        unit_type                      heavy cavalry                           1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 -12.0

                        inter_unit_spacing        2.0

                        priority             0.6

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       1 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

В этой форации пехота доминирует над кавалерией. Пример на картинке:

Теперь же я изменю приоритеты: кавалерия получит высокий приоритет, а пехота – маленький.

begin_formation ai_priority_cavalry

            defend

            ai_priority                                2.0

 

            ;; Legions

            begin_block 0

                        unit_type                      heavy_pilum_infantry               1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        12.0

                        priority             0.6

            end_block

 

            ;; Cavalry

            begin_block 1

                        unit_type                      heavy cavalry                           1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 -24.0 -12.0

                        inter_unit_spacing        2.0

                        priority             1.0

            end_block

 

            ;; Dummy block

            begin_block 2

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       1 0.0 -18.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

Теперь в формации больше кавалерии, чем пехоты

Я показал вам примеры, как только с помощью приоритетов можно заставить игру создавать из почти одинаковых формаций совершенно разные по поставу войск. Так можно делать практически с каждой формации.

end_block
эта команда оканчивает каждый блок. Она означает, что в блок закончен и больше не нуждается в изменениях.

-Formation for a full Roman army
Теперь, для заключения, я продемонстрирую простую формацию для целой римской армии.

begin_formation ai_full_legion

        attack

            defend

            ai_priority                                1.0

 

            ;; First line of infantry

            begin_block 0

                        unit_type                      light_pilum_infantry                  1.0

                        unit_type                      heavy_pilum_infantry               0.9

                        default_melee_state                 fire_at_will

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 0.0

                        inter_unit_spacing        12.0

                        priority             1.0

            end_block

 

            ;; Second line of infantry left

            begin_block 1

                        max_units                    1

                        unit_type                      heavy_pilum_infantry               0.9

                        unit_type                      light_pilum_infantry                  0.1

                        default_melee_state                 fire_at_will

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       0 0.0 -12.0

                        inter_unit_spacing        12.0

                        priority             1.0

            end_block

 

            ;; Spearmen

            begin_block 2

                        unit_type                      spearmen                                 1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       1 0.0 -12.0

                        inter_unit_spacing        18.0

                        priority             1.0

            end_block

 

            ;; Achers, behind the other infantry

            begin_block 3

                        unit_type                      ranged_missile_infantry                        1.0

                        default_melee_state                 fire_at_will_and_defend_and_skirmish

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       2 0.0 -6.0

                        inter_unit_spacing        3.0

                        priority             1.0

            end_block

 

            ;; Elephants

            begin_block 4

                        unit_type                      elephants                                 1.0

                        default_melee_state                 fire_at_will

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       3 0.0 -6.0

                        inter_unit_spacing        12.0

                        priority             0.8

            end_block

 

            begin_dummy_block 5

                        spans  0 1 2 3 4

            end_dummy_block

 

            ;; Siege equipment

            begin_block 6

                        unit_type                      siege                                        1.0

                        default_melee_state                 fire_at_will

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       5 0.0 -12.0

                        inter_unit_spacing        6.0

                        priority             0.2

            end_block

 

            ;; Generals unit

            begin_block 7

                        min_units                     1

                        unit_type                      general_unit                             1.0

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       6 0.0 -12.0

                        inter_unit_spacing        12.0

                        priority             1.0

            end_block

 

            ;; Cavalry, left wing

            begin_block 8

                        unit_type                      heavy cavalry                           1.0

                        unit_type                      light cavalry                             0.9

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       5 -24.0 -6.0

                        inter_unit_spacing        2.0

                        priority             0.9

            end_block

 

            ;; Cavalry, right wing

            begin_block 9

                        unit_type                      heavy cavalry                           1.0

                        unit_type                      light cavalry                             0.9

                        unit_density                             close

                        block_formation                                  line

                        block_relative_pos       5 24.0 -6.0

                        inter_unit_spacing        2.0

                        priority             0.9

            end_block

 

            ;; Dummy block

            begin_block 10

                        unit_type                      any                                          0.1

                        unit_density                             close

                        block_formation                                  square

                        block_relative_pos       7 0.0 -12.0

                        inter_unit_spacing        2.0

                        priority             0.1

            end_block

 

end_formation

На этом и закончим разговор о формациях для ИИ.

Дополнительная информация по формациям.
-Тип юнита

Типы юнитов, которые можно использовать в ванильном formations_ai:

any

infantry

light infantry

heavy infantry

pilum_infantry

light_pilum_infantry

heavy_pilum_infantry

spearmen

spearmen infantry

non_phalanx_spear

phalanx

missile infantry

skirmish infantry

ranged_missile_infantry

cavalry

spearmen cavalry

heavy cavalry

light cavalry

missile cavalry

skirmish cavalry

elephants

heavy_chariots

handler

siege

general_unit

chanting_screeching

swimming

carrying_siege_engine ram

carrying_siege_engine ladder

carrying_siege_engine tower

Формации для игрока
Здесь я постараюсь объяснить некоторые отличия между ИИ формациями и формациями для игрока.

В первую очередь, нельзя добавлять в формации для игрока неограниченное количество формаций, всего существует восемь 8 формаций (столько же и кнопок формаций) и одна дополнительная формация.

-Названия формации
Насколько я понимаю, каждая формация связана с кнопками на интерфейсе посредством следующих доступных в файле названий формаций:

simple_line

ordered_single_line

simple_double_line

ordered_double_line

ordered_triple_line_1

ordered_triple_line_2

ordered_triple_line_3

column

- Выбор юнита
Последняя формация используется, когда вы перемещайте или растягивайте мышью несколько юнитов (необязательно, чтобы они были сгруппированы).

-Цель и приоритет
Цель и приоритет не используются формациях для игрока, поскольку вы сами выбираете себе формацию.

-default_melee_state
После большого количества проведенных тестов удалось понять, что эта команда либо неадекватно работает в формациях для игрока, либо приводит к вылету. Лучше ее не использовать.

-Несколько примечаний по использованию формаций для игрока.
Когда вы будете делать выборочные формации для игрока, вы можете использовать команды, такие как   min_units и max_units. И количество юнитов не будет соответствовать этому условию в формации, то игра может сама собой вставить «лишние» юниты в блок. Например, вы создали блок для пехоты с максимумом в 3 юнита, а выбрали больше 3. Тогда игра может сама вставить эти юниты в блок.
Также нужно помнить, в формациях для игрока не следует изменять название формации, это может привести к вылету.
Напоследок предоставлю список «назначения» формаций, которые также не следует менять. Он находится сразу после названия формации.

general_order Group_Formation_Single_Line

general_order Group_Formation_Sorted_Line

general_order Group_Formation_Sorted_Double_Line

general_order Group_Formation_Sorted_Double_Line

general_order Group_Formation_Missile_First_3_lines

general_order Group_Formation_Infantry_First_3_Lines

general_order Group_Formation_Cavalry_First_3_Lines

general_order Group_Formation_Column

 

© Перевод тутора - hick09.
©Запрещается любая перепечатка и копирование без согласия  Internetwars.ru .