IPB

>

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

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


Игровой Бог
**********************

Куратор темы
Сообщений: 5603
Регистрация: 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 теперь сохраняются без отладочной информации, как оригинальные. Хотя работало и так.



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

Полноценный распаковщик и запаковщик для 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. Запаковка конфигов (ключ -с)


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

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

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


Сообщение отредактировал Modera - 13.09.2019, 18:39
Перейти в начало страницы
 
 
 
Ответов
 iOrange
сообщение 02.03.2019, 00:17
Сообщение #2


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

Группа: Участник
Сообщений: 728
Регистрация: 30.03.2010
Из: Planet Earth
Пользователь №: 13811



Чет тут подозрительно тихо. Разбавим тишину.

Автор молодец! Отличная работа. Если из этого вырастет полноценный редактор уровней - будет очень круто.

ЗЫ. Я в Паскаль не умею (точнее мне лень с ним разбираться), так что код не смотрел. А вот то что шейдеры `ARBvp/fp` - это сильно удивило. Я лет 15 их уже не видел.
Если нужна какая помощь по рендеру (и OpenGL в целом) - обращайся.
Перейти в начало страницы
 
 
 Ruw
сообщение 02.03.2019, 00:52
Сообщение #3


Игровое Воплощение
*********************

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



Не, ну с вами всё ясно. Вы хотите делать столкир на 4a engine что ли? (IMG:style_emoticons/default/o_O.gif) .
Это путь в никуда, дебри кода и багов, колючая проволка и мины. Я ещё могу понять когда 4a запчастями апгрейдят X-ray запчасти....или используют модели геометрии и персонажей.
Metro Exodus не похожа на полигон для модинга.


Честное слово, накатывайте UE4, поляки как раз Чернобыль отсканили, ун и прискорбную боязень волков на запчасти балгаркой можно порезать.
запчасти









Сообщение отредактировал Ruw - 02.03.2019, 01:18
Перейти в начало страницы
 
 
 kiperenok
сообщение 02.03.2019, 01:41
Сообщение #4


Игровой Эксперт
***************

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



Лучше покажите как выглядит локация между сезонами игры, когда мы едем в Авроре. А то один придурок на Ютубе сказал, что она закольцована и мы едем по кругу.
Мое мнение, что это просто 1 кусок локации который подставляется раз за разом.
Перейти в начало страницы
 
 
 iOrange
сообщение 02.03.2019, 01:58
Сообщение #5


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

Группа: Участник
Сообщений: 728
Регистрация: 30.03.2010
Из: Planet Earth
Пользователь №: 13811



Цитата(kiperenok @ 02.03.2019, 00:41) *
Мое мнение, что это просто 1 кусок локации который подставляется раз за разом.

Цитата(kiperenok @ 02.03.2019, 00:41) *
один придурок на Ютубе сказал, что она закольцована


Мне видится что две эти фразы равнозначны
Перейти в начало страницы
 
 
 atanda
сообщение 02.03.2019, 11:57
Сообщение #6


Продвинутый геймер
********

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



Цитата(kiperenok @ 02.03.2019, 01:41) *
Лучше покажите как выглядит локация между сезонами игры

Генерирование? Особенно это заметно на багах с травой в воздухе. Имеется террейн, заготовки строений, флора и потом это всё случайным образом размещается. Возможно, строения уже имеют своё точное местоположение, как и часть флоры; а вот трава, мелкие кусты и какие-то деревья случайно расставляются по мере продвижения.
Перейти в начало страницы
 
 
 kiperenok
сообщение 02.03.2019, 12:39
Сообщение #7


Игровой Эксперт
***************

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



Цитата(iOrange @ 02.03.2019, 01:58) *
Цитата(kiperenok @ 02.03.2019, 00:41) *
Мое мнение, что это просто 1 кусок локации который подставляется раз за разом.

Цитата(kiperenok @ 02.03.2019, 00:41) *
один придурок на Ютубе сказал, что она закольцована


Мне видится что две эти фразы равнозначны

Ошибаешься ! Закольцовано - это по кругу, окружности. А в нашем случае движение Авроры строго прямо - зациклено.
Перейти в начало страницы
 
 
 autistic
сообщение 02.03.2019, 12:49
Сообщение #8


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

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



Цитата(kiperenok @ 02.03.2019, 14:39) *
движение Авроры строго прямо - зациклено

Все сходится, прямая - это окружность с бесконечным радиусом (IMG:style_emoticons/default/smile.gif)
Перейти в начало страницы
 
 
 Cartoteka
сообщение 02.03.2019, 12:57
Сообщение #9


Мастер Игры
************

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



kiperenok, возможно, уровень "Погоня" из Metro Last Light сможет ответить на твой вопрос. Там же тоже тоннель "бесконечный".
Перейти в начало страницы
 
 
 abramcumner
