SDK для 4A Engine своими руками |
Здравствуйте, гость ( Авторизация | Регистрация )
SDK для 4A Engine своими руками |
01.03.2019, 00:36
Сообщение
#801
|
|
. Репутация: 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 |
 
|
|
|
|
29.10.2021, 18:55
Сообщение
#802
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
TheStalkerNest, вот блин. Ладно, щас попробую сам на стим версии запустить.
|
 
|
|
29.10.2021, 20:20
Сообщение
#803
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Короче выяснил что вылетает из за фашистов в начале уровня, убрал их, и переделал scripts.bin для стим версии.
Надеюсь теперь заработает. |
 
|
|
31.10.2021, 02:19
Сообщение
#804
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
Короче выяснил что вылетает из за фашистов в начале уровня, убрал их, и переделал scripts.bin для стим версии. Надеюсь теперь заработает. Не заметил сообщение, сам решил проверить, подменив уровень 000. Так получилось запустить. Фашистов с уровня не удалял. Побегал по секторам на слабом ноуте, разницы в фпс не заметил. Попробую потом затестить порталы на индоре из билда. Уровень оттуда тяжеловат, даже с учётом его разбивки на 2 отдельных уровня как в релизе, и с учётом оптимизаций компилятором xray. Сообщение отредактировал TheStalkerNest - 31.10.2021, 02:32 |
 
|
|
31.10.2021, 10:24
Сообщение
#805
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
Поправленная версия для стима, работает.
Сравнил уровень с порталами и без, стоя в одной точке и смотря в одну точку. Результаты с порталами: visible: deffered: s-static 90000 visible: deffered: instances 25000 visible: forward: s-static 2000 Результаты без порталов: visible: deffered: s-static 170000 visible: deffered: instances 90000 visible: forward: s-static 20000 Если в режиме "fly 1" вылететь за пределы уровня, то видно, что порталы работают, и не прорисовывают весь уровень, а только нужные сектора, в то время как на уровне без порталов, отрисовывается весь уровень. |
 
|
|
31.10.2021, 10:58
Сообщение
#806
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
TheStalkerNest, ну короче порталы всё-таки пригодятся. Надо только со звуком разобраться.
|
 
