Skip to content

AlexKimov/ntwm-file-formats

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание

Форматы файлов и инструменты для игры Nosferatu Wrath of Malachi (2003). Описание форматов в виде шаблонов для 16ричного редактора.

Краткое введение в форматы файлов

Игровые ресурсы

Основные игровые файлы находятся в архиве .csa. Сжатие в архиве не используется. Игра может работать с файлами из распакованного архива.

Форматы для моделей и текстур

Модели

3D модели строений, персонажей, монстров хранятся в файлах .anb и .fxm. Первые хранят вершинную анимацию, вторые данные для скелетной анимации, сами анимации для .fxm моделей находятся в файлах .mot. Для текстур используются .jpg, .tga. Параметры материалов, т.е. какие и как текстуры накладываются на объект, хранятся в .fxf файле.

Файлы уровня / FXA (FX actor) файлы

Уровни и расположенные на них модели в игре собираются из .fxa файлов.
Структура .fxa файла - набор отдельных объектов (или нод), которые расположены в файле одним за другим. Например, в одном файле может быть анимация движения объектов, свет, скрипты и т.д.. Каждый объект имеет тип (всего >40), название и координаты расположения и др. Уровень игры - один большой .fxa файл, который ссылается на файлы поменьше. Модели и другие объекты берутся из fxf файла по индексу. Одни объекты предназначены для добавления модели, другие добавляют звук, третьи служат для группировки нескольких нод в единую сущность и т.д.

FXF

Перечень всех используемых файлов игры (моделей, материалов, шрифтов) есть в fxf файле, включая название, параметры, индекс и т.д. файлы разбиты на 8 групп (типов), но используются 6 шт: Текстуры, Шрифты, Звуки, Модели, Материалы, Анимации. На каждый файл хранится индекс, название, перечень параметров в зависимости от его типа: индекс текстуры, данные по коллизии и т.п.

Пример
Файл Version\Data\StartScene_Beta2.fxa состоит из 320 объектов. 
Рассмотрим объект PlazaDrawGroup.
Первый коневой объект, невидимый, тип объекта 15, координаты расположение [0, 0, 0]. 
Содержит 7 функций, которые запускаются при наступлении событий LocalPlayer Enter DrawGroup (вход или появление игрока внутри объекта) и LocalPlayer Exit DrawGroup (выход из объекта). 
Размеры объекта в игре, т.е. координаты в которых он учитывается игрой [-3666.77, -550, 5440.74] - [3712.89, 627.66, 12714].

