SDK для 4A Engine своими руками |
Здравствуйте, гость ( Авторизация | Регистрация )
SDK для 4A Engine своими руками |
01.03.2019, 00:36
Сообщение
#841
|
|
. Репутация: 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 |
 
|
|
|
|
09.12.2021, 22:08
Сообщение
#842
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
JackieR, а ты с какого патча взял level.bin? У меня вот если открыть игру в MetroEX есть несколько папок content, content_00, content_01, content_02, content_03.
Нормально распаковывается только взятый из content_03. 02, 01 и 00 вылетают с can't open section 'ak sammy slot' И только из папки content вылетает с size-pos < count, но время у меня меньше гораздо. |
 
|
|
10.12.2021, 00:02
Сообщение
#843
|
|
Ветеран Репутация: 10 Группа: Участник Сообщений: 99 Регистрация: 28.11.2018 |
JackieR, а ты с какого патча взял level.bin? У меня вот если открыть игру в MetroEX есть несколько папок content, content_00, content_01, content_02, content_03. Нормально распаковывается только взятый из content_03. 02, 01 и 00 вылетают с can't open section 'ak sammy slot' И только из папки content вылетает с size-pos < count, но время у меня меньше гораздо. Аа, понял. Брал из content. -------------------- |
 
|
|
24.12.2021, 11:16
Сообщение
#844
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
|
 
|
|
28.12.2021, 16:08
Сообщение
#845
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Короче по поводу добавления новых текстурок в редукс. Я чё-то это не доделал и не выложил этот хак, надо наверное всё-таки выложить.
dinput8_redux.zip ( 55,79 килобайт )
Кол-во скачиваний: 75
Ну и наверно нужно небольшое пояснение о том как это работает. Во первых нам потребуется сконструировать str_shared, т.к. функция загрузки опций текстуры принимает её в качестве параметра. CODE
CODE
Работают эти общие строчки вроде так же как и в сталкире, за исключением того что добавился ещё тип строки (последний параметр str_container_do_dock, который тут равен 0). Дальше нужны ещё две функции из движка, первая, которая перебирает все опции текстур в content.vfs и загружает их, и вторая которая загружает один файл с опциями. CODE
CODE
Честно говоря я уже не помню как я нашел эти функции. Первую толи по коллстеку из функции загрузки опций одной текстуры, толи по тому что там используется строка "*.bin". Вторая функция в оригинальном движке (в PDBшке точнее) имеет какое-то аццкое имя чуть ли не тысячу символов длинной, потому что там очень интенсивно используются всякие шаблоны, и я даже не хочу ничего об этом вспоминать. Короче первая функция нужна нам только для того чтобы на неё повесить хук, и сразу после перебора файлов в content.vfs вызвать перебор файлов в распакованной папке. Вторая нужна по прямому назначению, для загрузки опций. Перебор файлов делается стандартными виндовыми функциями, ничего удивительного в этом нет. У меня в такому решению есть пара вопросов. Во первых возможно тут утекает общая строка с именем текстуры, т.к. в оригинальном движке этот класс с автоматическим счётчиком ссылок, чего я не сделал. А может и не утекает, я во всех этих хитросплетениях C++ плохо ориентируюсь. Во вторых тут получается так что если вы подменяете опции текстур которые уже есть в content.vfs то они будут загружены два раза (оба раза изменённый файл из папки content). Не знаю на сколько это плохо, но у меня вроде ничего не крашится, хотя я только с один файлом проверял. С другой стороны для того чтобы избежать повторной загрузки нужно проверять есть ли файл с таким именем в архиве прежде чем загружать, а как это сделать аккуратно я не знаю, т.к. функции vfs::exist как в арктике в редаксе ещё вроде нет, ну или я её не нашел, а если проверять функцией открытия файла то потом непонятно как его закрыть, т.к. этот момент я не исследовал. |
 
|
|
06.02.2022, 08:30
Сообщение
#846
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Короче выпустил новую версию редактора и консольных утилит с накопившемися изменениями за зиму. Скорее эта версия будет последней.
Версия от 6 февраля 2022:
|
 