|
|
31.10.2021, 17:18
Сообщение
#807
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
С добавлением этой функции, у меня появилась новая идея для level editor'a: 1. Кнопка запуска игры, для быстрого тестирования изменений level.bin и т.д, без сворачивания редактора. 2. Строка пути к exe'шнику игры (пример "C:\Metro2033\metro2033.exe") 3. Строка пути рабочей папки игры (мало-ли, пригодится) (пример "C:\Metro2033\") 4. Строка аргументов запуска игры (пример "-dx9") Ну и соответственно пункты 2, 3 и 4, свои для каждой игры. Добавил такую фичу, тестовая версия с ней: Едиственно что не придумал как различать редаксы 2033 и ласт лайт между собой, версия движка то у них одинаковая, поэтому путь к EXE и другие параметры у них будут общие. Другие изменения по сравнению с прошлой версией: Цитата Исправлен баг с отображением softbody моделей при включенном режиме wireframe Добавлена возможность вызерать выделенные объекты Исправлена ошибка из за которой могли неправильно переназначатся ссылки и parent_id при создании или вставке групп объектов Исправлена ошибка с тем что не сбрасывалось выделение при переоткрытии уровня В виду появления возможности загружать моды из папки content добавлены пункты в меню Level для быстрого сохранения и запуска уровня (Save & Run, Run Options) и кнопка на тулбаре Думаю разобраться с порталами и можно новую не-тестовую версию выпускать. |
 
|
|
31.10.2021, 20:15
Сообщение
#808
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
Затестил. Класс. Наконец-то можно не сворачивая редактор, сразу запускать игру.
|
 
|
|
31.10.2021, 22:25
Сообщение
#809
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
Modera, как распаковывать скрипты last light?
При попытке их распаковать, вылетает исключение Exception: Cannot decompile config with kind=4 Скрипта для распаковки без отладочной инфы, по инструкции в шапке темы, в папке js нет |
 
|
|
31.10.2021, 22:30
Сообщение
#810
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
|
 
|
|
31.10.2021, 23:14
Сообщение
#811
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
Скрипта для распаковки без отладочной инфы, по инструкции в шапке темы, в папке js нет Надо найти место в движке где читается скрипт, и переписать его в js. По другому никак. Т.е. сейчас невозможно добавлять свои уровни в ll и redux? Я пока эталон запустил подменив 000. Сообщение отредактировал TheStalkerNest - 31.10.2021, 23:14 |
 
|
|
01.11.2021, 08:07
Сообщение
#812
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
TheStalkerNest, возможно. Во первых файлы с загрузочными экранами можно копировать от одного уровня к другому и не парится на счёт того что в них написано неправильное имя, всё будет работать и так.
Во вторых скрипт для разбора этих файлов всё-таки есть, он называется map_params.js. |
 
|
|
01.11.2021, 12:14
Сообщение
#813
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
TheStalkerNest, возможно. Во первых файлы с загрузочными экранами можно копировать от одного уровня к другому и не парится на счёт того что в них написано неправильное имя, всё будет работать и так. Во вторых скрипт для разбора этих файлов всё-таки есть, он называется map_params.js. Пробовал до этого, распаковывать всеми скриптами, в т.ч. и этим скриптом, почему-то не работало. Сейчас проверил, всё работает. Вероятно, мой косяк был :/ Теперь не работает компиляция обратно. Exception: 4:16: unknown type 'chose' За основу был взят l01_jail.bin Команда binunp -k 4 -c etalon_level.txt etalon_level.bin Удалось решить проблему, удалив подобные строчки "caption : chose;", "text : chose;" и т.д. Однако всплыла ещё одна проблема с неизвестным типом "color, vec4". Удалось решить, заменив подобные строчки color : 'color, vec4' = [1, 1, 1, 1]; на color : vec4i = [1, 1, 1, 1]; |
 
|
|
01.11.2021, 13:15
Сообщение
#814
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
TheStalkerNest, этот скрипт другой чувак для меня делал, видимо там несколько ошибок с названиями типов есть.
А параметр text_color вообще на самом деле text_rect называется. |
 
|
|
01.11.2021, 13:27
Сообщение
#815
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
map_params.js для ll с моими правками
Исправил несколько опечаток chose на choose Исправил неправильные записи vec4 Заменил text_color на text_rect, по сообщению Modera Скрипт собирается, и вроде работает, но текст пишется, некорректно. Причину пока не удалось найти. Modera, как корректно запустить свой уровень батником на ll? Запускаю командой MetroLL.exe -cfg user.cfg -server -map etalon_level, появляется загрузочный экран, после чего, сразу шлётся команда disconnect и появляется консоль. Если в консоли выполнить команду map etalon_level, то уровень нормально загружается :/ UPD: Проблему с вылетом в консоль, удалось решить. На ll не нужно указывать ключ -server Сообщение отредактировал TheStalkerNest - 01.11.2021, 13:31 |
 
|
|
01.11.2021, 13:49
Сообщение
#816
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Исправил неправильные записи vec4 Ну там не vec4i, а vec4f на самом деле, и ещё пара ошибок в именах параметров была. Короче вроде всё сделал как надо и залил в репозиторий. UPD: Проблему с вылетом в консоль, удалось решить. На ll не нужно указывать ключ -server Да, всё верно, для ЛЛ и редакса этот ключ не нужен. |
 
|
|
01.11.2021, 14:21
Сообщение
#817
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
Исправил неправильные записи vec4 Ну там не vec4i, а vec4f на самом деле, и ещё пара ошибок в именах параметров была. Короче вроде всё сделал как надо и залил в репозиторий. UPD: Проблему с вылетом в консоль, удалось решить. На ll не нужно указывать ключ -server Да, всё верно, для ЛЛ и редакса этот ключ не нужен. Теперь скрипт вроде корректно работает. Сейчас ещё заметил то, что mujs.dll из тестовой версии сдк, теперь несовместим с binunp15. |
 
|
|
01.11.2021, 14:34
Сообщение
#818
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Сейчас ещё заметил то, что mujs.dll из тестовой версии сдк, теперь несовместим с binunp15. Это норма, потому что binunp собран для x64, а последний билд для x86. Блин, нашел в движке скриптовый блок logic/delay hud, там что-то связанное с респауном для мультиплеера. Только как заставить работать это всё непонятно. |
 
|
|
01.11.2021, 15:01
Сообщение
#819
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
У меня появилась ещё одна полезная идея для сдк.
Дополнительная папка для своих ресурсов, чтобы не класть свои текстуры, модели и т.д, в основную распакованную папку content. Ну и строка, для редактирования названия своей папки. Обновление игрового плагина MetroDeveloper от 01.11.2021. Добавлена поддержка dds текстур в last light. Включается параметром ll_allow_dds в секции other. Сообщение отредактировал TheStalkerNest - 01.11.2021, 14:50 |
 
|
|
02.11.2021, 23:18
Сообщение
#820
|
|
Опытный Игрок Репутация: 3 Группа: Участник Сообщений: 67 Регистрация: 06.02.2016 |
Обновление игрового плагина MetroDeveloper от 03.11.2021.
Реализована поддержка redux'ов. P.S. Подгружать nav_map.bin из папки content, пока ещё нельзя. |
 
|
|
04.11.2021, 17:22
Сообщение
#821
|
|
. Репутация: 750 Куратор темы Сообщений: 7072 Регистрация: 30.07.2010 |
Короче выложил новую не-тестовую версию, отличия от предыдущей такие:
Цитата Параметры для консольных утилит model.exe и binunp.exe теперь можно задавать в любом порядке, как во всех человеческих программах Исправлен баг с отображением softbody моделей при включенном режиме wireframe Добавлена возможность вырезать выделенные объекты Исправлена ошибка из за которой могли неправильно переназначатся ссылки и parent_id при создании или вставке групп объектов Исправлена ошибка с тем что не сбрасывалось выделение при переоткрытии уровня В виду появления возможности загружать моды из папки content добавлены пункты в меню Level для быстрого сохранения и запуска уровня (Save & Run, Run Options) и кнопка на тулбаре Теперь model.exe конвертирует порталы из сталкеровских уровней в level.portals, если они там есть. С нерабочим звуком из за порталов удалось разобраться. Вроде. Формат чанка 0x0000FFFC в файле level.portals примерно такой: Код int version; // версия sound occlusion, в 2033 = 4, в ласт лайте и редуксе 5 int checksum; // контрольная сумма уровня, которая пишется в чанке 0x0B (11). Должна совпадать обязательно, иначе не загрузится int size1; // ? int table1[size1*size1]; // какая-то таблица размером в квадрат предыдущего значения struct st_Portal { const char *name; int unknown; // вроде всегда 0 short size1; if(version == 4) int data1[size1][4]; // вертексы? if(version == 5) int data1[size1][3]; // вертексы? int data2[12]; // возможно матрица 4x3 }; int portal_count; struct st_Portal portals[portal_count]; // а за порталами следует ещё какая-то таблица формат которой мне непонятен И если записать заглушку в которой указана только версия, контрольная сумма и три нулевых int то впринципе игра запускается и звук и порталы работают. Но честно говоря у меня не уверенности что тут ничего не читается после конца файла, и неизвестно к чему это может привести. А работает ли такая заглушка в ласт лайте и редаксе я вообще не проверял, т.к. готовых сконвертированных уровней с порталами у меня нет и делать их мне не охота, я уже на другую задачу отвлёкся. |
 
|
|
Текстовая версия | Сейчас: 28.03.2024, 23:50 |