IPB

>

SDK для 4A Engine своими руками

 
 Modera
сообщение 01.03.2019, 00:36
Сообщение #601


Я вам покушать принёс!
**********************

Куратор темы
Сообщений: 6055
Регистрация: 30.07.2010
Пользователь №: 13969



Мне тут предложили создать отдельную тему по поводу редактора уровней который я показывал в теме "Вскрытие ресурсов Метро 2033", так что теперь все новости и прочее будет здесь.

Скачать актуальную версию можно тут:
Папка на гугл диск. Исходники там же.

Скачать последнюю тестовую версию можно тут:
Тестовая версия.



Чейнджлог

Версия от 28 февраля:
  • Добавлена возможность открывать уровни арктики.1 и Метро Исход (сохранять их есстественно нельзя)
  • Новый пункт меню Render -> Set texture quality для установки качества текстур. По умолчанию 512.
  • Ускоренное перемещение камеры с зажатым Shift


Версия от 17 марта:
  • Теперь параметры текстур читаются из textures.bin или texture_handle_storage.bin, а не угадываются
  • Добавлена поддержка детальных текстур
  • Добавлена возможность редактировать секцию startup из редактора (В меню Level -> Options)
  • Добавлен список объектов на уровне с возможностью выбора (в меню Level -> Select entity)
  • Улучшен редактор параметров, теперь параметры идут в таком же порядке как в level.bin, учитываются вложенные секции и можно редактировать векторы


Версия от 23 марта:
  • Улучена работа функций перемещения и вращения. Всё ещё не так хорошо работает как хотелось бы, но реагирует на нажатия теперь нормально.
  • В меню пункт Save теперь сохраняет level.bin в ту папку из которой он был открыт. Для сохранения в другое место добавлен пункт Save as.
  • Список объектов теперь сортируется.
  • Во фрейм Entity добавлены кнопки Rename и Delete.
  • Параметры типа entity_link, uobject_link теперь показывают не id, а имя. При нажатии объект выбирается из списка. Надеюсь это удобнее.


