Сообщество Империал: Инструкция по работе с GroupFormations (Total War: Rome II) - Сообщество Империал

nnn900

Инструкция по работе с GroupFormations (Total War: Rome II)

Как править имеющиеся или вводить новые построения
Тема создана: 10 июня 2017, 02:57 · Автор: nnn900
  • 4 Страниц
  • 1
  • 2
  • 3
  • 4
 1 
 nnn900
  • Imperial
Imperial
Форумчанин

Дата: 10 июня 2017, 02:57

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

Эта инструкция актуальна как для Рим 2, так и для Аттилы. Да собственно и для Вархаммера.

С чем нам предстоит работать.
Идем по пути Steam/steamapps/common/Total War Rome II/assembly_kit/raw_data/EmpireDesignData
В этой папке лежит текстовый файл GroupFormations, это и есть наш исходник.
Копируем его для работы в любое место, чтобы вносимые изменения не были стерты при например обновлении, или проверке кэша А-kit-ом.

Файл формаций разделен на разделы:

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

Второй раздел GROUP FORMATIONS
В нем размещены построения, находящиеся во вкладке "Построения" боевого интерфейса.
Но только стандартные для всех фракций.
Для просмотра ссылки Зарегистрируйтесь
Персональные фракционные построения, расположенные в верхней строчке (обведены красным) этого меню находятся в другом разделе.
Эти построения можно редактировать, но нельзя переименовывать и удалять.

Третий раздел, наиболее для нас интересный ARMY FORMATIONS
Он так же начинается с двух дефолтных построений для случаев, когда ИИ не может выбрать построение из существующих

Для просмотра ссылки Зарегистрируйтесь
Как видим, они сделаны в 2 вариантах, первое используестя для войск атакующего, второе для ообороняющегося

Затем идут построения для сухопутных битв как такие, которые могут быть использованы всеми субкультурами, так и те, которые будут выбираться только для войск указанных для построения субкультур.
А так же фракционные построения Для просмотра ссылки Зарегистрируйтесь
которые обведены красным кружком.
Построения для штурмов городов со стенами и без стен, битв на переправе, засадных битв, они в самом низу списка.
Ванильные построения из этого раздела так же нельзя удалять и переименовывать. Только редактировать.
Так же в этот раздел можно добавлять собственные построения.

Четвертый раздел NAVAL посвящен построениям для флота, там всё организовано аналогично построениям для сухопутных битв.

Теперь перейдем к тому, как устроено само построение.

Рассмотрим на примере моего оборонительного построения для Рима и этрусков
Для просмотра ссылки Зарегистрируйтесь
Для просмотра ссылки Зарегистрируйтесь
Запись состоит из шапки (обведено красным), где указывается:
1. Имя построения (может быть любым, отличным от имен ванильных построений).
2. Приоритет выбора этого построения ИИ.
3. То, что это построение будет выбираться для битв, когда ИИ является обороняющейся стороной Defend, если атакующей, то вместо него ставим Attack.
Так же построение может быть универсальным, для атаки и обороны, тогда в шапке должны быть обе эти записи.
4. Запись о том, что построение может использоваться как дефолтное при развертывании. Это нам по сути не нужно.
5. Последняя запись, это привязка построения к субкультуре.
Субкультур можно указывать сколько угодно, а можно не указывать, тогда построение будет доступно для любой субкультуры.

За шапкой идут блоки войск, из которых состоит построение.
Первый блок, обозначенный красной цифрой 1 называется всегда ContainerAbsolute, его номер 0, он может быть только один.
Все остальные блоки носят имя ContainerRelative, они на поле боя располагаются относительно этого первого блока.
Еще одна интересная для нас запись обозначена красной цифрой 6, это <GroupFormationBlock BlockId="5">
Наличие этого блока говорит о том, что все вышеуказанные блоки объединены в "стянутый блок", которые указываются как ...nedBlockId>0</SpannedBlockId> ...nedBlockId>1</SpannedBlockId> и т.д, таких записей должно быть столько, сколько блоков мы объединили. В данном случае с 0 по 4.
При наличии "стянутого блока" все последующие блоки уже будут размещаться относительно самого этого блока
Для просмотра ссылки Зарегистрируйтесь
Но стянутый блок делать не обязательно.
Закрывает формацию обведенная красным запись.

