описание, структура, связи
Автор: Аттила
Дата: 16 окт 2014, 13:43 · Просмотров: 6 170
Дата: 16 окт 2014, 13:43 · Просмотров: 6 170
Файл battle_models.modeldb по сути достаточно прост, но требует повышенной внимательности при работе с ним - малейшая неточность в знаке, пропущенный символ - и, как следствие, жесткий вылет на рабочий стол или зависание игры при старте. Для того, чтобы избежать подобного и прежде чем работать с файлом, нужно сделать для себя две важные вещи:
1. Составить хотя бы примерный "план работ" (Что собираемся менять/добавить/убрать).
2. Каждое изменение фиксировать запуском игры и проверять таким образом правильность исправлений и изменений.
Естественно, при работе с этим файлом, параллельные работы с другими файлами крайне не рекомендуются, так как в итоге можно не выявить ошибку.
Рассмотрим некоторые фрагменты файла, изучив которые, в дальнейшем можно будет достаточно оперативно вносить любые изменения в данный файл.
1. Начало файла
Начало - это, по факту, всего одна первая строка, тем не менее она достаточно важна, и, если на неё не обращать внимание при редактировании battle_models.modeldb, гарантировано будет вылет. Примерно так первая строка может выглядеть в разных модах.
Как уже неоднократно отмечалось, и это тоже достаточно важно, все строки в файле battle_models.modeldb начинаются с какого-либо числа, и первая строка во всех тех модах, которые я играл, начинается с 22. Объяснение этому достаточно простое - в двух словах serialization::archive 22 символа. Отсюда простой вывод - все числа в этой и последующих строках указывают на длину строки в символах. И зачастую вылеты бывают связаны именно с несоответствием количества символов и числа.
Второй важный момент первой строки - это запись об общем количестве моделей (не юнитов!!!), используемых в игре. В приведенных мною примерах есть два значения 1230 и 1158, и именно эти значения говорят, сколько моделей прописано в игре. Разумеется, если выставленное значение будет неверным, то будет вылет или зависание игры. Правильное значение - это сумма всех моделей юнитов до апгрейда, после апгрейда, а также моделей лошадей, пони, верблюдов, слонов.... Следует отметить, что общую сумму нужно искать самому только в случае, если мод делается абсолютно с нуля, когда файл battle_models.modeldb пуст и каких-либо исходников попросту нет. В подавляющем же большинстве модов значение выставляется вычитанием или прибавлением к уже существующему числу некоторых цифр, в зависимости от выполняемых задач. Стоит обратить внимание на такой момент - если Вы попросту добавляете какой-либо фракции уже существующего в моде юнита, то значение не будет изменяться, поскольку данная модель уже включена в файл и суммирована модостроителями. Если же Вы переносите юнита из одного мода в другой, в котором изначально его не было - то значение увеличится на то количество моделей, которое Вы добавите. А определить количество добавляемых моделей можно с помощью файла export_descr_unit.txt, в строке armour_ug_models нужного юнита как раз они и прописываются.
2. Основные записи о моделях.
Записи о моделях юнитов можно условно разделить на 4 части:
Записи о моделях "транспортных средств" проще: часть с путями для .mesh-файлов и часть с путями для .texture-файлов.
Все записи однотипны и думаю разбор одной записи "по частям" вполне поможет понять принцип работы с файлом.
Итак, часть "а"
В ней, как уже говорилось, прописываются пути к файлам .mesh моделей юнитов, на которые собственно "натягивается" текстура. Как правило, эти файлы лежать по пути Games\Total War\mods\ModNameTW \data\unit_models\ и далее по под-папкам фракций, уникальных юнитов, и т.д., в зависимости от предпочтений мододела. Либо для нее может быть создана отдельная папка [mesh]. В любом случае пут должен быть прописан правильно для каждого .mesh-файла, начиная с папки unit_models
где:
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
где, по аналогии с первой частью, есть путь к файлу и есть имя файла. Сами имена файлов .texture делятся на 2 вида: "стандарт" и "нормаль". Первый - это обычный вид текстуры, отвечающей за цвет, раскраску юнита. Второй - это вид текстуры, отвечающей за "рельефность" доспехов - различные гербы на нагрудных пластинах, выпуклость заклепок и т.д.
часть "в"
Абсолютна идентична части "б", с той лишь разницей, что не прописываются спрайты. Так же начинается с общего числа фракций, так же делится на блоки (блоки аттачментов), так же прописывается путь к файлу и имя файла, и точно так же текстуры двух видов - "стандарт" (_diff) и нормаль" (_norm). Игнорирование этой части в правках мода приведет лишь к тому, что юниты буду выглядеть "плоско" , без нужного объема.
Обратите внимание - каждый блок аттачей заканчивается на 0 и это важное правило!
часть "г"
В этой части прописывается к каому типу принадлежит юнит - пеший или всадник.
Если юнит пеший, обязательно прописывается 4 None, если же верхом, то прописывается на чем передвигается юнит - слон, конь, верблюд, etc...
Также в этой части, в зависмости от класса юнита (стрелок, мечник, копейщик...), прописываются его основное и вторичное оружие. Если оружие только одно, то второе не пишется.
Примеры:
Из приведенных примеров видно, что основное оружие прописывается как Primary, вторичное, как Secondary. Вид оружия может быть записан как Lance (копье конного юнита), Sword (меч), Bow, Mass_Bowman, Bowman (лук), Crossbow (арбалет), Pike (пика)... Вид скакуна - Horse (конь), Camel (верблюд), Elephant (слон), Pony (пони)...
Надеюсь, данный материал поможет избежать нервного тика, когда впервые открывается файл 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
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
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
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.60000002
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.60000002
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
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
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
Успехов в модостроении!