Вопросы/Ответы

  1. Как распаковать и запаковать архивы игры .csa?
    Использовать скрипт для Quickbms (ссылка). Только распаковка. Можно не распаковывать, нужна версия от gog, например.

  2. Как достать модели из игры Nosferatu Wrath of Malachi?
    Распаковать архив игры. Для моделей использовать плагины для Noesis (ссылка

  3. Как изменить уровень игры?
    Отредактировать .fxa файл. На дынный момент готовых инструментов для редактирования нет, описание части структуры есть в шаблоне для 010editor. Здесь (ссылка).

  4. Как игра загружает модели и материалы с текстурами к ним?
    Модель собирается из fxa файла, каждый визуальный объект имеет несколько связанных с ним объектов логики. Таким образом, чтобы правильно отобразить модель замка или комнаты, нужно считать все объекты и те которые отвечают за визуальную часть и те которые не имеют визуального представления, но задают положение объекта в пространстве, например. Также без чтения нужного объекта (ноды) из fxa файла не получиться правильно отобразить текстуру. В файлах моделей (fxm) нет информации о названии текстур или названии материалов.

    Алгоритм будет следующий:

  • Для простоты возьмем модель меча которая появляется при открытии чемодана в самом начале игры. Использовать будем 010editor и подготовленные шаблоны.
  • Предварительно сохраняем игру, чтобы получить файл сохранения savegame1.fxa. Открываем его в 010editor.
  • Открываем fxlibrary.fxf файл, применяем (шаблон) Teamplates - Run template и ищем текст с названием sword.fxm (Меню Search-Find-Text). После того как 010Editor нашел нужный нам участок файла, нажимаем на Ctrl-J, чтобы перейти в нужное место уже в дереве структуры файла. Теперь просматриваем дерево вниз и ищем индекс модели (modelindex).
  • Переходим к файлу сохранения. Ищем в файле объект типа 3, который отвечает за мечь (cмотри). Для этого просто ищем в файле (поиск-тип unsigned short) все цифры совпадающие с индексом из предыдущего пункта.
  • Теперь берем уже из найденного объекта индекс модели и индекс материала. У модели может быть несколько материалов. В файле (дереве структур) они будут идти друг за другом. Эти индексы будут соответствовать индексам fxlibrary.fxf файла. Модель и ее материал найдены.
  1. Как импортировать модель в игру?
    Данный плагин для Noesis может сохранять в .anb [plugins/noesis/fmt_ntwm_anb.py]. Тестировался довольно давно всего на одной модели, но должен работать. Для экспорта откройте поддерживаемую программой модель, выберите Export и формат anb.

Форматы

Структура

FXF

Файл состоит из заголовка и двух секций. 
0. Заголовок файла (24 байт)
  - Версия (4 байта)
  - Неизвестное значение (4 байта)
  - Пустые данные (16 байт)
1. Секция с названиями типов файлов
  - Количество типов (4 байта). 
   0. Тип Номер №1
   -- Количество названий (4 байта)
   -- Названия
   1. Тип Номер №2
   -- Количество названий (4 байта)
   -- Названия 
   ...
2. Секция с данными по каждому типу файла.
   - Количество файлов (4 байта).
   - Данные файла 1.
   - Данные файла 2.
   ...

FXA

Файл состоит из заголовка и последовательно идущих нод и их параметров. 
0. Заголовок файла (16 байт)
  - Версия (4 байта), может и не версия, но чтение файла зависит от значения данного параметра.
  - Количество нод (4 байта)
  - Неизвестное значение (4 байта)
  - Неизвестное значение (4 байта)
1. Ноды. 
   0. Нода №1
   -- Параметры ноды
   1. Нода №2
   -- Параметры ноды
   ...

Шаблоны

Nosferatu Wrath of Malachi (2003) / Вампиры (2003)

Формат Прогресс Шаблон (010 Editor) Описание
1 .anb 90% ANB.bt Строения, объекты, модели с вершинной анимацией
2 .fxm 90% FXM.bt Модели
3 .fxm 90% FFXM(keypose).bt Модели (слово keypose в названии)
4 .mot 90% MOT.bt Анимации для fxm моделей
5 .csa 90% CSA.bt Файл ресурсов игры
6 .fxa 20% FXA.bt Файл хранитель объектов
7 .fxf 20% FXF.bt Файл описание объектов в fxa файлах
Для чего нужны шаблоны
Отображение структуры файла в удобном для изучения и редактирования виде, другими словами - описание формата файла.

Как использовать шаблоны 010Editor
0. Установить 010Editor.
1. Открыть нужный файл игры.
2. Применить шаблон через меню Templates-Run template.   

Инструменты

QuickBms

Скрипт Описание
1 unpack_csa.bms Распаковка архивов игры
Как использовать quickbms скрипты
1. Нужен quickbms https://aluigi.altervista.org/quickbms.htm
2. Для запуска в репозитории лежит bat файл с настройками, нужно открыть его и задать свои пути: до места, где находится quickbms, папки с игрой и места куда нужно сохранить результат.
3. Запустить процесс через bat файл или вручную (задав свои параметры для запуска quickbms, документация на английском есть здесь https://aluigi.altervista.org/papers/quickbms.txt ). 

noesis

Плагин Описание
1 fmt_ntwm_anb.py Просмотр .anb файлов
2 fmt_ntwm_fxm.py Просмотр .fxm файлов
Как использовать Noesis плагины
1. Скачать и распаковать Noesis https://richwhitehouse.com/index.php?content=inc_projects.php&showproject=91 .
2. Скопировать нужный вам скрипт в папку ПапкасNoesis/plugins/python.
3. Запустить Noesis.
4. Открыть файл через File-Open.
5. В случае плагина для моделей на экране отобразиться модель, если используется плагин для распаковки архивов, то вы увидите меню с выбором параметров распаковки.
6. Если файл с нужным вам расширением отсутствует в меню, то или вы поместили файл плагина в другую папку или произошла ошибка при загрузке плагина.

About

Nosferatu The Wrath of Malachi file formats.

Links

https://github.com/MeinerI/Nosferatu-The-Wrath-of-Malachi - almost everything is based on this repository.

Templates

Format/Ext Progress Template (010 Editor) Description
1 .anb 90% ANB.bt 3d Objects, buildings, enemies with morphing animation
2 .fxm 90% FXM.bt Characters, enemies
3 .fxm 90% FFXM(keypose).bt Characters, enemies (files named "keypose")
4 .mot 90% MOT.bt motions (skeletal animation)
5 .csa 90% CSA.bt motions (skeletal animation)

Plugins

Noesis python scripts

About

Nosferatu The Wrath of Malachi file formats

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published