Теперь рассмотрим содержание самих блоков войск:
Для просмотра ссылки Зарегистрируйтесь
Красными цифрами обозначено:

1. Приоритет блока. Цифровое значение в данном случае, это пропорция, исходя из которой войска указанных классов попадают в эту группу.
А так же это пропорциональное соотношение классов войск указанных в группе к общему составу армии.
В зависимости от этих значений ИИ может выбирать, использовать данное построение, или другое, где соотношения войск более близки к указанным.
То есть в нашем примере в <GroupFormationBlock BlockId="0"> будут попадать юниты, имеющие класс inf_spr и inf_mel задающиеся в таблице land_units_tables
Для классов в их строчке тоже можно задавать приоритеты попадания в группу.
И "веса" medium, light, very_light заданные юнитам в main_units_tables, колонка weights.
Но вес указывать не обязательно, в отличие от класса, тогда запись будет выглядеть, как например в <GroupFormationBlock BlockId="3"> где указан только класс юнитов, входящих в группу.

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

2. Эта запись указывает, как отряды попавшие в группу будут распологаться относительно друг друга.
Известны два варианта Line и Column
В нашем случае они расположатся в линию.

3. Здесь задаётся интервал между попавшими в группу отрядами.
В нашем случае это 5 "игрометров".

Если мы хотим изменить дефолтное расстояние между отрядами, то нужно его указать во всех дефолтных же построениях, о которых писал выше, вместо указанного там.

4. и 5. Это координаты отряда в зоне развертывания.
Точка X="0.0" Y="0.0" для нашего самого первого блока ContainerAbsolute находится в центре красной линии зоны предбоевого развёртывания войск, со стороны обращенной к зоне развёртывания противника.
По оси Х мы двигаем групу в право или в лево, по Y ближе или дальше от противника.

6. Эта запись предназначена для групп ContainerRelative, она указывает, относительно какого блока будет располагаться данный блок.
Если в построении присутствует стянутый блок, то для всех не вошедших в него групп координаты отсчитываются от войск стянутого блока (для чего указывается его номер), либо друг друга (тогда указываем номер группы, от которой ведется отсчет координат).
Если в составе армии не окажется войск для наполнения какого то блока ContainerRelative относительно которого размещен другой такой блок, то войска блока имеющего привязку к несуществующему блоку будут отправлены в резерв.
Если ИИ выберет построение, где нет войск для наполнения группы ContainerAbsolute остальные войска всё равно будут размещены от точки, где должен был размещаться этот блок.

Собственно это практически всё, что достаточно знать для работы с формациями.

Когда мы закончили правку файла формаций, просто копируем измененный файл обратно в EmpireDesignData далее идем в папку binaries и запускаем оттуда BOB.AssemblyKit
В появившемся окне ставим галочку напротив файла формаций (показано стрелочкой) и жмём старт (обведено красным)
Для просмотра ссылки Зарегистрируйтесь
Через пару секунд наши новые формации готовы.
Идем в working_data и забираем наш GroupFormations.pack, переводим его с помощью ПФМ в в формат movie, кладем в data игры, запустив битву в кастоме или кампании и смотрим на результат правок.
Для того, чтобы внести изменения в полученный файл процедура повторяется с нуля (если забыли сохранить отдельно уже имеющий правки текстовый файл).