|
|
06.02.2022, 19:38
Сообщение
#847
|
|
Ветеран Репутация: 10 Группа: Участник Сообщений: 99 Регистрация: 28.11.2018 |
Шикарно.
Сообщение отредактировал JackieR - 06.02.2022, 19:42 -------------------- |
 
|
|
08.02.2022, 20:44
Сообщение
#848
|
|
Продвинутый геймер Репутация: 48 Группа: Участник Сообщений: 275 Награды: 3 Регистрация: 30.11.2010 |
Modera, похоже уровни из редактора исход не воспринимает. Ни версия с ртх, ни обычная.
Мб получилось у кого-нибудь уровень отредактировать чтобы игра воспринимала? У меня вылетает на загрузке уровня. |
 
|
|
08.02.2022, 20:52
Сообщение
#849
|
|
Ветеран Репутация: 10 Группа: Участник Сообщений: 99 Регистрация: 28.11.2018 |
Modera, похоже уровни из редактора исход не воспринимает. Ни версия с ртх, ни обычная. Мб получилось у кого-нибудь уровень отредактировать чтобы игра воспринимала? У меня вылетает на загрузке уровня. Уровни Исхода из content_03 считываются, насколько я понял. На последнем патче. А текущая версия MetroEX может только в запаковку content. -------------------- |
 
|
|
08.02.2022, 21:42
Сообщение
#850
|
|
Продвинутый геймер Репутация: 48 Группа: Участник Сообщений: 275 Награды: 3 Регистрация: 30.11.2010 |
JackieR, как-то в таком случае не логично вылядит.
Если бы уровни считывались из content_03 вылета бы не было, разве не так? чет я совсем не уверен, что уровни из контент03 читаются. Запаковал уровень 000 без изменений в архив и подсунул игре. Все запустилось. Внёс изменения, перепаковал архив и вылет после вступительного ролика. Ну и есть небольшая разница в размере, если просто сохранить без изменений, мб чего-то не досохраняется? справа оригинальный Сообщение отредактировал Rolan96 - 08.02.2022, 21:49 |
 
|
|
09.02.2022, 20:55
Сообщение
#851
|
|
Продвинутый геймер Репутация: 48 Группа: Участник Сообщений: 275 Награды: 3 Регистрация: 30.11.2010 |
JackieR, все же вы скорее всего правы по поводу content_03, то что вчера писал это проводил на версии с лучиками, там content_03 нет.
Но даже когда я запаковал изменённую локу в архив с content_03 для обычного метро, чуда не произошло. Я заметил, что в первых строках оригинальных *.vfx файлах после названия архива пишется имена уровней, которые должны быть в нем и видимо ещё где-то в файле упоминается имя уровня, поэтому уровни никак не читаются:( MetroEx пишет очень простые vfx файлы. |
 
|
|
09.02.2022, 22:02
Сообщение
#852
|
|
Продвинутый геймер Репутация: 48 Группа: Участник Сообщений: 275 Награды: 3 Регистрация: 30.11.2010 |
и появилось подозрение, что дело, в версии rtx, не доходит до измененных файлов редактором уровней, потому что распаковал архив с заключительным уровнем vfs и запаковал обратно ничего не меняя, игра тоже вылетела.
Нужен новый запаковщик) походу нет возможности проверить поддержку исхода( Modera, а с редаксами как обстоят дела в последней версии? Сообщение отредактировал Rolan96 - 09.02.2022, 22:07 |
 
|
|
09.02.2022, 22:15
Сообщение
#853
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
а с редаксами как обстоят дела в последней версии? редактор уровни открывает и сохраняет, для игры есть DLLка которая позволяет загружать изменённые level.bin прямо из папки content (без патч-архивов). Есть трудности с добавлением полностью новых уровней и новых текстур в .512/.1024/.2048 формате. |
 
|
|
Текстовая версия | Сейчас: 29.04.2024, 00:03 |