Теория модостроения
Материал из Mod Wiki.
Версия 21:38, 8 июня 2007 (править) Empro (Обсуждение | вклад) ← К предыдущему изменению |
Версия 14:14, 14 июня 2007 (править) (отменить) BAC9-FLCL (Обсуждение | вклад) (Отформатировал, добавил внешние ссылки, исправил некоторые ошибки) К следующему изменению → |
||
Строка 1: | Строка 1: | ||
- | + | ==О модифицировании игры== | |
Выход долгожданной игры ознаменовался скандалами и возмущением общественности большим количеством убранного из игры. | Выход долгожданной игры ознаменовался скандалами и возмущением общественности большим количеством убранного из игры. | ||
- | На фоне вырезанного контента, огромного количества несоответствий игры обещаниям разработчиков стали формироваться моддерские команды. | ||
- | К счастью, разработчики оставили возможность спокойного моддинга. Благодаря распаковщику игровых архивов мы получили полный доступ к ресурсам игры. Сверх того, разработчики оставили в финальном билде 2947 (и билдах после него) высший приоритет распакованной папки gamedata. | ||
- | Итак, что же мы имеем? | ||
- | Мультимедийный контент. | ||
- | Звуки, видео и текстуры. | ||
- | Звуки в игре записаны в формате ogg. Хочу заметить, что OGG Vorbis является признанным игровым форматом звука. | ||
- | Проблем со звуком вообщем-то не возникает. Если Вы пользуетесь редактором звука, который не поддерживает OGG Vorbis, для Вас существует множество платных и бесплатных конвертеров. | ||
- | Видео в игре также в формат Vorbis, расширения видео файлов - OGM. Для просмотра видео рекомендую Media Player Classic и CCCP Codec Pack ( http://cccp-project.net/ ). | ||
- | Текстуры в игре имеют формат DDS (Direct Draw Surface). Для их редактирования рекомендую Adobe Photoshop CS 8.0 и NVidia Developer's Photoshop DDS Plugins ( http://developer.nvidia.com/object/photosh...ds_plugins.html ). | ||
- | При этом учтите следующее: | ||
- | - Вы конечно можете использовать сторонние конверторы. К таким относится Lister Total Commander'а, который умеет сохранять и просматривать DDS текстуры в других форматах. | ||
- | Речь идёт о расширенной сборке Total Commander'a (платный файловый менеджер Кристиана Гислера) версии 6.55. Приобрести можно по адресу http://www.ghisler.com/ . | ||
- | - Также Вы можете воспользоваться специальными DDS конвертером. | ||
- | Но при этом после конвертации может исчезнуть прозрачность! А это очень важно в игре... | ||
- | Поэтому настоятельно рекомендую использовать Photoshop CS 8.0 с плагинами. | ||
- | Внимание! При сохранении не забудьте отметить пункт "Alpha Channels" и в открывшемся окне (после нажатия на кнопку "Сохранить"), выберите режим "DXT5 ARGB 8 bpp | interpolated alpha". | ||
- | Также, в папке с игрой есть дополнительные текстуры с допиской в конце имени файла "bump". Бампы текстур используются для придание модели некоторой объёмности, которую ещё называют "псевдорельефностью". | ||
- | Бампы текстур используются только при игре на втором рендере. | ||
- | Следующий немаловажный компонент игры - OGF модели. | ||
- | Модели расположены в папке meshes. Они содержат в себе информацию о материале, анимации и саму модель предмета. | ||
- | Изменить текстуру модели реально при помощи WinHEX - путь к текстуре в первых строчках файла. | ||
- | Для просмотра моделей незаменимой утилитой является OGF Viewer ( http://www.g3ddev.com/ ) от общепризнанного специалиста batya. | ||
- | На текущий момент возможен только просмотр и конвертирование моделей в формат obj. | ||
- | При использовании OGF Viewer необходимо задать путь к текстурам в конфигурационном файле, который лежит в папке с программой. | ||
- | Следующим компонентом игры являются игровые уровни. Уровни можно разделить на МП уровни и уровни сингла. | ||
- | МП уровни отличаются от уровней сингловой игры отсутствием либо разной структурой и содержанием файлов уровня. К примеру, на мультиплеерных уровнях отсутствует сетка ИИ. | ||
- | Перед релизом бета-версии SDK (Software Development Kit от GSC Game World) я несколько недель тестировал его и сделал несколько печальных выводов. | ||
- | Во-первых, при помощи SDK невозможно не только редактировать, но и даже просматривать уже откомпилированные уровни. | ||
- | Дело в том, что SDK требует исходников уровней. К тому же, пора прекращать мечтать о SDK и выкрикивать: "Дайте мне СДК я вам новое оружие сделаю и движок поменяю!!!". | ||
- | SDK - всего лишь маппер для мультиплеера. Возможно, будет маппер и для сингловой версии игры, но исходников уровней от GSC Game World даже и ждать не стоит. | ||
- | Уровни из сингловой версии игры можно портировать под мультиплеер. | ||
- | Алгоритм действий: | ||
- | скопировать содержание папки уровня в новую папку с именем типа mp_yantar. | ||
- | Удалить файлы level.game, level.ai, level.som. Скопировать level.game из любой мультиплеерной карты и вставить в переделываемую карту. | ||
- | Открыть конфигурационный файл config\mp\maplist.ltx и добавить карту в список. | ||
- | Скрипты. | ||
- | В игре широко используются скрипты. Многие из них - тестовые и являют собой мусор, но никогда нельзя точно знать, где используется скрипт. | ||
- | В скриптах используется язык LUA. Язык не очень сложный, с помощью него можно многое делать, в том числе и спаунить (от англ. "spawn" - размещать на карте) объекты. | ||
- | К тому же, скрипты можно вызывать в spawn-файле, о нём подробнее. | ||
- | Другая, немаловажная часть игры - конфигурационные файлы. Открываются обычным "Блокнотом", представлют собой набор параметров и их значений. | ||
- | Про них подробнее. В игре существуют конфигурационные файлы существ, мультиплеера, погоды, оружия, объектов, геймплея, моделей, конфигурационные скрипты и конфигурация интерфейса. | ||
- | Также существует множество других конфигурационных файлов. | ||
- | О некоторых из них подробнее. | ||
- | Конфигурации существ - одним из самых важных конфигурационных файлов является actor.ltx. В нём заданы параметры актора - главного героя игры. | ||
- | На его примере рассмотрим структуру конфигурационного файла. | ||
- | [actor] - пример entity. Конфигурацию актора вызывают при помощи названия entity. В данном случае - actor. | ||
- | В других конфигурационных файлах мы можем найти пример ссылки на entity. Например: | ||
- | [burer_arena]:m_burer_e | ||
- | В данном случае существо "burer_arena" ссылается на существо "m_burer_e" и является его прототипом. | ||
- | Также могут быть и ссылки на entity, обозначающей набор параметров. Например: | ||
- | damage = m_burer_damage | ||
- | Комментарии в ltx файлах начинаются с символа ";". | ||
- | Также очень интересна система так называемых инклудов. | ||
- | Инклуд обозначается строкой "#include "имя_файла.ltx"" | ||
- | Инклуды означают, что в файл, в котором написана вышеуказанная строка, вставляется содержание файла, указанного как аргумент к функции #include. | ||
- | Получается так, что конфигурационные файлы монстров (к примеру) объединяются в файле monsters.ltx, файлы сталкеров - в stalkers.ltx. А файлы monsters.ltx, stalkers.ltx и все остальные файлы объединяются в файле system.ltx, в котором прописано около 20 инклудов. | ||
- | Таким образом, всё содержание ltx-файлов объединено в system.ltx. | ||
- | Помните - когда создаёте новый конфигурационный файл - не забудьте вставить его методом инклуда в общий конфигурационный список в system.ltx. | ||
- | Последнее, о чём пойдёт речь - папка spawns. В ней расположен файл all.spawn. В этом файле обозначены почти все динамические объекты, которые содержатся в игровой Зоне. Это и монстры и сталкеры, это и приёмник "Горизонт" на столе у торговца и ящик рядом с блокпостом. | ||
- | Формат спаун-файла долго разбирался специалистами и благодаря товарищу Zeed'у разобран и им же была написана специальная программа ( http://www.gameru.net/forum/index.php?act=...135#entry492221 ) для спауна динамических объектов. Примечание: если почитать тему дальше, есть ссылки на более новые версии программы с важными исправлениями. | ||
- | Кроме файлов спауна в директории gamedata также присутствует папка с шейдерами, папка с анимациями камеры, папка с некоторыми файлами A-life и несколько файлов в формате xr. | ||
- | В файле gamemtl.xr лежат настройки материалов, текстур и hit_fx эффектов. | ||
- | В режиме HEX файл более или менее читаем. | ||
- | И последнее. | ||
- | Не пробуйте искать где указаны классы типа AI_CROW. | ||
- | Все классы существ находятся в xrGame.dll и попытки извлечь их или изменить бессмыслены. | ||
- | + | На фоне вырезанного контента и огромного количества несоответствий игры обещаниям разработчиков стали формироваться моддерские команды. К счастью, разработчики оставили возможность простого модифицирования игры. Благодаря [[Распаковщик архивов|распаковщику игровых архивов]] мы получили полный доступ к ресурсам игры. Сверх того, разработчики оставили в финальном билде 2947 (и билдах после него) высший приоритет распакованной папки gamedata. | |
- | Выход долгожданной игры ознаменовался скандалами и возмущением общественности большим количеством убранного из игры. | ||
- | На фоне вырезанного контента, огромного количества несоответствий игры обещаниям разработчиков стали формироваться моддерские команды. | ||
- | К счастью, разработчики оставили возможность спокойного моддинга. Благодаря распаковщику игровых архивов мы получили полный доступ к ресурсам игры. Сверх того, разработчики оставили в финальном билде 2947 (и билдах после него) высший приоритет распакованной папки gamedata. | ||
Итак, что же мы имеем? | Итак, что же мы имеем? | ||
- | + | ||
- | Звуки | + | ==Звуки== |
+ | |||
Звуки в игре записаны в формате ogg. Хочу заметить, что OGG Vorbis является признанным игровым форматом звука. | Звуки в игре записаны в формате ogg. Хочу заметить, что OGG Vorbis является признанным игровым форматом звука. | ||
+ | |||
Проблем со звуком вообщем-то не возникает. Если Вы пользуетесь редактором звука, который не поддерживает OGG Vorbis, для Вас существует множество платных и бесплатных конвертеров. | Проблем со звуком вообщем-то не возникает. Если Вы пользуетесь редактором звука, который не поддерживает OGG Vorbis, для Вас существует множество платных и бесплатных конвертеров. | ||
+ | |||
Видео в игре также в формат Vorbis, расширения видео файлов - OGM. Для просмотра видео рекомендую Media Player Classic и CCCP Codec Pack ( http://cccp-project.net/ ). | Видео в игре также в формат Vorbis, расширения видео файлов - OGM. Для просмотра видео рекомендую Media Player Classic и CCCP Codec Pack ( http://cccp-project.net/ ). | ||
- | Текстуры в игре имеют формат DDS (Direct Draw Surface). Для их редактирования рекомендую Adobe Photoshop CS 8.0 и NVidia Developer's Photoshop DDS Plugins ( http://developer.nvidia.com/object/ | + | |
+ | ==Текстуры== | ||
+ | |||
+ | Текстуры в игре имеют формат DDS (Direct Draw Surface). Для их редактирования рекомендую Adobe Photoshop CS 8.0 и NVidia Developer's Photoshop DDS Plugins (скачать его можно [http://developer.nvidia.com/object/photoshop_dds_plugins.html здесь]). | ||
+ | |||
При этом учтите следующее: | При этом учтите следующее: | ||
- | + | ||
- | + | * Вы можете использовать сторонние конвертеры. К таким относится Lister Total Commander, который умеет сохранять и просматривать DDS текстуры в других форматах. Это расширенная сборка Total Commander'a (платный файловый менеджер Кристиана Гислера) версии 6.55. Приобрести его можно по адресу [http://www.ghisler.com/ http://www.ghisler.com/] . | |
- | + | ||
- | Но при | + | * Также, Вы можете воспользоваться специальными DDS конвертером. Но при конвертации может исчезнуть альфа-канал текстуры, он очень важен для игры. Поэтому настоятельно рекомендую использовать Photoshop CS 8.0 с плагинами. |
- | Поэтому настоятельно рекомендую использовать Photoshop CS 8.0 с плагинами. | + | |
- | Внимание! | + | Внимание! После работы в Photoshop над тестурами, при сохранении не забудьте отметить пункт "Alpha Channels" и в открывшемся окне (после нажатия на кнопку "Сохранить"), выберите режим "DXT5 ARGB 8 bpp | interpolated alpha". |
- | Также, в папке с игрой есть дополнительные текстуры с | + | |
- | + | Также, в папке с игрой есть дополнительные текстуры с приписанным в конце имени файла словом "bump". Это бамп-карты текстур, используемые для придания модели некоторой объемности, которую ещё называют "псевдорельефностью". | |
+ | |||
+ | Бамп-карты текстур используются только при игре на втором рендере (динамическое освещение, то есть DirectX9-рендер. | ||
+ | |||
+ | ==Модели== | ||
+ | |||
Следующий немаловажный компонент игры - OGF модели. | Следующий немаловажный компонент игры - OGF модели. | ||
- | Модели расположены в папке meshes. Они содержат в себе информацию о материале, анимации и саму модель предмета. | + | |
- | Изменить текстуру модели реально при помощи WinHEX - путь к текстуре в первых строчках файла. | + | Модели расположены в папке meshes. |
- | Для просмотра моделей незаменимой утилитой является OGF Viewer ( http://www.g3ddev.com/ ) от | + | |
- | На | + | Они содержат в себе информацию о материале, анимации и саму модель предмета. |
+ | Изменить текстуру модели реально при помощи WinHEX - путь к текстуре находится в первых строчках файла. | ||
+ | |||
+ | Для просмотра моделей незаменимой утилитой является OGF Viewer ([http://www.g3ddev.com/ сайт]) от batya. | ||
+ | На данный момент возможен только просмотр и конвертирование моделей в формат obj. | ||
+ | |||
При использовании OGF Viewer необходимо задать путь к текстурам в конфигурационном файле, который лежит в папке с программой. | При использовании OGF Viewer необходимо задать путь к текстурам в конфигурационном файле, который лежит в папке с программой. | ||
- | Следующим компонентом игры являются игровые уровни. Уровни можно разделить на | + | |
- | + | ==Уровни== | |
+ | |||
+ | Следующим компонентом игры являются игровые уровни. Уровни можно разделить на мультиплеерные и сингловые. | ||
+ | |||
+ | MP-уровни отличаются от уровней одиночной игры отсутствием некоторых компонентов и несколько иной структурой/набором файлов. Например, на мультиплеерных уровнях отсутствует координатная сетка для A-Life. | ||
+ | |||
Перед релизом бета-версии SDK (Software Development Kit от GSC Game World) я несколько недель тестировал его и сделал несколько печальных выводов. | Перед релизом бета-версии SDK (Software Development Kit от GSC Game World) я несколько недель тестировал его и сделал несколько печальных выводов. | ||
- | Во-первых, при помощи SDK невозможно не только редактировать, но и даже просматривать уже откомпилированные уровни. | + | |
- | Дело в том, что SDK требует исходников уровней. К тому же, пора прекращать мечтать о SDK и выкрикивать: "Дайте мне СДК я вам новое оружие сделаю и движок поменяю!!!". | + | Во-первых, при помощи MP-SDK невозможно не только редактировать, но и даже просматривать уже откомпилированные уровни. |
- | SDK - всего лишь маппер для мультиплеера. Возможно, будет маппер и для сингловой версии игры, но исходников уровней от GSC Game World даже и ждать не стоит. | + | Дело в том, что MP-SDK требует исходников уровней. К тому же, пора прекращать мечтать о SDK и выкрикивать: "Дайте мне СДК я вам новое оружие сделаю и движок поменяю!!!". MP-SDK - всего лишь маппер для мультиплеера. Возможно, будет маппер и для сингловой версии игры, но исходников уровней от GSC Game World даже и ждать не стоит. |
- | Уровни из сингловой версии игры можно портировать под мультиплеер. | + | |
- | Алгоритм действий: | + | Однако, не стоит забывать, что в сеть была выложена лишь бета-версия этого пакета. Возможно, к появлению релиза добавятся новые функции и инструменты. |
- | + | ||
- | Удалить файлы level.game, level.ai, level.som. Скопировать level.game из любой мультиплеерной карты и вставить в переделываемую карту. | + | Уровни из сингловой версии игры можно портировать под мультиплеер. Алгоритм действий: |
- | Открыть конфигурационный файл config\mp\maplist.ltx и добавить карту в список. | + | |
- | Скрипты | + | * Скопировать содержание папки уровня в новую папку с именем типа mp_yantar. |
- | В игре широко используются скрипты. | + | * Удалить файлы level.game, level.ai, level.som. Скопировать level.game из любой мультиплеерной карты и вставить в переделываемую карту. |
- | В скриптах используется язык | + | * Открыть конфигурационный файл config\mp\maplist.ltx и добавить карту в список. |
- | К тому же, скрипты можно вызывать в spawn-файле, о нём подробнее. | + | |
- | Другая, немаловажная часть игры - конфигурационные файлы. | + | ==Скрипты== |
- | + | ||
+ | В игре широко используются скрипты. Некоторые из них - тестовые и являют собой оставленный разработчиками мусор, но никогда нельзя точно знать, где используется скрипт. | ||
+ | |||
+ | В скриптах используется язык Lua. Язык не очень сложный, с помощью него можно многое делать, в том числе и спаунить (от англ. "spawn" - размещать на карте) объекты. | ||
+ | |||
+ | К тому же, скрипты можно вызывать в spawn-файле, о нём подробнее будет рассказано ниже. | ||
+ | |||
+ | ==Конфиги== | ||
+ | |||
+ | Другая, немаловажная часть игры - конфигурационные файлы. Они открываются обычным "Блокнотом" и представляют собой набор параметров и их значений. | ||
+ | |||
+ | В игре существуют конфигурационные файлы существ, мультиплеера, погоды, оружия, объектов, геймплея, моделей, конфигурационные скрипты и конфигурация интерфейса. | ||
+ | |||
Также существует множество других конфигурационных файлов. | Также существует множество других конфигурационных файлов. | ||
+ | |||
О некоторых из них подробнее. | О некоторых из них подробнее. | ||
- | Конфигурации существ - одним из самых важных конфигурационных файлов является actor.ltx. В нём заданы параметры актора - главного героя игры. | + | Конфигурации существ - одним из самых важных конфигурационных файлов является actor.ltx. В нём заданы параметры актора - т.е. главного героя игры. |
+ | |||
На его примере рассмотрим структуру конфигурационного файла. | На его примере рассмотрим структуру конфигурационного файла. | ||
+ | |||
[actor] - пример entity. Конфигурацию актора вызывают при помощи названия entity. В данном случае - actor. | [actor] - пример entity. Конфигурацию актора вызывают при помощи названия entity. В данном случае - actor. | ||
- | В других конфигурационных файлах мы можем найти пример ссылки на entity. Например: | + | В других конфигурационных файлах мы можем найти пример ссылки на entity. Например: [burer_arena]:m_burer_e. |
- | [burer_arena]:m_burer_e | + | |
В данном случае существо "burer_arena" ссылается на существо "m_burer_e" и является его прототипом. | В данном случае существо "burer_arena" ссылается на существо "m_burer_e" и является его прототипом. | ||
- | Также могут быть и ссылки на entity, обозначающей набор параметров. Например: | + | Также могут быть и ссылки на entity, обозначающей набор параметров. Например: damage = m_burer_damage. |
- | damage = m_burer_damage | + | |
- | Комментарии в ltx файлах начинаются с символа ";". | + | Комментарии в ltx файлах начинаются с символа ";". Все, что расположено за этим знаком, игрой не учитывается. |
- | Также очень интересна система так называемых инклудов. | + | |
+ | Также очень интересна система так называемых инклудов (включений). | ||
+ | |||
Инклуд обозначается строкой "#include "имя_файла.ltx"" | Инклуд обозначается строкой "#include "имя_файла.ltx"" | ||
+ | |||
Инклуды означают, что в файл, в котором написана вышеуказанная строка, вставляется содержание файла, указанного как аргумент к функции #include. | Инклуды означают, что в файл, в котором написана вышеуказанная строка, вставляется содержание файла, указанного как аргумент к функции #include. | ||
- | Получается так, что конфигурационные файлы монстров (к примеру) объединяются в файле monsters.ltx, файлы сталкеров - в stalkers.ltx. А файлы monsters.ltx, stalkers.ltx и все остальные файлы объединяются в файле system.ltx, в котором прописано около 20 инклудов. | + | |
- | Таким образом, всё содержание ltx-файлов объединено в system.ltx. | + | Получается так, что конфигурационные файлы монстров (к примеру) объединяются в файле monsters.ltx, файлы сталкеров - в stalkers.ltx. А файлы monsters.ltx, stalkers.ltx и все остальные файлы объединяются в файле system.ltx, в котором прописано около 20 инклудов. Таким образом, всё содержание ltx-файлов объединено в system.ltx. |
+ | |||
Помните - когда создаёте новый конфигурационный файл - не забудьте вставить его методом инклуда в общий конфигурационный список в system.ltx. | Помните - когда создаёте новый конфигурационный файл - не забудьте вставить его методом инклуда в общий конфигурационный список в system.ltx. | ||
- | Последнее, о чём пойдёт речь - папка spawns. В ней расположен файл all.spawn. В этом файле обозначены почти все динамические объекты, которые содержатся в игровой Зоне. Это | + | |
- | Формат спаун-файла долго разбирался специалистами и благодаря товарищу Zeed'у разобран | + | ==Спавн-файл== |
+ | |||
+ | Последнее, о чём пойдёт речь - папка spawns. | ||
+ | |||
+ | В ней расположен файл all.spawn. В этом файле обозначены почти все динамические объекты, которые содержатся в игровой Зоне. Это как монстры и сталкеры, так и приёмник "Горизонт" на столе у торговца, и даже ящик рядом с блокпостом. | ||
+ | |||
+ | Формат спаун-файла долго разбирался специалистами и благодаря товарищу Zeed'у разобран. И им же была написана специальная программа xrSpawner для спауна динамических объектов. [http://ifolder.ru/2334438 Здесь] можно взять последнюю на данный момент версию. | ||
+ | |||
+ | ==Дополнительно== | ||
+ | |||
Кроме файлов спауна в директории gamedata также присутствует папка с шейдерами, папка с анимациями камеры, папка с некоторыми файлами A-life и несколько файлов в формате xr. | Кроме файлов спауна в директории gamedata также присутствует папка с шейдерами, папка с анимациями камеры, папка с некоторыми файлами A-life и несколько файлов в формате xr. | ||
+ | |||
В файле gamemtl.xr лежат настройки материалов, текстур и hit_fx эффектов. | В файле gamemtl.xr лежат настройки материалов, текстур и hit_fx эффектов. | ||
В режиме HEX файл более или менее читаем. | В режиме HEX файл более или менее читаем. | ||
+ | |||
И последнее. | И последнее. | ||
Не пробуйте искать где указаны классы типа AI_CROW. | Не пробуйте искать где указаны классы типа AI_CROW. | ||
Строка 140: | Строка 123: | ||
[[Участник:Empro|Empro]] | [[Участник:Empro|Empro]] | ||
- | |||
- | |||
- | |||
[[Категория:Статьи участников]] | [[Категория:Статьи участников]] |
Версия 14:14, 14 июня 2007
Содержание |
О модифицировании игры
Выход долгожданной игры ознаменовался скандалами и возмущением общественности большим количеством убранного из игры.
На фоне вырезанного контента и огромного количества несоответствий игры обещаниям разработчиков стали формироваться моддерские команды. К счастью, разработчики оставили возможность простого модифицирования игры. Благодаря распаковщику игровых архивов мы получили полный доступ к ресурсам игры. Сверх того, разработчики оставили в финальном билде 2947 (и билдах после него) высший приоритет распакованной папки gamedata.
Итак, что же мы имеем?
Звуки
Звуки в игре записаны в формате ogg. Хочу заметить, что OGG Vorbis является признанным игровым форматом звука.
Проблем со звуком вообщем-то не возникает. Если Вы пользуетесь редактором звука, который не поддерживает OGG Vorbis, для Вас существует множество платных и бесплатных конвертеров.
Видео в игре также в формат Vorbis, расширения видео файлов - OGM. Для просмотра видео рекомендую Media Player Classic и CCCP Codec Pack ( http://cccp-project.net/ ).
Текстуры
Текстуры в игре имеют формат DDS (Direct Draw Surface). Для их редактирования рекомендую Adobe Photoshop CS 8.0 и NVidia Developer's Photoshop DDS Plugins (скачать его можно здесь).
При этом учтите следующее:
- Вы можете использовать сторонние конвертеры. К таким относится Lister Total Commander, который умеет сохранять и просматривать DDS текстуры в других форматах. Это расширенная сборка Total Commander'a (платный файловый менеджер Кристиана Гислера) версии 6.55. Приобрести его можно по адресу http://www.ghisler.com/ .
- Также, Вы можете воспользоваться специальными DDS конвертером. Но при конвертации может исчезнуть альфа-канал текстуры, он очень важен для игры. Поэтому настоятельно рекомендую использовать Photoshop CS 8.0 с плагинами.
Внимание! После работы в Photoshop над тестурами, при сохранении не забудьте отметить пункт "Alpha Channels" и в открывшемся окне (после нажатия на кнопку "Сохранить"), выберите режим "DXT5 ARGB 8 bpp | interpolated alpha".
Также, в папке с игрой есть дополнительные текстуры с приписанным в конце имени файла словом "bump". Это бамп-карты текстур, используемые для придания модели некоторой объемности, которую ещё называют "псевдорельефностью".
Бамп-карты текстур используются только при игре на втором рендере (динамическое освещение, то есть DirectX9-рендер.
Модели
Следующий немаловажный компонент игры - OGF модели.
Модели расположены в папке meshes.
Они содержат в себе информацию о материале, анимации и саму модель предмета. Изменить текстуру модели реально при помощи WinHEX - путь к текстуре находится в первых строчках файла.
Для просмотра моделей незаменимой утилитой является OGF Viewer (сайт) от batya. На данный момент возможен только просмотр и конвертирование моделей в формат obj.
При использовании OGF Viewer необходимо задать путь к текстурам в конфигурационном файле, который лежит в папке с программой.
Уровни
Следующим компонентом игры являются игровые уровни. Уровни можно разделить на мультиплеерные и сингловые.
MP-уровни отличаются от уровней одиночной игры отсутствием некоторых компонентов и несколько иной структурой/набором файлов. Например, на мультиплеерных уровнях отсутствует координатная сетка для A-Life.
Перед релизом бета-версии SDK (Software Development Kit от GSC Game World) я несколько недель тестировал его и сделал несколько печальных выводов.
Во-первых, при помощи MP-SDK невозможно не только редактировать, но и даже просматривать уже откомпилированные уровни. Дело в том, что MP-SDK требует исходников уровней. К тому же, пора прекращать мечтать о SDK и выкрикивать: "Дайте мне СДК я вам новое оружие сделаю и движок поменяю!!!". MP-SDK - всего лишь маппер для мультиплеера. Возможно, будет маппер и для сингловой версии игры, но исходников уровней от GSC Game World даже и ждать не стоит.
Однако, не стоит забывать, что в сеть была выложена лишь бета-версия этого пакета. Возможно, к появлению релиза добавятся новые функции и инструменты.
Уровни из сингловой версии игры можно портировать под мультиплеер. Алгоритм действий:
- Скопировать содержание папки уровня в новую папку с именем типа mp_yantar.
- Удалить файлы level.game, level.ai, level.som. Скопировать level.game из любой мультиплеерной карты и вставить в переделываемую карту.
- Открыть конфигурационный файл config\mp\maplist.ltx и добавить карту в список.
Скрипты
В игре широко используются скрипты. Некоторые из них - тестовые и являют собой оставленный разработчиками мусор, но никогда нельзя точно знать, где используется скрипт.
В скриптах используется язык Lua. Язык не очень сложный, с помощью него можно многое делать, в том числе и спаунить (от англ. "spawn" - размещать на карте) объекты.
К тому же, скрипты можно вызывать в spawn-файле, о нём подробнее будет рассказано ниже.
Конфиги
Другая, немаловажная часть игры - конфигурационные файлы. Они открываются обычным "Блокнотом" и представляют собой набор параметров и их значений.
В игре существуют конфигурационные файлы существ, мультиплеера, погоды, оружия, объектов, геймплея, моделей, конфигурационные скрипты и конфигурация интерфейса.
Также существует множество других конфигурационных файлов.
О некоторых из них подробнее. Конфигурации существ - одним из самых важных конфигурационных файлов является actor.ltx. В нём заданы параметры актора - т.е. главного героя игры.
На его примере рассмотрим структуру конфигурационного файла.
[actor] - пример entity. Конфигурацию актора вызывают при помощи названия entity. В данном случае - actor. В других конфигурационных файлах мы можем найти пример ссылки на entity. Например: [burer_arena]:m_burer_e.
В данном случае существо "burer_arena" ссылается на существо "m_burer_e" и является его прототипом. Также могут быть и ссылки на entity, обозначающей набор параметров. Например: damage = m_burer_damage.
Комментарии в ltx файлах начинаются с символа ";". Все, что расположено за этим знаком, игрой не учитывается.
Также очень интересна система так называемых инклудов (включений).
Инклуд обозначается строкой "#include "имя_файла.ltx""
Инклуды означают, что в файл, в котором написана вышеуказанная строка, вставляется содержание файла, указанного как аргумент к функции #include.
Получается так, что конфигурационные файлы монстров (к примеру) объединяются в файле monsters.ltx, файлы сталкеров - в stalkers.ltx. А файлы monsters.ltx, stalkers.ltx и все остальные файлы объединяются в файле system.ltx, в котором прописано около 20 инклудов. Таким образом, всё содержание ltx-файлов объединено в system.ltx.
Помните - когда создаёте новый конфигурационный файл - не забудьте вставить его методом инклуда в общий конфигурационный список в system.ltx.
Спавн-файл
Последнее, о чём пойдёт речь - папка spawns.
В ней расположен файл all.spawn. В этом файле обозначены почти все динамические объекты, которые содержатся в игровой Зоне. Это как монстры и сталкеры, так и приёмник "Горизонт" на столе у торговца, и даже ящик рядом с блокпостом.
Формат спаун-файла долго разбирался специалистами и благодаря товарищу Zeed'у разобран. И им же была написана специальная программа xrSpawner для спауна динамических объектов. Здесь можно взять последнюю на данный момент версию.
Дополнительно
Кроме файлов спауна в директории gamedata также присутствует папка с шейдерами, папка с анимациями камеры, папка с некоторыми файлами A-life и несколько файлов в формате xr.
В файле gamemtl.xr лежат настройки материалов, текстур и hit_fx эффектов. В режиме HEX файл более или менее читаем.
И последнее. Не пробуйте искать где указаны классы типа AI_CROW. Все классы существ находятся в xrGame.dll и попытки извлечь их или изменить бессмыслены.