IPB

>

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

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


.
**********************

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



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

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

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

Репозиторий на Bitbucket



Чейнджлог

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


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


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


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


Версия от 25 августа 2019:
  • Доделана загрузка 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 - 07.04.2021, 19:45
Перейти в начало страницы
 
 
 
Ответов
 Vladimiov
сообщение 26.11.2020, 21:01
Сообщение #642


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

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



Цитата(Modera @ 26.11.2020, 04:06) *
Кое-какие подвижки по анимациям в LE.

ЦЕ ФАНТАСТИЧНО
Перейти в начало страницы
 
 
 Modera
сообщение 28.11.2020, 20:01
Сообщение #643


.
**********************

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



Короче тестовая версия с анимациями: https://drive.google.com/file/d/1r2VT0RFxvA...iew?usp=sharing
Они включаются через меню

Show -> Animations

С подергиванием я разобрался, это оказывается была всего-лишь моя ошибка. Ещё я добавил импорт анимации из сталкеровского формата OMF, кстати.
Перейти в начало страницы
 
 
 Berkut107
сообщение 28.11.2020, 22:53
Сообщение #644


Почти Игрок
**

Группа: Участник
Сообщений: 23
Регистрация: 10.10.2018
Из: Липецк
Пользователь №: 29803



Це фантастично, пасиба.
А для чего порт анимаций из сталкера, если кости портануть нельзя?
Перейти в начало страницы
 
 
 Modera
сообщение 28.11.2020, 23:23
Сообщение #645


.
**********************

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



Berkut107, в качестве альтернативы FBX для импорта анимаций из блендера. Мне Vladimiov говорил что криво импортируется самодельная анимация из блендера, я в конечном счёте выяснил что анимация портится где-то между блендером и моим редактором. То есть либо при экспорте в FBX из блендера, либо при импорте FBX библиотечкой assimp.

Исследовать что там сломалось в чужом коде я конечно не хочу, мне проще выкинуть FBX и заменить на другой формат, тем более что плагин для экспорта OMF из блендера напрямую есть, и таких багов как экспорт в FBX он не даёт, а написать читалку OMF мне и самому не сложно.
Перейти в начало страницы
 
 
 Berkut107
сообщение 28.11.2020, 23:34
Сообщение #646


Почти Игрок
**

Группа: Участник
Сообщений: 23
Регистрация: 10.10.2018
Из: Липецк
Пользователь №: 29803



Цитата(Modera @ 28.11.2020, 23:23) *
Berkut107, в качестве альтернативы FBX для импорта анимаций из блендера. Мне Vladimiov говорил что криво импортируется самодельная анимация из блендера, я в конечном счёте выяснил что анимация портится где-то между блендером и моим редактором. То есть либо при экспорте в FBX из блендера, либо при импорте FBX библиотечкой assimp.

Исследовать что там сломалось в чужом коде я конечно не хочу, мне проще выкинуть FBX и заменить на другой формат, тем более что плагин для экспорта OMF из блендера напрямую есть, и таких багов как экспорт в FBX он не даёт, а написать читалку OMF мне и самому не сложно.

Понял!
Перейти в начало страницы
 
 
 TheStalkerNest
сообщение 28.03.2021, 20:43
Сообщение #647


Новичок
*

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



Цитата(Modera @ 28.03.2019, 03:38) *
Цитата(Modera @ 16.03.2019, 10:25) *
Tron, да, передали. К сожалению ни 5.25, ни даже 5.19 не пишут в совместимом формате. Пришлось использовать нужную версию прямо из Exe-шника игры. (IMG:style_emoticons/default/biggrin.gif) Только вот не знаю как бы это в виде готового инструмента оформить. Сейчас это делается через подмену dll-ки, потом игра запускается как обычно но при этом в отдельном потоке создаваемом в подменённой DLL генерируется nav_map.pe. Чё-то дичь какая-то.

В общем ничего лучше я так и не придумал, выложу как есть. https://drive.google.com/open?id=15gZxxqXd9...XR1-lPKqj78Fzxo

