Skip to content

Engine ru RU

PRXPHET edited this page May 27, 2025 · 1 revision

Основные изменения

  • Полностью рабочий x64
  • Обновлён LuaJIT до актуальной версии 2.1
  • Обновлён Luabind
  • Все модули движка линкуются статически, поэтому оставлен только DX11 рендер
  • Интегрирован аллокатор памяти общего назначения mimalloc.
  • Добавлен внутриигровой редактор погоды и звуковых зон на базе ImGui - включается в игре по двойному нажатию Shift + F10.
  • Перенесена большая часть правок оригинального OGSE, X-Ray Extensions, а также из X-Ray Engine by Alpet & KD.
  • Вырезано огромное кол-во устаревшего и ненужного API, в т.ч. сетевого и мультиплеерного.
  • Движок поддерживает ogf-модели, экспортированные через SDK 0.7
  • Сделано автоопределение RU и WW архивов игры.
  • Работает режим игры от третьего лица, чтобы можно было стрелять по направлению камеры, курсор прицела не скрывается, фонарик светит куда надо и тп.
  • Адаптирована консоль из Anomaly с подсказками при вводе команд, а также с подсказками по возможным значениям этих команд.

Рендер

  • Добавлены отладочные консольные команды для отключения отображения или обработки различных объектов:
r2_disable_hom -- отключить обработку HOM-ов. Можно использовать на кривых локациях, в которых часто наблюдаются баги из-за них.
r2_disable_particles -- отключить отображение партиклов.
r2_disable_dynamic -- отключить отображение динамических объектов.
r2_disable_light -- отключить отображение света от лампочек.
r2_disable_sectors -- отключить обработку секторов. Можно использовать на кривых локациях, в которых часто наблюдаются баги из-за них.

r2_disable_static_normal -- отключить отображение статических объектов
r2_disable_static_progressive
r2_disable_static_lod -- отключить отображение LODов
r2_disable_static_tree -- отключить отображение деревьев
r2_disable_static_tree_progressive

Многопоточность

  • Для удобной работы с потоками и асинхронными задачами была интегрирована библиотека TaskThreadPool.
  • С помощью вышеупомянутой библиотеки были реализованы асинхронные расчёты дождя r_mt_rain, солнца r_mt_sun, партиклов r_mt_particles и света r_mt_lights.
  • Добавлена многопоточная загрузка текстур r_mt_texload.
  • D3D11 Deferred Contexts для каскадов теней

Графика

  • Добавлены следующие виды сглаживания:
    • SMAA
    • TAA
    • AMD NativeAA на базе AMD FSR
    • Nvidia DLAA на базе Nvidia DLSS
  • Добавлен Contrast Adaptive Sharpening (LVutner)
  • Адаптирован Screen Space Shaders addon.
    • Отражения на воде (SSR)
    • Лужи на террейне
    • Parallax Occlusion Mapping для стен
    • Оптимизированные тени от травы
    • DOF
    • Интерактивная трава, реагирующая на различные действия (ходьба НПС, оружие, взрывы, монстры, аномалии и т.п.)
    • Bloom
    • Различные исправления
  • Адаптирован ENHANCED SHADERS (PBR) + Enhanced Color Grading
  • Добавлены следующие виды Ambient Occlusion: SSDO (Screen Space Shaders), GTAO (Doenitz).
  • Добавлены новые типы солнечных лучей: Volumetric, Screen Space (OGSE) и Screen Space (mrmnwar), комбинированные виды (Volumetric + Screen Space).
  • Реализованы шейдерные флары от солнца. Шейдерные флары учитывают цвет солнца из настроек погоды. Включаются командой r_lens_flare.
  • Ввиду наличия шейдерных флар, текстурные флары были отключены.

Звук

  • Звуковой движок OpenAL 3D на базе библиотеки OpenAL Soft.
  • Поддержка EFX (OpenAL).
  • Поддержка стерео звуков.
  • Поддержка звуков с частотой дискретизации выше 44100 Гц.
  • Добавлен редактор для звуковых зон (запускается как и редактор погоды по SHIFT + F10) После редактирования настройки зон сохранятся в текстовом формате senvironment.ltx и после этого двиг будет читать только этот конфиг вместо senvironment.xr. Просто распаковать senvironment.xr можно, активировав консольную команду senvironment_xr_export.
  • Добавлена консольная команда dbg_lalib_dump для дампа в лог текущего ELightAnimLibrary. Редачить его в тексте смысла нету - проще в SDK, но каждый раз искать, что там - напряжно.

Библиотеки, интеграции

  • Поддержка Discord Rich Presence.
  • Добавлена поддержка отладки рендера с помощью RenderDoc.
  • Добавлена поддержка профилирования производительности движка и скриптов с помощью Tracy.
  • Из скриптов теперь можно вызвать __debugbreak(), чтобы можно было отладить скрипт с просмотром переменных и т. п. в Visual Studio, используя LuaDkmDebugger.

