Сообщество Империал: battle_models.modeldb - Сообщество Империал

Аттила

battle_models.modeldb

описание, структура, связи
Тема создана: 16 октября 2014, 10:23 · Автор: Аттила
  • 2 Страниц
  • 1
  • 2
 Аттила
  • Imperial
Imperial
Форумчанин

Дата: 16 октября 2014, 10:23

Файл battle_models.modeldb по сути достаточно прост, но требует повышенной внимательности при работе с ним - малейшая неточность в знаке, пропущенный символ - и, как следствие, жесткий вылет на рабочий стол или зависание игры при старте. Для того, чтобы избежать подобного и прежде чем работать с файлом, нужно сделать для себя две важные вещи:

1. Составить хотя бы примерный "план работ" (Что собираемся менять/добавить/убрать).

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

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

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


1. Начало файла

Начало - это, по факту, всего одна первая строка, тем не менее она достаточно важна, и, если на неё не обращать внимание при редактировании battle_models.modeldb, гарантировано будет вылет. Примерно так первая строка может выглядеть в разных модах.
22 serialization::archive
3 0 0 0 0
1230 0 0


22 serialization::archive 3 0 0 0 0 1158 0 0


Как уже неоднократно отмечалось, и это тоже достаточно важно, все строки в файле battle_models.modeldb начинаются с какого-либо числа, и первая строка во всех тех модах, которые я играл, начинается с 22. Объяснение этому достаточно простое - в двух словах serialization::archive 22 символа. Отсюда простой вывод - все числа в этой и последующих строках указывают на длину строки в символах. И зачастую вылеты бывают связаны именно с несоответствием количества символов и числа.

Второй важный момент первой строки - это запись об общем количестве моделей (не юнитов!!!), используемых в игре. В приведенных мною примерах есть два значения 1230 и 1158, и именно эти значения говорят, сколько моделей прописано в игре. Разумеется, если выставленное значение будет неверным, то будет вылет или зависание игры. Правильное значение - это сумма всех моделей юнитов до апгрейда, после апгрейда, а также моделей лошадей, пони, верблюдов, слонов.... Следует отметить, что общую сумму нужно искать самому только в случае, если мод делается абсолютно с нуля, когда файл battle_models.modeldb пуст и каких-либо исходников попросту нет. В подавляющем же большинстве модов значение выставляется вычитанием или прибавлением к уже существующему числу некоторых цифр, в зависимости от выполняемых задач. Стоит обратить внимание на такой момент - если Вы попросту добавляете какой-либо фракции уже существующего в моде юнита, то значение не будет изменяться, поскольку данная модель уже включена в файл и суммирована модостроителями. Если же Вы переносите юнита из одного мода в другой, в котором изначально его не было - то значение увеличится на то количество моделей, которое Вы добавите. А определить количество добавляемых моделей можно с помощью файла export_descr_unit.txt, в строке armour_ug_models нужного юнита как раз они и прописываются.


2. Основные записи о моделях.

Записи о моделях юнитов можно условно разделить на 4 части:
  • а) часть моделей, в которой прописываются пути к файлам .mesh
  • б) часть текстур юнитов, в которой прописываются пути к файлам .texture и .spr для юнитов
  • в) часть текстур для аттачментов, в которой прописываются пути к файлам .texture для оружия, щитов или другого снаряжения.
  • г) часть, в которой описывается пеший юнит или нет, а так же основное и вторичное оружие, используемое юнитом в бою.


Записи о моделях "транспортных средств" проще: часть с путями для .mesh-файлов и часть с путями для .texture-файлов.

Все записи однотипны и думаю разбор одной записи "по частям" вполне поможет понять принцип работы с файлом.
Типичная запись о юните "Рыцари-феодалы" (раскрыть)


Итак, часть "а"