сообщение 02.03.2019, 13:01
Сообщение #10


Доктор Игровых Наук
*******************

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



Цитата(Ruw @ 02.03.2019, 00:52) *
Metro Exodus не похожа на полигон для модинга.

Ровно как и сталкер до распаковщиков, асдс и горы прочих утилит.

Цитата
Честное слово, накатывайте UE4, поляки как раз Чернобыль отсканили, ун и прискорбную боязень волков на запчасти балгаркой можно порезать.

Зачем?

Цитата(Cartoteka @ 02.03.2019, 12:57) *
kiperenok, возможно, уровень "Погоня" из Metro Last Light сможет ответить на твой вопрос. Там же тоже тоннель "бесконечный".

Зачем такой изврат. Надо просто в ЛЕ от Модеры открыть любой поездной уровень.
Перейти в начало страницы
 
 
 atanda
сообщение 02.03.2019, 13:14
Сообщение #11


Продвинутый геймер
********

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



autistic, возможно, бредятина, но у меня была ещё теория, что не Аврора движется, а окружение вокруг неё. Т.к. при движении Авроры надо и геометрию, и навигационную карту, и неписей двигать + ещё просчитывать навигацию на этой самой карте.
Перейти в начало страницы
 
 
 Cartoteka
сообщение 02.03.2019, 13:18
Сообщение #12


Мастер Игры
************

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



Цитата(abramcumner @ 02.03.2019, 13:01) *
Зачем такой изврат. Надо просто в ЛЕ от Модеры открыть любой поездной уровень.



А я что написал?
Перейти в начало страницы
 
 
 autistic
сообщение 02.03.2019, 14:09
Сообщение #13


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

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



Цитата(buffy @ 02.03.2019, 15:14) *
у меня была ещё теория, что не Аврора движется, а окружение вокруг неё.

Это примерно как дилемма при выборе с какого конца яичную скорлупу чистить (IMG:style_emoticons/default/biggrin.gif) А тут проблема выбора между: либо мир движется относительно авроры, либо аврора движется относительно мира. И то и другое справедливо, и на производительность никак не влияет т.к. кол-во DIP'ов одинаковое будет (IMG:style_emoticons/default/smile.gif)
Перейти в начало страницы
 
 
 Modera
сообщение 02.03.2019, 14:50
Сообщение #14


Игровой Бог
**********************

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



Цитата(iOrange @ 02.03.2019, 00:17) *
Автор молодец! Отличная работа. Если из этого вырастет полноценный редактор уровней - будет очень круто.

Спасибо за тёплые слова (IMG:style_emoticons/default/smile.gif) Если будут вопросы - напишу.

Цитата(Ruw @ 02.03.2019, 00:52) *
Вы хотите делать столкир на 4a engine что ли?

Я не ставил себе такой цели. Ресурсы из сталкера использую для тестов просто потому-что мне так удобно, форматы все давно знакомы.
Цитата(kiperenok @ 02.03.2019, 01:41) *
Лучше покажите как выглядит локация между сезонами игры, когда мы едем в Авроре. А то один придурок на Ютубе сказал, что она закольцована и мы едем по кругу.
Мое мнение, что это просто 1 кусок локации который подставляется раз за разом.