Текстуры

  • Использование устаревших D3DX библиотек заменено на DirectXTex, DirectXMesh, DirectXMath. Благодаря этому движок теперь поддерживает современные форматы сжатия текстур типа BC7 и не требует наличия в системе d3dx*.dll.
  • Возвращена поддержка textures.ltx, включая настройки parallax в стиле OGSE. Отключаемо дефайном USE_TEXTURES_LTX через конфиг сборки движка.
  • Теперь можно использовать несколько textures.ltx. Например, textures1.ltx, textures2.ltx, ... . Они будут грузиться по возрастанию и дополнять друг друга. Можно для всяких текстурных паков это использовать.
  • Добавлена поддержка ЗП формата для файлов описания текстур texture_desc. Они удобнее, т.к. можно кучу текстур описать в одном файле. Также добавлена автозагрузка описаний по пути ui\textures_descr\*.xml

Шейдеры

  • Добавлена поддержка кастомных шейдерных параметров без пересборки движка. Их можно использовать для написания простых шейдеров. Добавить их можно в секцию [shader_params_export] в файле external.ltx:
[shader_params_export]
shader_param_1
shader_param_2
shader_param_3

Параметр с названием, добавленным в эту секцию, будет экспортирован в шейдеры для чтения, а также будет добавлен в виде консольной команды с таким же названием для самостоятельного изменения значений.

  • Шейдеркэш отключен. От него больше проблем, чем пользы.
  • Добавлено кэширование ui_shader для ускорения работы UI.
  • Экспорт в шейдеры fog_params.y --> fog_near, fog_params.z --> fog_far. Может когда-то пригодятся.
  • Добавлена поддержка шейдерных тепловизоров на базе аддона Heatvision со своими доработками.
  • Добавлена поддержка шейдерных ПНВ на базе аддона Beef's Shader Based NVGs со своими доработками.

Спавн, бинарные файлы

  • Добавлена поддержка Anomaly-style распакованных партиклов. Добавляем в fsgame.ltx:
$game_particles$        = true|     false|  $game_data$|        particles\

Пишем в консоли particles_export - двиг распакует все загруженные партиклы в текстовый формат. После этого двиг будет всегда читать распакованные партиклы из этой папки вместо файлов particles*.xr, если эта папка не пуста. Можно после редактирования распакованных партиклов, используя конс. команду particles_import, упаковать их обратно в один particles_cop.xr файл в ЗП-формате (это важно, партиклы в ЗП-формате должны быть названы именно так, т.к. имеют отличия от ТЧ-формата партиклов и читаются немного по-другому). Стоит заметить, что запуск двига с распакованными партиклами происходит немного дольше.

  • Добавлена поддержка распаковки shaders.xr. Чтобы распаковать, в консоли должна быть активирована команда shaders_xr_export. После запуска двига, двиг распакует этот файл в текстовый shaders.ltx и после этого будет читать только этот конфиг вместо .xr файлов. Распакуется как shaders.xr, так и shaders_cop.xr (ЗП-вариант, если он есть).
  • Добавлена поддержка спавн файлов со встроенным гейм графом, как в ЗП. Собрать спавн в таком виде можно через универсальные компиляторы с дополнительным ключом -insert_graph. Такие спавны не требуют глобального game.graph и локальных level.gct, level.graph. При отсутствии данного чанка (с графами) в файле спавна, игра будет загружать game.graph и спавн, как раньше.
  • Добавлена поддержка чтения patrol_path из ltx файлов напрямую, вместо all.spawn. Формат файлов такой же, как выдает ACDC при распаковке. Для подключения, добавить куда-нибудь в system.ltx:
[engine_custom_spawn]
waypoints_file = <name_of_file.ltx> ; путь к файлу в $game_config$

При загрузке, пути из файла будут заменять пути из all.spawn с таким же именем. Можно вообще убрать пути из своего all.spawn и все перенести в ltx файлы, для удобства. Если переопределить путь пустой секцией, то этот путь будет удаляться.

Фиксы

  • HQ-Geometry fix от Shoker. Модели теперь выглядят более качественно.
  • Исправлена работа консольных команд r__tf_mipbias и r__tf_aniso - теперь они работают правильно, их значения не сбрасываются.
  • Фикс переполнения rsDVB_Size - он увеличен.
  • Скрины будут в формате png по умолчанию. Для скринов в формате jpg оставлен ключ запуска -ss_jpg.
  • Прозрачные элементы на png скриншотах теперь отображаются корректно.
  • Работают скриншоты в оконном режиме.
  • Фикс отображения на худе прозрачных поверхностей.
  • Добавлен ограничитель FPS от Shoker. Режимы ограничения переключаются консольной командой r_fps_lock (nofpslock, fpslock60, fpslock120, fpslock144, fpslock240).
  • Фикс растянутого неба.
  • Изменен диапазон значений для r__geometry_lod: от 0.5 до 3.
  • Расширенная регулировка дальности, плотности и высоты травы.