В ней, как уже говорилось, прописываются пути к файлам .mesh моделей юнитов, на которые собственно "натягивается" текстура. Как правило, эти файлы лежать по пути Games\Total War\mods\ModNameTW \data\unit_models\ и далее по под-папкам фракций, уникальных юнитов, и т.д., в зависимости от предпочтений мододела. Либо для нее может быть создана отдельная папка [mesh]. В любом случае пут должен быть прописан правильно для каждого .mesh-файла, начиная с папки unit_models
14 feudal_knights
1 4
58 unit_models/_Units/EN_Lmail_Hmail/feudal_knights_lod0.mesh 121
58 unit_models/_Units/EN_Lmail_Hmail/feudal_knights_lod1.mesh 900
58 unit_models/_Units/EN_Lmail_Hmail/feudal_knights_lod2.mesh 2500
58 unit_models/_Units/EN_Lmail_Hmail/feudal_knights_lod3.mesh 6400


где:
feudal_knights - имя модели для export_descr_unit.txt
4 - количество файлов .mesh
unit_models/_Units/EN_Lmail_Hmail/ - путь к файлу
feudal_knights_lod0.mesh - имя файла
121 - качество модели (?? - не уверен, но такую версию слышал)
а числа 14, 1, 58, 58, 58 указывают на длину определенной строки


часть "б"

Часть начинается с числа, которое указывает на общее количество фракций, для которых прописаны текстуры. Есть ошибочное мнение, что без редактирования этой части юниты не появятся в игре. Появятся, но без текстур, будут "оловянными солдатиками", не очень красиво, но играть, тем не менее, возможно.
Саму часть также можно условно разделить на несколько блоков - "блоков текстур и спрайтов". Каждый блок начинается с числа, соответствующему количеству символов в названии фракции и заканчивается на .spr

15
7 england
73 unit_models/_Units/EN_Lmail_Hmail/textures/EN_Lmail_Hmail_englanw.texture
72 unit_models/_Units/EN_Lmail_Hmail/textures/EN_kmail_kmail_normal.texture
46 unit_sprites/england_Feudal_Knights_sprite.spr

где, по аналогии с первой частью, есть путь к файлу и есть имя файла. Сами имена файлов .texture делятся на 2 вида: "стандарт" и "нормаль". Первый - это обычный вид текстуры, отвечающей за цвет, раскраску юнита. Второй - это вид текстуры, отвечающей за "рельефность" доспехов - различные гербы на нагрудных пластинах, выпуклость заклепок и т.д.


часть "в"

Абсолютна идентична части "б", с той лишь разницей, что не прописываются спрайты. Так же начинается с общего числа фракций, так же делится на блоки (блоки аттачментов), так же прописывается путь к файлу и имя файла, и точно так же текстуры двух видов - "стандарт" (_diff) и нормаль" (_norm). Игнорирование этой части в правках мода приведет лишь к тому, что юниты буду выглядеть "плоско" , без нужного объема.
15
7 england
60 unit_models/AttachmentSets/Final Heater_england_diff.texture
60 unit_models/AttachmentSets/Final Heater_england_norm.texture 0

Обратите внимание - каждый блок аттачей заканчивается на 0 и это важное правило!


часть "г"

В этой части прописывается к каому типу принадлежит юнит - пеший или всадник.
Если юнит пеший, обязательно прописывается 4 None, если же верхом, то прописывается на чем передвигается юнит - слон, конь, верблюд, etc...
Также в этой части, в зависмости от класса юнита (стрелок, мечник, копейщик...), прописываются его основное и вторичное оружие. Если оружие только одно, то второе не пишется.
Примеры:
4 None
19 MTW2_Fast_Swordsman 0
2
18 MTW2_Sword_Primary
14 fs_test_shield 0
16 -0.090000004 0 0 -0.34999999 0.80000001 0.6000000
2


4 None
20 MTW2_Halberd_Primary
22 MTW2_Halberd_Secondary 1
17 MTW2_Pike_primary 1
17 MTW2_Pike_primary
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002


5 Horse
13 MTW2_HR_Lance
13 MTW2_HR_Sword 2
21 MTW2_HR_Lance_Primary
14 fs_test_shield 2
18 MTW2_Sword_Primary
14 fs_test_shield
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002

Из приведенных примеров видно, что основное оружие прописывается как Primary, вторичное, как Secondary. Вид оружия может быть записан как Lance (копье конного юнита), Sword (меч), Bow, Mass_Bowman, Bowman (лук), Crossbow (арбалет), Pike (пика)... Вид скакуна - Horse (конь), Camel (верблюд), Elephant (слон), Pony (пони)...


