SDK для 4A Engine своими руками |
Здравствуйте, гость ( Авторизация | Регистрация )
SDK для 4A Engine своими руками |
01.03.2019, 00:36
Сообщение
#701
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Мне тут предложили создать отдельную тему по поводу редактора уровней который я показывал в теме "Вскрытие ресурсов Метро 2033", так что теперь все новости и прочее будет здесь.
Скачать актуальную версию можно тут: Скачать последнюю тестовую версию можно тут: Чейнджлог Версия от 28 февраля 2019:
Версия от 17 марта 2019:
Версия от 23 марта 2019:
Версия от 30 апреля 2019:
Версия от 18 августа 2019:
Версия от 25 августа 2019:
Версия от 20 января 2020:
Версия от 30 марта 2020:
Версия от 28 июня 2021:
Версия от 20 сентября 2021:
Версия от 4 ноября 2021:
Версия от 18 ноября 2021:
Версия от 6 февраля 2022:
Консольные утилиты Полноценный распаковщик и запаковщик для 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 и некоторые другие) в человеко-читаемый формат и обратно. Именно на её основе строится редактор уровней. Что умеет:
Распаковка 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, конвертер моделей. Умеет следующее:
Краткая справка доступна при запуске без параметров. Эта инструкция будет дописываться. Сторонние утилиты Сообщение отредактировал Modera - 06.02.2022, 08:21 |
 
|
|
|
|
30.05.2021, 23:23
Сообщение
#702
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
Просто нет потребности в таком функционале. Вижу утилиту от TheStalkerNest для генерации навмеша, оно имплементировано в сдк уже?Как уже Modera писал, так и я перескажу. На данный момент генератор использует PathEngine прямо из движка игры, поэтому пока не получится создать самостоятельную утилиту без движка, или интегрировать её в сдк. Есть дллка PathEngine подходящей версии из другой игры, но там свои правки есть, из-за которых не получается проинициализировать её. |
 
|
|
31.05.2021, 01:39
Сообщение
#703
|
|
Продвинутый геймер Репутация: 48 Группа: Участник Сообщений: 275 Награды: 3 Регистрация: 30.11.2010 |
Что ж, удалось на основе кодов МетроЕх вывести в читаемый формат textures_handles_storage.bin.
Не json, конечно, но очень даже читаемо. [wood\wood_old_grey_15] name = type = 64 format = 5 height = 2048 width = 2048 bump_name = wood\wood_old_grey_15_bump reflectivity = 0,04000854 streamable = True parallax_height_mul = 1 is_metal = False animated = False det_name = det\det_wood_fabric DetailScale = none det_intensity = 0.099976 override_avg_color = False shader_name = geometry\default Осталось ещё пару параметров добить и готово. Это была самая простая часть, сложнее будет обратно в bin уложить это все. Хотя есть идея, как я понял МетроЕх может распаковывать и собирать обратно config.bin(а может и не может, мб просто зачатки этого увидел), воспользоваться этой функцией и попробовать собрать уже правленый файл. Мб кто знает, у текстур есть параметр aux public: void SetTextureInfo(const MetroTextureInfo* textureInfo) { mTextureInfo = textureInfo; if (mTextureInfo) { mAuxNames[0] = ToNetString(mTextureInfo->aux0_name); mAuxNames[1] = ToNetString(mTextureInfo->aux1_name); mAuxNames[2] = ToNetString(mTextureInfo->aux2_name); mAuxNames[3] = ToNetString(mTextureInfo->aux3_name); mAuxNames[4] = ToNetString(mTextureInfo->aux4_name); mAuxNames[5] = ToNetString(mTextureInfo->aux5_name); mAuxNames[6] = ToNetString(mTextureInfo->aux6_name); mAuxNames[7] = ToNetString(mTextureInfo->aux7_name); } } для чего он нужен? Modera, в SDK с момента последней записи в ченджлоге добавлено много изменений, может обновишь |
 
|
|
31.05.2021, 16:30
Сообщение
#704
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
|
 