r__detail_scale ;регулирует высоту травы.
r__no_scale_on_fade ; вроде как включает и выключает регулировку высоты травы для нее, когда она ресуется в меньшем размере на расстоянии, прежде чем перестать рисоваться.
  • Расширена регулировка плотности травы. Теперь диапазон r__detail_density: [0.06, 1.0].
  • Включен фикс виртуального радиуса ламп.
  • Включен фикс "мигающих поинт-ламп".
  • Убрана обработка секции [reduce_lod_texture_list].
  • Починен R_occlusion - мерцание теней от источников света на худе, предупреждения по переполнению RENDER [Warning]: Too many occlusion queries were issued(>1536)!!! и прочие глюки этой системы.
  • Работает levelmap / cubemap screenshot ( #298 )
  • Починен и теперь работает дебаг-рендер на DX11 (для g_zones_dbg, g_vertex_dbg и тп.)
  • Добавлен шейдерный эффект для шлемов. Добавлены команды r2_visor_refl и r2_visor_refl_control (шейдер включается при включении этих 2х команд). Также добавлены команды r2_visor_refl_intensity - для настройки силы эффекта и r2_visor_refl_radius - соответственно для изменения радиуса эффекта. По умолчанию шейдер выключен консольными командами поскольку для нормальной его работы нужен скрипт который будет отслеживать надетый костюм и уже в зависимости от этого включать\выключать шейдер.
  • Добавлен новый Raindrops эффект (подходит для шлемов). Настраивается консольными командами:
r2_rain_drops -- глобальная команда для включения эффекта через меню.
r2_rain_drops_control -- команда для включения эффекта из скриптов (типа сняли шлем - выключили, одели - включили. При переключении этой командой эффект перезапускается сначала.)
r2_rain_drops_intensity -- Интенсивность эффекта. Чем больше - тем более "ярко выраженнее" будут капли.
r2_rain_drops_speed -- Скорость стекания капель.
  • Консольная команда ai_use_torch_dynamic_lights будет управлять объемным светом фонарей нпс, если он включен для них. Ранее эта команда не работала вообще.
  • Фикс тумана для шейдера models\transparent
  • Добавлен специальный шейдер для коллиматоров models_lfo_light_dot_weapons
  • Тесселяция теперь может работать на худовых моделях
  • Скрины для сохранений делаются в более высоком качестве

Прочие изменения

  • Добавлена поддержка полупрозрачного cплэша в формате png. Можно заменить сплэш, положив в папку с движком splash.png. Разрешение сплэша - 804х538.
  • С ключом -multi_instances можно отключить ограничение на запуск нескольких движков одновременно
  • Добавлены новые консольные команды:
r__smap_size -- настройка разрешения карт теней.
r__actor_shadow -- включить тень от ГГ.
g_console_show_always -- для рендеринга лога консоли всегда
rs_always_active -- включить режим, в котором игра не будет вставать на паузу при переключении на другие окна.
g_zones_dbg -- Включить визуальную отладку рестрикторов, аномалий, переходов, лестниц и прочих зон игре.
g_vertex_dbg -- Включить визуальную отладку АИ-сетки в игре.
g_crosshair_dbg -- Принудительный показ перекрестья прицела, для настройки прицеливания, например.
g_music_tracks -- Включить музыкальный эмбиент.
g_ammunition_on_belt -- Включить использование патронов только с пояса
g_spawn <section_name> -- Спавн предмета по имени секции на землю
g_spawn_to_inventory <section_name> -- Спавн предмета по имени секции в инвентарь актора
hud_draw -- Показать/скрыть худ.
hud_adjust_mode -- Настройка прицеливания для оружия. Вот видео, как ей пользоваться: https://www.youtube.com/watch?v=kIcXzWVR2xI
show_wnd_rect -- Визуальная отладка UI в игре
show_wnd_rect_all -- Визуальная отладка UI в игре
show_wnd_rect_names -- Показывать имена UI статиков в отладке
jump_to_level <level_name> -- быстрый переход на нужный уровень
time_factor -- Команда для перемотки времени. Заоблачные цифры выставлять не рекомендую, движок может заклинить
hud_crosshair_build -- включить круглый курсор, как в билдах.
rs_hw_stats --показ статистики нагрузки CPU
set_weather --команда для изменения погоды
input_exclusive_mode --команда для настройки режима захвата клавиатуры/мыши. По умолчанию должно быть включено. Выключать только тем, кому надо чтобы после запуска движка не блокировались мультимедийные клавиши на клавиатуре. Но при отключении может возникнуть множество различных проблем на системах с несколькими мониторами и не только из-за недозахвата управления. Здесь, в отличие от ЗП, значение этой команды сохраняется в user.ltx.
g_camera_collision -- Вкл/выкл псевдо-коллизию камеры
g_font_scale_x -- Ширина шрифтов
g_font_scale_y -- Высота шрифтов
dbg_draw_skeleton -- Визуальная отладка скелетов объектов в игре
dbg_string_table_error_msg -- Отладочная команда для вывода непереведённых строк в лог
r_font_shadows -- Вкл/выкл тени от шрифтов
particle_update_mod -- Управление плавностью партиклов
Clone this wiki locally