P.S. Как видите, всё довольно просто, никакого колдовства :001: .
     nnn900
    • Imperial
    Imperial
    Форумчанин

    Дата: 21 марта 2019, 23:35

    vadim (21 марта 2019, 23:22):

    В право отнесло и командира по центру нет. Вообще в правые ворона уткнулась арта

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

    vadim (21 марта 2019, 23:22):

    Вечер вчера на это затратил.

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

    Еще вот как можно попробовать, объединить блок 3 с блоком 4, где "any", с той же прописью колонны.
    Ведь резервная группа должна вроде на точке захвата становиться:
    <GroupFormationBlock BlockId="3">
    <ContainerRelative BlockPriority="0.75" EntityArrangement="Column" InterEntitySpacing="2.0" RelativeBlockId="2" PositionX="0.0" PositionY="-5.0">
    <EntityPreference Priority="1.0" EntityClass="com"/>
    <EntityPreference Priority="1.0" EntityClass="art_fld"/>
    <EntityPreference Priority="0.75" EntityClass="any"/>
    </ContainerRelative>
    </GroupFormationBlock>
       vadim
      • Imperial
      Imperial
      StratArtModding

      Дата: 21 марта 2019, 23:49

      Спасибо вот этот вариант ещё пока не пробывал
      для анов всегда писал 4 ряд и на PositionY="-10.0"
      У них в тераине /я имею ввиду Разрабов/ по такой же мутной методе прописаны координаты всех элементов городского плана.
      Когда я с ребятами с Rise of Mordor общался на Дискорде они там чтобы код карты для прописи новой ковырнуть группой сидели и каждый по столбцу этих координат на пробу брал.
      Цеховым методом просчитывали числители.
         nnn900
        • Imperial
        Imperial
        Форумчанин

        Дата: 21 марта 2019, 23:51

        vadim (21 марта 2019, 23:49):

        для анов всегда писал 4 ряд и на PositionY="-10.0"

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

          Дата: 22 марта 2019, 00:16

          В центр координат. Где Центральный флаг захвата он юнитов не ставит. поэтому то их и разносит в разные стороны от командира.
             vadim
            • Imperial
            Imperial
            StratArtModding

            Дата: 22 марта 2019, 01:20

            <ContainerRelative BlockPriority="0.75" EntityArrangement="Line" InterEntitySpacing="2.0" RelativeBlockId="1" PositionX="0.0" PositionY="-5.0">
            <EntityPreference Priority="1.0" EntityClass="inf_mis"/>
            <EntityPreference Priority="1.0" EntityClass="cav_mis"/>
            </ContainerRelative>
            </GroupFormationBlock>
            <GroupFormationBlock BlockId="3">
            <ContainerRelative BlockPriority="0.75" EntityArrangement="Line" InterEntitySpacing="2.0" RelativeBlockId="2" PositionX="0.0" PositionY="-5.0">
            <EntityPreference Priority="1.0" EntityClass="com"/>
            <EntityPreference Priority="1.0" EntityClass="art_fld"/>
            Вот как он/комп/ при этой росписи выставляет арту
            Для просмотра ссылки Зарегистрируйтесь
            А если учесть что онагры на бастионах крутятся при отражении атаки на 360 градусов/вокруг своей оси/ то к осадам в лёгкую нифига не подьедеш.
            Красиво кстати железка отбивается.
               vadim
              • Imperial
              Imperial
              StratArtModding

              Дата: 22 марта 2019, 08:59

              Если я ещё не достал с вопросами , тогда ещё есть у меня одна идейка. Если подскажешь варианты более удачной прописи буду Очень Признателен Камрад.
              Со Стен Нуливой линии /ну первой для контакта/ хотел снять часть пехоты и прописать её под защиту стен до начала общей свалки.
              Сейчас так.
              <GroupFormationBlock BlockId="0">
              <ContainerAbsolute BlockPriority="1.0" EntityArrangement="Line" InterEntitySpacing="2.0" PositionX="0.0" PositionY="0.0">
              <EntityPreference Priority="1.0" EntityClass="inf_spr"/>
              <EntityPreference Priority="1.0" EntityClass="art_fix"/>
              <EntityPreference Priority="1.0" EntityClass="inf_pik"/>
              <EntityPreference Priority="0.5" EntityClass="inf_mel"/>
              </ContainerAbsolute>
              </GroupFormationBlock>
              <GroupFormationBlock BlockId="1">
              <ContainerRelative BlockPriority="1.0" EntityArrangement="Line" InterEntitySpacing="2.0" RelativeBlockId="0" PositionX="0.0" PositionY="-5.0">
              <EntityPreference Priority="1.0" EntityClass="inf_mel"/>
              <EntityPreference Priority="1.0" EntityClass="cav_mel"/>
              <EntityPreference Priority="1.0" EntityClass="elph"/>
              Каков диапазон числителя у EntityPreference Priority - хотел его прописать в <GroupFormationBlock BlockId="0"> чтобы был по пехоте меньше того что есть
              Ну и вообще вопрос как бы Вы Уважаемый этот момент прописали. Если учесть что у Штурмующего несколько отрядов Арты и он Ими по инфантерии на стенах наносит урон до начала контакта.
                 nnn900
                • Imperial
                Imperial
                Форумчанин

                Дата: 22 марта 2019, 09:34

                vadim (22 марта 2019, 08:59):

                Если я ещё не достал с вопросами , тогда ещё есть у меня одна идейка. Если подскажешь варианты более удачной прописи буду Очень Признателен Камрад.
                Со Стен Нуливой линии /ну первой для контакта/ хотел снять часть пехоты и прописать её под защиту стен до начала общей свалки.
                Сейчас так.

                Каков диапазон числителя у EntityPreference Priority - хотел его прописать в <GroupFormationBlock BlockId="0"> чтобы был по пехоте меньше того что есть
                Ну и вообще вопрос как бы Вы Уважаемый этот момент прописали. Если учесть что у Штурмующего несколько отрядов Арты и он Ими по инфантерии на стенах наносит урон до начала контакта.

                Диапозон числителя может быть двузначным.
                В поле я использую приоритеты группы до 12 например.

                По прописи, чтобы снять часть пехоты, нужно чтобы в обоих группах были одинаковые её классы.
                Пример:
                <GroupFormationBlock BlockId="0">
                <ContainerAbsolute BlockPriority="3.0" EntityArrangement="Line" InterEntitySpacing="2.0" PositionX="0.0" PositionY="0.0">
                <EntityPreference Priority="1.0" EntityClass="inf_mel"/>
                <EntityPreference Priority="1.0" EntityClass="inf_spr"/>
                <EntityPreference Priority="1.0" EntityClass="art_fix"/>
                <EntityPreference Priority="1.0" EntityClass="inf_pik"/>
                </ContainerAbsolute>
                </GroupFormationBlock>
                <GroupFormationBlock BlockId="1">
                <ContainerRelative BlockPriority="2.0" EntityArrangement="Line" InterEntitySpacing="2.0" RelativeBlockId="0" PositionX="0.0" PositionY="-5.0">
                <EntityPreference Priority="1.0" EntityClass="inf_mel"/>
                <EntityPreference Priority="1.0" EntityClass="inf_spr"/>
                <EntityPreference Priority="1.0" EntityClass="cav_mel"/>
                <EntityPreference Priority="1.0" EntityClass="elph"/>
                </ContainerAbsolute>
                </GroupFormationBlock>
                При таком соотношении 40% пехоты классов inf_mel и inf_spr будут попадать в группу поддержки. При этом группа на стенах будет более приоритетной для ИИ.

                Можно сохранить приоритетность групп равной, но сделать ту же процентовку распределения этих классов пехоты по группам так:
                <GroupFormationBlock BlockId="0">
                <ContainerAbsolute BlockPriority="1.0" EntityArrangement="Line" InterEntitySpacing="2.0" PositionX="0.0" PositionY="0.0">
                <EntityPreference Priority="1.2" EntityClass="inf_mel"/>
                <EntityPreference Priority="1.2" EntityClass="inf_spr"/>
                <EntityPreference Priority="1.0" EntityClass="art_fix"/>
                <EntityPreference Priority="1.0" EntityClass="inf_pik"/>
                </ContainerAbsolute>
                </GroupFormationBlock>
                <GroupFormationBlock BlockId="1">
                <ContainerRelative BlockPriority="1.0" EntityArrangement="Line" InterEntitySpacing="2.0" RelativeBlockId="0" PositionX="0.0" PositionY="-5.0">
                <EntityPreference Priority="0.8" EntityClass="inf_mel"/>
                <EntityPreference Priority="0.8" EntityClass="inf_spr"/>
                <EntityPreference Priority="1.0" EntityClass="cav_mel"/>
                <EntityPreference Priority="1.0" EntityClass="elph"/>
                </ContainerAbsolute>
                </GroupFormationBlock>

                Что это даст в действиях ИИ нужно будет по тестам наблюдать, но соотношение распределения сил будет в целом сохраняться на момент загрузки битвы.
                Ну а кого больше в поддержку или на стены сразу ставить, тут зависит, как мне кажется, от того, перемещает ли ИИ из поддержки на стены отряды, если на стенах расставленные перебиты или сбежали.
                Если вводит подкрепление на стены, можно и в поддержку больше отрядить, а на стены например вообще только стрелков загнать.
                   vadim
                  • Imperial
                  Imperial
                  StratArtModding

                  Дата: 22 марта 2019, 10:30

                  Спасибо Большое Камрад.
                  Буду пробывать по итогам отпишу с картинками.
                  С Уважением Vadim
                     vadim
                    • Imperial
                    Imperial
                    StratArtModding

                    Дата: 22 марта 2019, 11:04

                    А вот вопросец ещё один Камрад.
                    Вы из файлика groupformations.bin текстовик GroupFormations.xml /в обратку/ не пробывали делать, ну или вытаскивать прописи расстановок?
                       nnn900
                      • Imperial
                      Imperial
                      Форумчанин

                      Дата: 22 марта 2019, 13:59

                      vadim (22 марта 2019, 11:04):

                      А вот вопросец ещё один Камрад.
                      Вы из файлика groupformations.bin текстовик GroupFormations.xml /в обратку/ не пробывали делать, ну или вытаскивать прописи расстановок?

                      Я пробовал всякие программы для распаковки бин файлов использовать, это еще для Империи, но не вышло ничего хорошего.
                      Это пока не узнал, что есть инструмент для правки группформейшена этих игр от Синухета, правда он недоделанный был и не всё давал править.

                      А в этих играх, когда дали офф инструмент, как то смысла не было, они в А-ките выкладывают актуальную версию исходника формаций, по крайней мере для Рима2 так, не думаю, что в Аттиле по другому делают.
                      Поэтому оно как бы не особо нужно. Если только чтоб глянуть этот файл из какого то мода с ТВЦ, если там этим кто сейчас занимается.
                        • 4 Страниц
                        • 1
                        • 2
                        • 3
                        • 4
                         Похожие Темы
                        С[Канал] Total War | Задира
                        YouTube-канал Total War | Задира
                        Автор T Thanatis
                        Обновление 5 мин. назад
                        MMedieval Kingdoms: Total War - 1212 AD
                        Attila Version
                        Автор s shaburoff
                        Обновление 43 мин. назад
                        DLet's play Total War: Rome 2 - Александр Великий (Divide et Impera)
                        Сложность ВХ-ВХ, без пауз на тактике, с несколькими сабмодами
                        Автор S Sonar
                        Обновление Сегодня, 14:59
                        Воспользуйтесь одной из соц-сетей для входа
                        РегистрацияВход на форум 
                        «Империал» · Условия · Ответственность · Визитка · 29 мар 2024, 16:16 · Зеркала: Org, Site, Online · Эльдорадо казино · Gold казино · Счётчики