Надеюсь, данный материал поможет избежать нервного тика, когда впервые открывается файл battle_models.modeldb :0142:

Успехов в модостроении!
     Gwrtheyrn Gwrthneu
    • Imperial
    Imperial
    Форумчанин

    Дата: 30 марта 2015, 15:27

    Аттила

    121 - качество модели (?? - не уверен, но такую версию слышал)

    Слышал, что цифра показывает отдаление от камеры на котором отображается эта модель. Если камера отдаляется от отряда, то начинает использоваться модель с меньшим количеством полигонов = меньше грузит комп.
       Аттила
      • Imperial
      Imperial
      Форумчанин

      Дата: 30 марта 2015, 17:06

      Gwrtheyrn Gwrthneu, то бишь цифра означает количество полигонов? В некоторых модах видел только одно значение, что-то типа 165 000... Получается, при таком значении комп грузится постоянно? Даже когда и не нужно?
         Gwrtheyrn Gwrthneu
        • Imperial
        Imperial
        Форумчанин

        Дата: 30 марта 2015, 19:51

        Аттила

        то бишь цифра означает количество полигонов?
        как я понял там расстояние от юнита до камеры. 121 - ближе всего, 900 - немного дальше, 2500 - еще дальше, 6400 - далеко, а если совсем отдалить камеру, идет замена моделей на спрайты. Если 165000, ИМХО если отдалить камеру на 165000(не знаю как назвать единицы измерения расстаяния), то игрок все еще будет видеть модели, если дальше чем 165000, то уже спрайты.
           fritz_sh
          • Imperial
          Imperial
          Форумчанин

          Дата: 31 мая 2015, 10:52

          Подскажите, где можно узнать список допустимых значений для отмеченной строки?

          5 Horse
          23 MTW2_HR_Crossbow_String
          18 MTW2_HR_Non_Shield 1
          24 MTW2_HR_Crossbow_Primary 1
          18 MTW2_Sword_Primary
          16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002
             Gwrtheyrn Gwrthneu
            • Imperial
            Imperial
            Форумчанин

            Дата: 31 мая 2015, 15:23

            fritz_sh

            Подскажите, где можно узнать список допустимых значений для отмеченной строки?

            В самом battle_models.modeldb. В виде списка это в Ultimate Docudemons не публиковали, а где еще может быть - не знаю.
               fritz_sh
              • Imperial
              Imperial
              Форумчанин

              Дата: 01 июня 2015, 08:08

              Для просмотра ссылки Зарегистрируйтесь
                 Аттила
                • Imperial
                Imperial
                Форумчанин

                Дата: 01 июня 2015, 09:22

                fritz_sh

                зачем вот такие цифры "0" , "1" , "2" ставятся после класса, щита, оружия, и что они значат?

                Предположу, что количество исползуемого основного и вторичного снаряжения.
                   fritz_sh
                  • Imperial
                  Imperial
                  Форумчанин

                  Дата: 01 июня 2015, 11:17

                  А как именно понимать куда их ставить между какими строчками?

                  И еще подскажите пожалуйста, строки такого вида являются нормальными?

                  Цитата

                  1
                  4 None
                  20 MTW2_Halberd_Primary
                  22 MTW2_Halberd_Secondary 2
                  17 MTW2_Pike_primary
                  14 fs_test_shield 1
                  14 fs_test_shield

                  16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002


                  Или повторная строка тут лишняя?
                     Аттила
                    • Imperial
                    Imperial
                    Форумчанин

                    Дата: 01 июня 2015, 12:00

                    fritz_sh
                    Повторная явно лишняя.

                    Самый верный способ понять - поэкспериментировать (кстати, можете потом и гайд про эти строчки написать :)) Можно поступить проще - посмотреть у аналогичного (неглючного) юнита как прописано, проанализировать и применить у своего так же.
                      • 2 Страниц
                      • 1
                      • 2
                      Воспользуйтесь одной из соц-сетей для входа
                      РегистрацияВход на форум 
                      2022 «Империал» · Условия · Ответственность · Визитка · Сотрудничество · 25 мая 2022, 01:15 · Счётчики