|
|
01.06.2021, 14:37
Сообщение
#705
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Короче очередная тестовая версия:
Заменил нафиг свои кривые манипуляторы на стороннюю либу + сделал запоминание выбранных режимов у инструментов (Object/World/Group) и некоторых других параметров. Если никаких серьёзных багов не вылезет то буду выпускать уже не-тестовую версию. |
 
|
|
01.06.2021, 16:25
Сообщение
#706
|
|
Игрок Репутация: 7 Группа: Участник Сообщений: 46 Регистрация: 10.10.2018 |
Спасибо за удобный пивот! Декорить локации теперь не мучения, а балдеж.
Баг с приближением камеры после тыкания во вкладке "Weather" так и остался. Какие дальнейшие планы на редактор? Сообщение отредактировал Berkut107 - 01.06.2021, 16:27 -------------------- |
 
|
|
01.06.2021, 16:56
Сообщение
#707
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Спасибо за удобный пивот! Декорить локации теперь не мучения, а балдеж. Баг с приближением камеры после тыкания во вкладке "Weather" так и остался. Какие дальнейшие планы на редактор? Я не любитель составлять планы, просто делаю то что мне интересно когда появляется желание. А что за баг, напомни? |
 
|
|
01.06.2021, 18:46
Сообщение
#708
|
|
Продвинутый геймер Репутация: 48 Группа: Участник Сообщений: 275 Награды: 3 Регистрация: 30.11.2010 |
Modera, чисто хотелка. Было бы удобно, чтобы в меню открытия уровней отображались пять последних открытых.
|
 
|
|
01.06.2021, 18:51
Сообщение
#709
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Rolan96, когда-нибудь может-быть сделаю.
|
 
|
|
01.06.2021, 23:50
Сообщение
#710
|
|
Игрок Репутация: 7 Группа: Участник Сообщений: 46 Регистрация: 10.10.2018 |
Спасибо за удобный пивот! Декорить локации теперь не мучения, а балдеж. Баг с приближением камеры после тыкания во вкладке "Weather" так и остался. Какие дальнейшие планы на редактор? Я не любитель составлять планы, просто делаю то что мне интересно когда появляется желание. А что за баг, напомни? Сообщение отредактировал Berkut107 - 01.06.2021, 23:51 -------------------- |
 
|
|
01.06.2021, 23:55
Сообщение
#711
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Вот те раз, никогда с таким не сталкивался...
Попробую повторить, если получится - то можно думать в сторону исправления. |
 
|
|
02.06.2021, 13:12
Сообщение
#712
|
|
Игрок Репутация: 7 Группа: Участник Сообщений: 46 Регистрация: 10.10.2018 |
Вот те раз, никогда с таким не сталкивался... Попробую повторить, если получится - то можно думать в сторону исправления. Вот после таких действий появляется баг -------------------- |
 
|
|
02.06.2021, 14:57
Сообщение
#713
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
Вот те раз, никогда с таким не сталкивался... Попробую повторить, если получится - то можно думать в сторону исправления. Вот после таких действий появляется баг Аналогичный баг периодически появлялся когда на долго сворачивал сдк, а потом снова разворачивал. |
 
|
|
05.06.2021, 19:29
Сообщение
#714
|
|
Игрок Репутация: 7 Группа: Участник Сообщений: 46 Регистрация: 10.10.2018 |
-------------------- |
 
|
|
05.06.2021, 19:45
Сообщение
#715
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Попробую сделать, но не факт что именно в таком виде будет
|
 