Для того чтобы использовать это понадобится крякнутый специальный девелоперский exe-шник, который можно найти например во всякого рода репаках. Я честно хотел сделать поддержку лицензионных версий, но exe-шники не девелоперские, код в них зашифрован, так что уж извините, но exe-шник подойдёт только вот этот вот.
(IMG:https://images.gameru.net/thumb/9161b403a2f3b4f.png)

Дальше. Как с помощью этого получить nav_map.pe. nav_map.pe получается из специального .raw формата моделей. Получить модель в этом формате можно с помощью конвертера уровней (вот этого) из модели обычной.
Код
model.exe -model2raw nav_map.model nav_map.raw

Когда модель сконвертирована в .raw можно попытаться сконвертировать её уже в nav_map.pe.
Для этого кладём dinput8.dll и developer.ini в папку с игрой, в которой должен быть exe-шник обозначенный выше, туда же кладём .raw файл, сверяемся с настройками в developer.ini
Код
[log]
enabled = yes -- включить лог (yes / no)
filename = uengine.log -- имя файла с логом

[nav_map]
enabled = no -- включить генерацию nav_map.pe (yes / no)
format = raw -- формат исходного файла, не трогаем
filename = nav_map.raw -- имя исходного файла
result = nav_map.pe -- имя файла в который запишется результат
exitwhendone = yes -- прибить процесс игры по завершению (yes / no)


И пробуем запустить игру как обычно. Если всё прошло хорошо то должен появится файл с именем указанным в параметре result, который можно подсунуть в свой уровень и спаунить там монстров. Остальные файлы (nav_map.connections.pc, nav_map.human_combat_covers.pc, nav_map.obstacles.pc) лучше взять от уровня 000.

В качестве доказательства что оно вообще работает - тестовый уровень. https://drive.google.com/open?id=168ah6hEew...PlGr0KgfuYv-vLg

Как инструмент для создания навмеша это конечно едва юзабельно, но хотябы даёт возможность посмотреть лог движка. (IMG:style_emoticons/default/biggrin.gif)


Не могли-бы вы дать исходники этой длл и этот exe-шник в лс?
Все сайты и все репаки перерыл, но так и не нашел именно этот exe.
Я-бы хотел написать поиск адресов с помощью сканера сигнатур, чтобы он работал на стим версии и на любом репаке.

Или есть более свежий инструмент для генерации nav_mesh?
Перейти в начало страницы
 
 
 Modera
сообщение 28.03.2021, 23:44
Сообщение #648


.
**********************

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



Цитата(TheStalkerNest @ 28.03.2021, 20:43) *
Не могли-бы вы дать исходники этой длл и этот exe-шник в лс?

Исходники DLL: https://drive.google.com/file/d/1hY-cwY0a37...iew?usp=sharing
EXEщник скинул в ЛС.

Цитата(TheStalkerNest @ 28.03.2021, 20:43) *
Или есть более свежий инструмент для генерации nav_mesh?

Нету. Хотя можешь попробовать создать, pathengine.dll как-раз нужной версии в интернете валяется. https://www.dll-files.com/pathengine.dll.html
У меня не получилось его инициализировать правда.
Перейти в начало страницы
 
 
 TheStalkerNest
сообщение 29.03.2021, 08:37
Сообщение #649


Новичок
*

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



Цитата(Modera @ 29.03.2021, 00:44) *
Цитата(TheStalkerNest @ 28.03.2021, 20:43) *
Не могли-бы вы дать исходники этой длл и этот exe-шник в лс?

Исходники DLL: https://drive.google.com/file/d/1hY-cwY0a37...iew?usp=sharing
EXEщник скинул в ЛС.

Цитата(TheStalkerNest @ 28.03.2021, 20:43) *
Или есть более свежий инструмент для генерации nav_mesh?

Нету. Хотя можешь попробовать создать, pathengine.dll как-раз нужной версии в интернете валяется. https://www.dll-files.com/pathengine.dll.html
У меня не получилось его инициализировать правда.


Благодарю (IMG:style_emoticons/default/smile.gif)
Перейти в начало страницы
 
 
 TheStalkerNest
сообщение 01.04.2021, 08:49
Сообщение #650


Новичок
*

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



Цитата(Modera @ 29.03.2021, 00:44) *
Цитата(TheStalkerNest @ 28.03.2021, 20:43) *
Не могли-бы вы дать исходники этой длл и этот exe-шник в лс?

Исходники DLL: https://drive.google.com/file/d/1hY-cwY0a37...iew?usp=sharing
EXEщник скинул в ЛС.

Цитата(TheStalkerNest @ 28.03.2021, 20:43) *
Или есть более свежий инструмент для генерации nav_mesh?

Нету. Хотя можешь попробовать создать, pathengine.dll как-раз нужной версии в интернете валяется. https://www.dll-files.com/pathengine.dll.html
У меня не получилось его инициализировать правда.


Публикую внутри-игровой генератор nav_mesh с моими правками.
https://github.com/tsnest/MetroDeveloper/releases

Теперь дллка работает на любом репаке и на лицензионной версии игры.
Дллка теперь является самостоятельным asi плагином, загружаемым в игру с помощью Ultimate-ASI-Loader от ThirteenAG.


Что по поводу самостоятельного генератора на основе pathengine.dll, то у меня получилось его инициализировать и даже вывести версию в консоль.
Там используется свой игровой аллокатор памяти.
Поставив хуки и восстановив оригинальный код аллокации из слитых исходников PathEngine 5.10, оно инициализировалось, однако хедер, с этой дллкой, не совместим (например пришлось закомментировать метод loadMeshFromStream в хедере).
Я даже сомневался в несовместимости хедера, и скачал игру Just Cause 2, откуда эта дллка и была взята, и попытался использовать генератор в ней, однако и там удалось вывести только версию, и получить ту-же ошибку с крашем игры, что и в самостоятельном генераторе, тем самым, подтвердив несовместимость хедера.

Исходники этой недоделки публикую:
https://drive.google.com/file/d/1_yPusz67EP...stz_64dk6T/view

Я думаю, проще будет найти другой билд этой версии длл, в других играх, чем пытаться переписать хедер под этот билд дллки.

Сообщение отредактировал TheStalkerNest - 01.04.2021, 08:55
Перейти в начало страницы
 
 
 Modera
сообщение 01.04.2021, 14:37
Сообщение #651


.
**********************

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



Цитата(TheStalkerNest @ 01.04.2021, 08:49) *
Я думаю, проще будет найти другой билд этой версии длл, в других играх, чем пытаться переписать хедер под этот билд дллки.

Судя по всему ничего лучше чем использовать pathengine из exe-шника игры не остаётся, т.к. каждая студия его переделывала под свои нужны и даже одинаковые версии оказываются нифига не совместимы. Вон в метро добавили loadMeshFromStream, в том pathengine который встроен в exe этот метод есть, а в длл из just cause 2 такого нет, зато есть куча других изменений.
Перейти в начало страницы
 
 
 Modera
сообщение 07.04.2021, 20:02
Сообщение #652


.
**********************

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



Чёт скучно, качайте новую тестовую версию: https://drive.google.com/file/d/1OIRaqxp3jq...iew?usp=sharing

Из нового я добавил отображение путей (в меню Scene -> Show ways), а так же их автоматическое связывание и отвязывание. Работает оно так, что если при создании новой точки patrol_point или o_aipoint уже была выделена одна точка такого же класса, то выделенная точка привязывается к свежесозданной, а при удалении точка отвязывается от всех путей у которым былая привязана. В слепую и вручную лепить пути было как-то не очень удобно.
(IMG:https://images.gameru.net/thumb/b5c127e2c6814c6.jpg)

А ещё я добавил перемещение камеры мышкой как в X-Ray SDK, с той лишь разницей что оно срабатывает при нажатом Alt, а не

Shift как там. Плюс возможность настраивать скорость камеры в меню (Settings -> Customize camera), вроде атанда сто лет назад просил меня что-то такое сделать из за того что рывками перемещаться не всегда удобно.
Перейти в начало страницы
 
 
 atanda
сообщение 07.04.2021, 22:15
Сообщение #653


Почти Игроман
*********

Группа: Участник
Сообщений: 586
Регистрация: 05.11.2017
Из: Далеко в Сибири
Пользователь №: 28310



Цитата(Modera @ 07.04.2021, 20:02) *
вроде атанда сто лет назад просил меня что-то такое сделать из за того что рывками перемещаться не всегда удобно

(IMG:style_emoticons/default/tongue.gif)
Перейти в начало страницы
 
 
 Modera
сообщение 07.04.2021, 23:05
Сообщение #654


.
**********************

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



(IMG:style_emoticons/default/wink.gif)
Перейти в начало страницы
 
 
 
 

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

 

Текстовая версия Сейчас: 11.04.2021, 01:51