Всем привет!
Как и обещал, доделал блог для зарегистрированных пользователей. Надеюсь, это сплотит оставшихся поклонников игры, и на свет появится что-то стоящее.
Начну с перепечатки статьи по модификации игры с сайта Absolute Games. Статья очень полезная, но ссылки на ней устарели, так как сайт разработчика игры – закрыт. Думаю, полезно будет освежить статью и ссылки. Присоединяйтесь! Буду ждать Ваши статьи!
Документация на английском языке и примеры модификации
Содержание:
Работа с ресурсами игры: *.ubn-архивы
UBN-файлы являются обычными zip-архивами и могут быть просмотрены, разархивированы, заархивированы и отредактированы WinZip или WinRAR. Каждый .UBN-файл содержит каталоги с файлами. Рассмотрим их подробнее:
zones.ubn — содержит все локации, имеющиеся в игре.
terrain.ubn — текстуры поверхностей в формате *.DDS. Также содержит вместе с некоторыми текстурами файлы типа *.grid_map. Это обычные XML-файлы, которые редактируются любым текстовым редактором. Они определяют, какое место на карте занимает тот или иной объект (размер измеряется в тайлах). Если файл *.grid_map отсутствует, тогда объект становится полностью проходимым для персонажа, т.е. не занимает место на карте.
videos.ubn — видеозаставки из начала и конца игры. Формат — *.bik (для конверсии в сей замечательный и очень распространенный в играх формат, а также из него в другие форматы, используется бесплатная программа RAD Video Tools).
sounds.ubn — звуки и музыка в соответствующих каталогах, в открытом формате *.ogg (Vorbis). Большинство современных программ для работы со звуком конвертируют из *.ogg и в него без проблем.
textures.ubn — текстуры в формате *.DDS, разбиты по группам, как и все остальное (техника, здания, и т.д.).
objects.ubn — 3D-модели в форматах *.gr (в частности - анимация голов персонажей) и в формате *.diff3d (здания, оружие, объекты). О *.diff3d — ниже.
gui.ubn — графический интерфейс. Содержит изображения из меню, глобальных карт, экранов выбора персонажа, и т.д. в формате *.dds.
scripts.ubn — все скрипты в форматах *.py и *.pyc
data.ubn — архив содержит файлы для управления и разметки графического интерфейса! Типы данных: *.lay и *.gui, для них существуют официальные программы от разработчиков, подробнее о них ниже, в соответствующем разделе.
Эти архивы следует разархивировать в корневой каталог игры (/The Fall: Last Days of Gaia/). В этом случае игра будет брать файлы напрямую из одноименных каталогов (...Gaia/gui/...), а не из архивов *.ubn (.../Gaia/gui.ubn). Меняя что-то, можно будет сразу посмотреть на результат. Если напортачили где-то, можем снова разархивировать ubn и заменить поврежденные файлы исходными.
Затем, когда убедились, что МОД полностью готов и работает, компилируем каталоги с измененными файлами обратно в UBN-архив любым архиватором... Вуаля!
Замечание: иногда у игры случаются "заезды", когда вместо измененного файла из директории она берет оригинальный файл из архива. Поэтому мой совет: начиная работу над патчем или модом, разархивируйте все архивы, затем создайте бэкапы всех архивов, а потом оригинальные архивы откройте и сотрите ВСЕ данные внутри. НЕ УДАЛЯЙТЕ сами файлы архивов (*.ubn), иначе игра будет ругаться и не запустится. Теперь любое изменение файлов в директориях будет 100% отражаться в игре.
Все скрипты написаны на Python. Скрипты в основной массе находятся в *.ubn-архивах "zones.ubn" и "scripts.ubn" в виде *.py и *.pyc файлов. Их можно редактировать любым текстовым редактором, специализированные редакторы для него есть на www.python.org. Чтобы понять язык игры, сначала желательно ознакомиться с Python, а затем с руководством по скриптам.
Замечание: Игра работает только со скомпилированными скриптами (*.pyc), которые компилируются из редактируемых *.py. Если каталоги со скриптами разархивированы, то игра автоматически компилирует все файлы *.py, в которые вносились измерения, в *.pyc, и работает с ними. Если же они все заархивированы, то надо вручную скомпилировать в .PYC отредактированные .PY-файлы и положить их в архив, т.к. там автоматического апдейта нет.
Текстуры и прочая графика — формат *.DDS
*.DDS — графический формат, с которым можно работать в графических редакторах типа Adobe Photoshop, имея соответсвующий плагин. Его можно скачать с сайта NVIDIA среди прочих средств работы с DDS (кроме того, там еще есть плагин для 3DSMAX, позволяющий ему работать с DDS-текстурами, что впоследствии может весьма пригодиться при маппинге). Вот специализированный DDS конвертер.
На самом деле часть из DDS-текстур — это PNG пожатые в DDS для удобства работы, но игра может работать и с PNG. К примеру, Вы преобразовали DDS-файл в PNG-файл в Adobe Photoshop, отредактировали PNG-файл. Теперь удалите исходную DDS и поместите на ее место одноименный PNG — все будет работать. Когда мод закончен, все текстуры компилируем в *.DDS.
Замечание: Не все текстуры будут работать с PNG! Для некоторых очень важны mipmaps (последовательность уменьшающихся изображений). С PNG без проблем работают текстуры интерфейса, а вот текстуры поверхностей и объектов (terrain и textures соответственно) могут при использовании обычных PNG глючить!
При преобразовании PNG в DDS есть несколько опций. Для каждого вида текстур в игре следует выбирать свои опции:
Mini-tutorial по добавлению новой текстуры в текстуры поверхности:
Добавление новой базовой текстуры (текстура всей поверхности карты)
Mini-tutorial по маппингу новых моделей
3D модели — форматы *.gr2 и *.diff3d *.GR2 — формат Granny3d http://www.radgametools.com/gramain.htm — редактор 3D-моделей Granny3d довольно дорого стоит, но есть бесплатный просмотрщик, так что в принципе эти модели можно посмотреть... увы, посмотреть и только*.diff3dС этим форматом удобнее работать, т.к. в него умеет конвертировать специальная программа от разработчиков. Просмотреть diff3d можно с помощью специального браузера, а конвертировать модели в формат *.diff3d из *.ase, с помощью утилиты
Замечание: Чтобы текстурировать модели, необходимо экспортировать ASE-файлы из 3DSMAX, текстуру в формате PNG следует использовать в качестве diffuse-материала модели. Перегонка с помощью MD3toASE (для тех, кто работает над моделями в бесплатном MilkShape и экспортирует из в Md3, а оттуда в ASE) не подходит для текстур — маппинг модели сбивается.
Внутриигровой конструктор карт действительно очень прост. Однако импорт "собранных карт" в игру и обеспечение их играбельности — вопрос, требующий подробного руководства. Над этим гайдом я собираюсь работать в ближайшее время, с помощью разработчиков надеюсь получить объяснение всему процессу достаточно простое, чтобы моддингом могли заниматься не слишком продвинутые в программировании люди.
Замечание: LIGHTMAP (карта рельефа) экспортируется всегда чуть меньше, чем она есть на самом деле (1000x1000px = 993x993 метра/тайла).
Замечание: абсолютно вертикальных переходов в рельефе не допускается. Если на карте рельефа контраст черного/белого пиксела, между ними на карте появится наклонный тайл, а не вертикальный. По понятным причинам.
Замечание: 200 метров — фиксированная "граница камеры" — область от края карты, в которой невозможно ни движение персонажей, ни движение камеры! Граница, как сказали сами разработчики, не модифицируется, т.е. она прописана не в PY-скриптах. Поэтому карты размером 400x400 и меньше НЕ БУДУТ ИМЕТЬ ОБЛАСТИ ДЛЯ ДВИЖЕНИЯ! Помните об этом!
Глобальная карта и другие объекты графического интерфейса (меню, всплывающие окна, курсор и др.)
Изображения графического интерфейса находятся в архиве GUI.ubn. Управление им — в архиве DATA.ubn
Доступно 2 программы:
В *.gui прописываются текстуры (файлы текстур) и то, какие координаты картинок на этих текстурах. В частности на картинке с глобальной картой там указано, откуда "брать" все мелкие картинки "зон".
В *.lay наоборот, располагаются эти самые картинки на "layout"-е, который потом игрок и увидит в игре.
Руководство по помещению созданной зоны на глобальную карту
Чтобы приступить к освоению этого раздела, необходима рабочая (играбельная) зона, которая нормально запускается с помощью localinit.py: system.set_app_state(state=global_defines.APP_GAME,map="zones\<zonename>\<zonename>")
Замечание: Все описано здесь немного грубо и не на 100% протестировано.
Теперь выйдите на глобальную карту в игре — там должна появиться иконка Вашей новой зоны и она должна быть рабочей (к ней можно направиться)
Скрипт на активацию Вашей зоны вы позже можете привязать к какому-то квестовому событию или диалогу в игре.
Автор статьи: Stas Bush