Версия от 30 апреля:
  • Экспорт сцены
  • Загрузка уровней последнего света
  • Начальная реализация редактора скриптов
  • Добавлен model_Editor, для более удобного назначения материалов на конвертированных моделях.
  • Добавлено окошко выбора модели с предпросмотром. Открывается даблкликом на параметре visual : ref_model или visual : choose.
    (IMG:https://images.gameru.net/thumb/4fdd95f179a6394.png)
  • Так же добавлено более понятное редактирование флагов объектов, открывается даблкликом на oflags : bool8
    (IMG:https://images.gameru.net/thumb/7b6cb97962f1fde.jpg)
  • В редакторе параметров теперь показываются значения векторов
  • Улучшена поддержка уровней исхода, но до идеала ещё очень далеко
  • Коллизия моделей теперь загружается из файлов nxcform_pc (или nxcform_xbox для last light) в случае их присутствия, а не генерируется на лету. По идее ускоряет загрузку уровней, но иногда могут быть проблемы с выделением.


Версия от 18 августа:
  • Версия игры при загрузке уровня теперь определяется автоматически
  • Новая система загрузки level.bin от LL/Redux/Arktika.1/Exodus на джаваскрипте
  • Почти полноценная поддержка ластлайта(длц уровни всё ещё полностью не загружаются)
  • Возможность вращать и перемещать несколько объектов сразу
  • Возможность создавать шаблоны(кнопка add) с несколькими объектами, parent_id и прочие ссылки переназначаются автоматически
  • Виртуальные папки в списке объектов, для указания папок использовать обратные слеш в имени при добавлении шаблона
  • Импорт моделей в model_editor
  • Зум колёсиком в редакторе скриптов
  • Копирование и вставка в LE
  • Минимальная поддержка уровней Redux
  • Исправлено отзеркаливание сцены по оси Z (только LE, в следующей версии будет и ME)


Версия от 25 августа:
  • Доделана загрузка DLC уровней от Last Light
  • Кнопка Clear в редакторе скриптов
  • Уровни ласт лайта при сохранении через Save As теперь сохраняются без отладочной информации, как оригинальные. Хотя работало и так.


Версия от 20 января 2020:
  • альфа блендинг и дисторт
  • допилены манипуляторы, добавлен скейл
  • PhysX2 заменён на PhysX3, теперь объекты с масштабом выбираются корректно
  • Загрузка скелета и работа с прикреплёнными объектами (прикрепить на ctrl+shift)
  • Выбор партиклов/звуков/костей/бон партов/текстур/анимаций света
  • Редактирование Str_array
  • Редактирование матриц
    (IMG:https://images.gameru.net/thumb/165c64a93a24629.jpg)
  • работа с шейпами (удалить шейп ctrl+X, прицепить шейп ctrl+Z)
  • Поддержка последней версии Метро 2033 с патчами
  • Сохранение nxcform из model_editor
  • Выбор шейдеров и материалов в model_editor
  • Работа с LODами в model_editor
  • Загрузка и сохранение level.add.bin, в меню Level: Make addon помечает выбранные объекты для сохранения в level.add.bin, Make Global возвращает обратно в основной level.bin


Версия от 30 марта 2020:
  • Z = -Normal
  • Галочка Select для выделения свежедобавленных объектов
  • Возможность скрывать объекты
  • добавлена возможность указывать объект который используется как pivot при создании группы
  • по просьбам людей с поломанной виндой на которую не ставится PhysX библиотека PhysXLoader.dll теперь delayload
  • Исправлена загрузка суперстатики исхода (раньше загружалась не полностью)
  • Отображение декалей и egeoms
  • Отображение softbody моделей
  • Отображение Environment зон (редактирование недопилено)
  • Кое какая оптимизация за счёт сокращения числа переключений вершинных шейдеров, +20 фпс на уровне l24_alley
  • Экспорт моделей из model editor'а (в т.ч. со скелетом)
  • Теперь при импорте моделей AO берётся из цвета вершин (если есть), встроенный рассчёт AO убран
  • Начальная реализация импорта динамических моделей
  • Отображение двусторонних поверхностей на моделях исхода
  • Режим отображения Ambient Occlusion (выпадающий список рядом с Render Mode)
  • Возможность открывать отдельные .mesh файлы в Model Editor, для настройки материалов



Консольные утилиты

Полноценный распаковщик и запаковщик для Last Light, readme в архиве

Программы для работы с конфигами и конвертер моделей

Скачать
Исходники можно найти в исходниках level_editor'а.

В архиве содержится три программы: split.exe, binunp.exe и model.exe.

Первая split.exe, предназначена для разбития scripts.bin на отдельные файлы и сборки обратно.
Для разбития поместить файл scripts.bin в рабочей папке и запустить без параметров или с одним параметром -d(без разницы).
Код
split.exe

Если всё прошло хорошо должна появится папка scripts с большим количеством .bin файлов в ней.

Для обратной сборки запустить с ключом -c:
Код
split.exe -c

Скрипты при сборке опять таки берутся из папки scripts в рабочей папке.

Вторая binunp.exe, предназначена для конвертирования .bin конфигов(файлы добытые из scripts.bin, level.bin и некоторые другие) в человеко-читаемый формат и обратно. Именно на её основе строится редактор уровней.
Что умеет:
  1. Полная распаковка level.bin от Metro 2033
  2. Полная распаковка level.bin от Metro Last Light 2013 года
  3. Частичная распаковка level.bin от Redux/Arktika.1/Exodus
  4. Автоматическая распковка конфигов с отладочной инфой (ключ -d)
  5. Распаковка некоторых конфигов без отладочной инфы (ключ -s)
  6. Запаковка конфигов (ключ -с)


Распаковка level.bin осуществляется следующим образом:
Код
binunp.exe -l -d level.bin level.txt

Где level.bin - имя файла для распаковки.
Где level.txt - имя распакованного текстового файла.

Запаковка level.bin:
Код
binunp.exe -l [-k N] -c level.txt level.bin

Где level.txt - имя текстового файла для запаковки.
Где level.bin - имя нового двоичного файла.
Параметр -k необязательный, на месте N указывается тип .bin файла, по умолчанию 5. В 2033 используется 5, в last light 4, в следующих играх 36.

Распаковка конфигов с отладочной инфой:
Код
binunp.exe -l -d file.bin file.txt

Где file.bin - имя файла для распаковки.
Где file.txt - имя распакованного текстового файла.

При попытке распаковать таким образом конфиг без отладочной информации будет выведено сообщение об ошибке следующего вида:
Код
Exception: Cannot decompile config with kind=4


Распаковка конфигов без отладочной инфы(при помощи скрипта):
Код
binunp [-v] -s js\script.js file.bin file.txt

Где js\script.js - имя скрипта в папке js используемого для разбора конфига.
Где file.bin - имя файла для распаковки.
Где file.txt - имя распакованного текстового файла.
Параметр -v необязательный, если указать то будет выводиться предупреждение в том случае если данные были прочитаны не до конца.

Есть специальный случай, если имя файла для распаковки textures.bin, то скрипт не используется, вместо него нужно указать пустую строчку.
Код
binunp -s "" textures.bin textures.txt


Запаковка конфигов:
Код
binunp.exe [-k N] -c file.txt file.bin

Где file.txt - имя текстового файла для запаковки.
Где file.bin - имя нового двоичного файла.
Параметр -k необязательный, на месте N указывается тип .bin файла, по умолчанию 5. Желательно указывать такой же какой был показан при распаковке.

Последняя model.exe, конвертер моделей.
Умеет следующее:
  1. Конвертирование из .model в .ogf (для тестирования, ключ -model2ogf)
  2. Конвертирование из .ogf в .model (ключ -ogf2model)
  3. Cоздание nxcform_pc на основе модели (ключ -model2nxcform_pc)
  4. Создание уровня на основе основе модели (ключ -model2level)
  5. Конвертирование уровня из формата сталкера в формат 4A Engine (ключ -level2level)

Краткая справка доступна при запуске без параметров.

Эта инструкция будет дописываться.




Сообщение отредактировал Modera - 05.05.2020, 00:47
Перейти в начало страницы
 
 
 
Ответов
 Modera
сообщение 31.05.2020, 19:28
Сообщение #602


Я вам покушать принёс!
**********************

Куратор темы
Сообщений: 6055
Регистрация: 30.07.2010
Пользователь №: 13969



Не так уж плохо, но что-то всё-таки не то. В оригинале большой палец по другому был загнут.
(IMG:https://images.gameru.net/thumb/9d6a98ac024689e.jpg)
Может кватернионы из праворучной системы в леворучную надо как-то по другому переводить, а не просто Z = -Z.
Перейти в начало страницы
 
 
 Modera
сообщение 03.06.2020, 01:51
Сообщение #603


Я вам покушать принёс!
**********************

Куратор темы
Сообщений: 6055
Регистрация: 30.07.2010
Пользователь №: 13969



Я разобрался с пальцем, можно пилить анимации дальше. (IMG:style_emoticons/default/biggrin.gif) Прикрепленный файл  action002.zip ( 1.16 килобайт ) Кол-во скачиваний: 6


Если кому интересно, вот в чём было дело. Чуть выше я писал что кватернионы в метро-анимациях хранятся как три компонента X, Y, Z, а четвёртый W восстанавливается их условия нормальности кватерниона, то есть W = sqrt(1 - (X*X + Y*Y + Z*Z)). Естественно так может получится только положительное число, и если попадается кватернион с W меньше нуля его необходимо вывернуть, поменяв знак всем четырём компонентам. В этой анимации, удивительно, только у одной кости большого пальца правой руки оказался такой кватернион.

Сообщение отредактировал Modera - 03.06.2020, 01:56
Перейти в начало страницы
 
 
 Vladimiov
сообщение 03.06.2020, 06:16
Сообщение #604


Геймер
******

Группа: Участник
Сообщений: 105
Регистрация: 08.08.2019
Пользователь №: 31745



Цитата(Modera @ 03.06.2020, 01:51) *
Я разобрался с пальцем, можно пилить анимации дальше. (IMG:style_emoticons/default/biggrin.gif) Прикрепленный файл  action002.zip ( 1.16 килобайт ) Кол-во скачиваний: 6


Если кому интересно, вот в чём было дело. Чуть выше я писал что кватернионы в метро-анимациях хранятся как три компонента X, Y, Z, а четвёртый W восстанавливается их условия нормальности кватерниона, то есть W = sqrt(1 - (X*X + Y*Y + Z*Z)). Естественно так может получится только положительное число, и если попадается кватернион с W меньше нуля его необходимо вывернуть, поменяв знак всем четырём компонентам. В этой анимации, удивительно, только у одной кости большого пальца правой руки оказался такой кватернион.

О крута ждём порта анимаций. (IMG:style_emoticons/default/biggrin.gif) Модера а ты не можешь глянуть у нас почему что environments.bin не запаковывается , распаковывает норм а при запаковке вот это:
An unhandled exception occurred at $0000000100027264:
Exception: 8:39: unknown type 'shader, str_shared'
$0000000100027264
$000000010002C56E
$000000010002C643
$000000010002C643
$000000010002D25C
$000000010002D428
$0000000100001AC6
$00000001000023FE
$00000001000024C6
$00000001000106D3
$00000001000111D1
$00007FFF0C794034
$00007FFF0D883691
Перейти в начало страницы
 
 
 Modera
сообщение 03.06.2020, 12:44
Сообщение #605


Я вам покушать принёс!
**********************

Куратор темы
Сообщений: 6055
Регистрация: 30.07.2010
Пользователь №: 13969



Vladimiov, поправил https://drive.google.com/file/d/1QqJj-c1V33...iew?usp=sharing
Перейти в начало страницы
 
 
 
 

 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 09.07.2020, 11:58