|
|
08.06.2021, 00:10
Сообщение
#716
|
|
Продвинутый геймер Репутация: 48 Группа: Участник Сообщений: 275 Награды: 3 Регистрация: 30.11.2010 |
Что ж, удалось на основе кодов МетроЕх вывести в читаемый формат textures_handles_storage.bin. Не json, конечно, но очень даже читаемо. [wood\wood_old_grey_15] name = type = 64 format = 5 height = 2048 width = 2048 bump_name = wood\wood_old_grey_15_bump reflectivity = 0,04000854 streamable = True parallax_height_mul = 1 is_metal = False animated = False det_name = det\det_wood_fabric DetailScale = none det_intensity = 0.099976 override_avg_color = False shader_name = geometry\default Осталось ещё пару параметров добить и готово. Это была самая простая часть, сложнее будет обратно в bin уложить это все. Хотя есть идея, как я понял МетроЕх может распаковывать и собирать обратно config.bin(а может и не может, мб просто зачатки этого увидел), воспользоваться этой функцией и попробовать собрать уже правленый файл. Мб кто знает, у текстур есть параметр aux public: void SetTextureInfo(const MetroTextureInfo* textureInfo) { mTextureInfo = textureInfo; if (mTextureInfo) { mAuxNames[0] = ToNetString(mTextureInfo->aux0_name); mAuxNames[1] = ToNetString(mTextureInfo->aux1_name); mAuxNames[2] = ToNetString(mTextureInfo->aux2_name); mAuxNames[3] = ToNetString(mTextureInfo->aux3_name); mAuxNames[4] = ToNetString(mTextureInfo->aux4_name); mAuxNames[5] = ToNetString(mTextureInfo->aux5_name); mAuxNames[6] = ToNetString(mTextureInfo->aux6_name); mAuxNames[7] = ToNetString(mTextureInfo->aux7_name); } } для чего он нужен? Modera, в SDK с момента последней записи в ченджлоге добавлено много изменений, может обновишь А параметров-то оказалось намного больше чем пару штук) туц [window\avroracurtaincover] name = window\avroracurtaincover type = 0 texture_type = 0 source_name = window\avroracurtaincover surf_xform = 0 0 1 1 format = 5 width = 1024 height = 1024 animated = False draft = False override_avg_color = False avg_color = 0,5058594 0,3920898 0,3293457 1 shader_name = geometry\default gamemtl_name = materials\wooden_board priority = 0 streamable = True bump_height = 0,04998779 displ_type = 2 displ_height = 0,005001068 parallax_height_mul = 1 mipmapped = True reflectivity = 0,04000854 is_metal = False det_name = DetailScale X = 1 DetailScale Y = 1 det_intensity = 1.000000 aux_params = 1 1 1 1 aux_params_1 = 1 1 1 1 bump_name = window\avroracurtaincover_bump aux0_name = aux1_name = aux2_name = aux3_name = aux4_name = aux5_name = aux6_name = aux7_name = |
 
|
|
08.06.2021, 00:24
Сообщение
#717
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Rolan96, будешь делать редактор настроек текстур?
|
 
|
|
08.06.2021, 00:47
Сообщение
#718
|
|
Продвинутый геймер Репутация: 48 Группа: Участник Сообщений: 275 Награды: 3 Регистрация: 30.11.2010 |
Rolan96, будешь делать редактор настроек текстур? не, хочется просто иметь возможность добавлять свои текстуры. Надеюсь получится конвертануть эти данные обратно в bin и все. кстати, в одной из веток на гитхабе, пользователь ShokerStlk написал конвертер базы текстур в формат xml и оно работало, но как я понял, дальше конверта в одну сторону оно не ушло. Но на улучшенной версии исхода он не работал, хотя вроде формат не менялся, хз. мой костылёк на основе исходников MetroEx норм разбирает из новой версии. Спасибо большое iOrange за такой мощный инструмент. |
 
|
|
23.06.2021, 01:31
Сообщение
#719
|
|
Игрок Репутация: 7 Группа: Участник Сообщений: 46 Регистрация: 10.10.2018 |
Небольшой гайд по замене динамических моделей в игре. Может быть, кому нибудь пригодится -------------------- |
 
|
|
23.06.2021, 10:58
Сообщение
#720
|
|
Ветеран Репутация: 10 Группа: Участник Сообщений: 99 Регистрация: 28.11.2018 |
Небольшой гайд по замене динамических моделей в игре. Может быть, кому нибудь пригодится По замене моделей оружия. С другой динамикой (неписи, хад рук, объекты) все несколько иначе. Потом напишу тутор и про них, если будет время. -------------------- |
 
|
|
23.06.2021, 15:45
Сообщение
#721
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
|
 
|
|
Текстовая версия | Сейчас: 03.05.2024, 02:36 |