Программы
Чтобы добиться качественного портирования, я понял для себя, что придется много ручной работы, в принципе, как и у любого модмейкера. Но лишь разница в том, что мне приходится абстрагироваться от оригинального движка X-Ray почти во всём.
Можно было бы прикрутить ядро X-Ray на C++ к Godot, благо поддержка этого языка программирования идеально встраиваемая. Пример есть даже на другие движки, показывающий, как подобное делают.
Unreal Engine с его STALKER on UE — прямо почти идеальный порт, но автор забросил его и дальше беты не ушёл.
Unity проект с его многочисленными попытками портировать игру, примечательно на мобильные устройства. Там всё вразнобой: кто-то так же городит ресурсы под систему Unity, кто использует отдельный самописный инструментарий для загрузки моделей .ogf и т.д., а кто-то — полноценное ядро X-ray как с Unreal.
Есть одно огромное "но": я не шарю за C++. Я знаю его базово и плоско, нежели C#. Поэтому идея лезть туда — фиговая. Да и свою кодовую базу можно выработать, написав код без чужой лицензии или нарушая её.
Поэтому у меня есть программы, с которыми я начал тесно работать, а именно:
- Blender и плагин blender-xray — для работы с 3D-моделями/данными (.ogf), материалами (лишь куски данных), камерой, скелетом / анимацией (.omf) и уровнями (.level). Через него я, кстати, работаю с текстурами ещё.
- Paint.net — для основной работы с текстурами, формата .dds. В нём быстрее, чем в Krita / Photoshop, хотя я и работать в них не брезгую.
- Само собой, Godot Engine — C++ и Lua, меняем на C# и GDScript.
- Visual Studio Code / Notepad++ — для простых текстовых документов.
- X-Ray SDK — для справки, на глаз я не буду стараться что-то делать.
- Исходный код X-Ray Engine — как и с пунктом 5, чисто для справки.
- Далее — разного рода софт для ресурсов.
Звуки
Оригинальные .ogg файлы содержат не только сам звук, но и данные для самой игры, а именно комментарии (это всё проходит через X-Ray SDK). Пример комментария .ogg файла: 1\300\0,7\10\5 (где 1 — минимальное расстояние, 300 — максимальное расстояние, 0,7 — громкость, 10 — слышимость НПС, 5 — тип звука).
В данном случае Godot не нуждается в комментариях, так как он не способен работать с ними. Это можно в будущем вынести в отдельный файл со звуком (подобное, кстати, сделано бывшими разработчиками "Сталкера" в серии игр Metro 2033 и движке 4A Engine), но для начала проще переконвертировать из .ogg в .ogg. На это способен любой онлайн-конвертер. Зачем? Чтобы избежать предупреждений, которые могут плохо сказаться на дальнейшей отладке. Количество .ogg файлов равнозначно количеству ошибок из-за комментариев.
Видео
Изначально видео прошлых частей хранится в формате .ogm.
OGM — это общий контейнер для файлов .ogv (видео) и .ogg (аудио). Вы можете транслировать аудио, видео и субтитры в компактном файловом пакете, не нарушая целостность файлов. Примечательно, что в самих файлах игры есть только видео, больше ничего там нет.
Godot Engine не переваривает OGM-контейнер, но хорошо работает с .ogv (видео) и .ogg (аудио). Самое простое решение — просто переименовать расширение .ogm в .ogv, и видео будет полностью работать.
В переиздании Enhanced Edition сами видео имеют улучшение, а именно ИИ-апскейл до 4K разрешения, хотя, кстати, это сомнительное улучшение. Плюсом ещё также есть старые в ресурсах видео в формате .ogv (и не только). А вот тут я не понимаю, почему они так сделали: они буквально раздувают сами себе ресурсы игры, которые ещё и не используются. Но это не важно.
Для игры уже используется не только другой внутренний кодек для воспроизведения, но и формат .mp4, видимо в целях кроссплатформы, ведь EE версия вышла на консолях ещё.
Godot в принципе такое не переваривает, и тут опять на помощь, как со звуком, приходит любой онлайн-конвертер из .mp4 в .ogv. Самое главное забыл: выбрать качественное сжатие без потерь и прочие очевидные настройки для конвертации, чтобы не убить видео/аудио.
Заключение
Здесь указаны не все ресурсы, которые используются в игре; некоторые из них не общедоступны и работают исключительно из X-Ray Engine и самой игры. В дальнейшем я разберу их в отдельных темах. На этом, пожалуй, всё. Увидимся в следующей статье.