(IMG:https://images.gameru.net/thumb/3dff26e24de9548.jpg)
Как-то так.
Сам поезд статический, поэтому он открывается. Пейзажи не статические, их не видно. То есть уже понятно что поезд никуда не едет, это мир едет вокруг поезда. (IMG:style_emoticons/default/biggrin.gif)
Модели которые используются для видов за окном можно посмотреть например в content\meshes\static\12_autumn. Вроде рельсы прямые там, хотя есть и стрелки.

Цитата(Cartoteka @ 02.03.2019, 13:18) *
А я что написал?

Открыть уронень из Last Light этим ЛЕ не получится. Только оригинальный 2033 и исход.
Перейти в начало страницы
 
 
 Cartoteka
сообщение 02.03.2019, 14:57
Сообщение #15


Мастер Игры
************

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



Цитата(Modera @ 02.03.2019, 14:50) *
Открыть уронень из Last Light этим ЛЕ не получится. Только оригинальный 2033 и исход.



Понял. В будущем под redux и LL будешь настраивать?
Перейти в начало страницы
 
 
 Modera
сообщение 02.03.2019, 15:10
Сообщение #16


Игровой Бог
**********************

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



Cartoteka, в обозримом будущем не собираюсь.
Перейти в начало страницы
 
 
 RedMagic
сообщение 02.03.2019, 15:27
Сообщение #17


Высший Игровой Бог
************************

Группа: Супермодератор
Сообщений: 12242
Регистрация: 05.11.2009
Пользователь №: 12882



kiperenok, не придирайся к словам. Как я понял на ютубе сказали "looped / cycled" что может переводится как "закольцованный / зацикленный". Это просто речевой оборот и он не означает что поезд буквально катается по бесконечной окружности и постоянно поворачивает в одну сторону.

Цитата(buffy @ 02.03.2019, 13:14) *
autistic, возможно, бредятина, но у меня была ещё теория, что не Аврора движется, а окружение вокруг неё.

Цитата(autistic @ 02.03.2019, 14:09) *
И то и другое справедливо, и на производительность никак не влияет т.к. кол-во DIP'ов одинаковое будет

На самом деле на этот вопрос нет однозначного ответа. Вполне возможно что двигается мир вокруг, а не поезд из-за ряда возможных багов.

Вот смотрите.

Отсчет координат начинается с 0,0,0. Если поезд будет двигаться очень долгое время то его координаты станут слишком большие. А перед ним надо еще составную часть локации спавнить (и удалять часть локации сзади, чтобы не было утечек памяти).
- Во-первых - есть вероятность переполнения/выхода за пределы значений координат (если это float, то 3.40282347E+38).
- Во-вторых - чем дальше от центра, тем ниже точность. При слишком больших значениях координат точность спавна снижается настолько, что объекты могут дергаться/спавнится не там где надо. Это происходит из-за погрешностей чисел с плавающей запятой при большом отдалении от начала координат. Этот баг наиболее заметен в майнкрафте, в далеких землях:

(IMG:https://gamepedia.cursecdn.com/minecraft_ru_gamepedia/7/7d/Farlandsblockmovement.gif)

Хороший программист должен всегда это предусматривать (конечно никто не будет держать игру открытой месяцами, чтобы произошло переполнение, но надо всегда все делать правильно. Или хотя бы пытаться). Есть два возможных решения:
- После отдаления поезда на некоторое расстояние от начала координат респавнить его на начальных координатах 0,0,0 и продолжать движение как и раньше. Проблема в том чтобы сделать респавн/сброс поезда и мира незаметным для игрока (но это реально).
- Можно оставить поезд в 0,0,0 и двигать весь мир вокруг него. Если в мире нет никаких сложных вещей которым могут помешать постоянное движение (та же AI сетка и NPC), то проще двигать сам мир. А поезд будет постоянно находится на одном и том же месте и "ездить" неограниченное кол-во времени.

Спасибо что прослушали краткий курс по геймдеву на тему "бесконечная генерация уровня" 😋

PS:

Цитата(autistic @ 02.03.2019, 14:09) *
Это примерно как дилемма при выборе с какого конца яичную скорлупу чистить

С тупого. Там есть воздушная прослойка и разбивать скорлупу в этом месте легче.
Перейти в начало страницы
 
 
 kiperenok
сообщение 02.03.2019, 16:42
Сообщение #18


Игровой Эксперт
***************

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



Цитата(RedMagic @ 02.03.2019, 15:27) *
kiperenok, не придирайся к словам. Как я понял на ютубе сказали "looped / cycled" что может переводится как "закольцованный / зацикленный". Это просто речевой оборот и он не означает что поезд буквально катается по бесконечной окружности и постоянно поворачивает в одну сторону.

Я смотрел русского "блохера" и он сказал "Аврора движется по кругу" (IMG:style_emoticons/default/dry.gif)
Перейти в начало страницы
 
 
 slik
сообщение 03.03.2019, 23:29
Сообщение #19


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

Группа: Участник
Сообщений: 18
Регистрация: 02.11.2010
Из: /home/slik
Пользователь №: 14193



Цитата(buffy @ 02.03.2019, 12:14) *
надо и геометрию, и навигационную карту, и неписей двигать + ещё просчитывать навигацию на этой самой карте

Не обязательно. В юнити пользовался следующей техникой для движущегося корабля: navmesh и агенты где-то спрятаны под водой/землей, реальные же модели NPC есть частью иерархии корабля и двигаются с ним. И трюк в том, чтобы скопировать локальные координаты агента в локальные координаты модели.
Перейти в начало страницы
 
 
 Scav
сообщение 04.03.2019, 00:46
Сообщение #20


Продвинутый геймер
********

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



Цитата(Modera @ 02.03.2019, 14:50) *
Сам поезд статический, поэтому он открывается. Пейзажи не статические, их не видно. То есть уже понятно что поезд никуда не едет, это мир едет вокруг поезда.

Причем этот подход стар, как мир. Использовался еще, помнится, в Counter-Strike: Condition Zero в одной из миссий за русский спецназ. В финале миссии мы отстреливаемся от вражеского вертолета, находясь в кузове движущегося грузовика. Технически грузовик неподвижен, а дорога и скалы по бокам состоят из примыкающих друг к другу сегментов, движущихся против условного хода машины. Каждый сегмент, достигая конца пути, телепортируется в начало, и так до бесконечности. Палевная телепортация скрыта туманом.
Перейти в начало страницы
 
 
 
 

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

 

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