Skip to content
PRXPHET edited this page May 27, 2025 · 1 revision

Major changes

  • Fully working x64
  • Updated LuaJIT to actual 2.1 version.
  • Updated Luabind
  • All engine modules are statically linked, so only the DX11 renderer is retained.
  • Integrated general-purpose memory allocator mimalloc.
  • Added in-game weather and sound zone editor based on ImGui. Can be activated in the game by double-clicking Shift + F10.
  • Carried over most of the changes from the original OGSE, X-Ray Extensions, and from the X-Ray Engine by Alpet & KD.
  • Cut out a huge amount of obsolete and unnecessary API, including network and multiplayer ones.
  • Engine supports ogf-models exported via SDK 0.7
  • Autodetection of RU and WW game archives is made.
  • Third-person game mode works, so you can shoot in the direction of the camera, the aiming cursor is not hidden, flashlight shines where you need it, etc.
  • Adapted console from Anomaly with hints when entering commands, as well as with hints on possible values of these commands.

Render

  • Added debug console commands to disable display or processing of various objects:
r2_disable_hom -- disable processing of HOMs. Can be used on curved locations that often have bugs due to them.
r2_disable_particles -- disable the display of particles.
r2_disable_dynamic -- disable display of dynamic objects.
r2_disable_light -- disable display of light from bulbs.
r2_disable_sectors -- disable sector processing. Can be used on curved locations that have frequent bugs due to them.

r2_disable_static_normal -- disable display of static objects
r2_disable_static_progressive
r2_disable_static_lod -- disable display of LODs
r2_disable_static_tree -- disable display of trees
r2_disable_static_tree_progressive

Multithreading

  • The library TaskThreadPool was integrated for convenient work with threads and asynchronous tasks.
  • Asynchronous calculations of rain r_mt_rain, sun r_mt_sun, particles r_mt_particles and light r_mt_lights were implemented using the above library.
  • Added multithreaded texture loading r_mt_texload.
  • D3D11 Deferred Contexts for shadow cascades

Graphics

  • The following types of anti-aliasing have been added:
    • SMAA TAA AMD NativeAA based on AMD FSR Nvidia DLAA based on Nvidia DLSS
  • Added Contrast Adaptive Sharpening (LVutner)
  • Adapted Screen Space Shaders addon.
    • Reflections on water (SSR)
    • Puddles on the terrane
    • Parallax Occlusion Mapping for walls
    • Optimized grass shadows
    • DOF
    • Interactive grass that reacts to different actions (NPU walking, weapons, explosions, monsters, anomalies, etc.).
    • Bloom
    • Various fixes
  • Adapted ENHANCED SHADERS (PBR) + Enhanced Color Grading
  • Added the following types of Ambient Occlusion: SSDO (Screen Space Shaders), GTAO (Doenitz). **New Sunlight types added: Volumetric, Screen Space (OGSE) and Screen Space (mrmnwar), combined types (Volumetric + Screen Space).
  • Shader flares from the sun have been implemented. Shader flars take into account the color of the sun from the weather settings. They can be enabled with r_lens_flare command.
  • Due to the presence of shader flares, texture flares have been disabled.

Sound

  • OpenAL 3D sound engine based on OpenAL Soft library.
  • Support EFX (OpenAL).
  • Support for stereo sounds.
  • Support for sounds with sampling rate higher than 44100 Hz.
  • Added editor for sound zones (starts as weather editor by SHIFT + F10). After editing the zone settings will be saved in the text format senvironment.ltx and after that the engine will read only this config instead of senvironment.xr. You can simply unpack senvironment.xr by activating the senvironment_xr_export console command.
  • Added dbg_lalib_dump console command to dump the current ELightAnimLibrary to the log. There is no sense to edit it in the text - it is easier in SDK, but every time to look for what is there - tense.

Libraries, integrations

  • Support for Discord Rich Presence.
  • Added support for render debugging with RenderDoc.
  • Added support for engine and script performance profiling with Tracy.
  • __debugbreak() can now be called from scripts, so you can debug a script with variable lookup, etc. in Visual Studio using LuaDkmDebugger.

Textures

  • The use of obsolete D3DX libraries has been replaced by DirectXTex, DirectXMesh, DirectXMath. Thanks to this the engine now supports modern texture compression formats like BC7 and does not require d3dx*.dll to be present on the system.
  • Support for textures.ltx is back, including OGSE-style parallax settings. Disabled by defining USE_TEXTURES_LTX through the engine build config.
  • Multiple textures.ltx can now be used. For example, textures1.ltx, textures2.ltx, .... . They will be loaded in ascending order and complement each other. You can use it for all sorts of texture packs.
  • Added support for CoP format for texture description files texture_desc. They are more convenient, because you can describe a lot of textures in one file. Also added autoloading of descriptions in the path ui\textures_descr\*.xml.

Shaders

  • Added support of custom shader parameters without rebuilding the engine. They can be used to write simple shaders. You can add them to the [shader_params_export] section in the external.ltx file:
[shader_params_export].
shader_param_1
shader_param_2
shader_param_3

A parameter with the name added to this section will be exported to shaders for reading, and will also be added as a console command with the same name to change values independently.

  • Shader cache is disabled. It causes more problems than benefits.
  • Added ui_shader caching to speed up the UI.
  • Export to shaders fog_params.y --> fog_near, fog_params.z --> fog_far. May be useful at some point.
  • Added support for shader-based thermal vision based on the Heatvision addon with its own tweaks.
  • Added support for shader-based NVGs based on Beef's Shader Based NVGs addon with its own improvements.

Spawn, binary files

  • Added support for Anomaly-style unpacked partials. Add to fsgame.ltx:
$game_particles$ = true| false| $game_data$| particles.

Write particles_export in the console - the engine will unpack all loaded particles into text format. After that the engine will always read unpacked partials from this folder instead of particles*.xr files, if this folder is not empty. It is possible after editing the unpacked partials using the particles_import command to pack them back into one particles_cop.xr file in CoP format (it is important, partials in CoP format should be named exactly as they have differences from PM-format partials and are read a little differently). It should be noted that it takes a little longer to start the engine with unpacked partikles.

  • Added support for unpacking shaders.xr. To unpack, the shaders_xr_export command must be activated in the console. After running the engine, the engine will unpack this file into a text shaders.ltx and then read only this config instead of .xr files. Both shaders.xr and shaders_cop.xr will be unpacked (CoP variant, if any).
  • Added support for spawn files with built-in gamegraph as in CoP. Such spawns can be built via universal compilers with additional key -insert_graph. Such spawns do not require global game.graph and local level.gct, level.graph. In the absence of this chunk (with graphs) in the spawn file, the game will load game.graph and spawn as before.
  • Added support for reading patrol_path from ltx files directly instead of all.spawn. The format of the files is the same as ACDC outputs when unpacking. To connect, add somewhere in system.ltx:
[engine_custom_spawn]
waypoints_file = <name_of_file.ltx> ; path to file in $game_config$

When loading, the paths from the file will replace the paths from all.spawn with the same name. You can remove the paths from your all.spawn and move everything to ltx files, for convenience. If you override the path with an empty section, this path will be deleted.

Fixes

  • HQ-Geometry fix from Shoker. Models now look better.
  • Fixed console commands r__tf_mipbias and r__tf_aniso - now they work correctly, their values are not reset.
  • Fix rsDVB_Size overflow - it is increased.
  • Screenshots will be in png format by default. The -ss_jpg startup key has been left for jpg format screenshots.
  • Transparent elements on png screenshots are now displayed correctly.
  • Screenshots work in windowed mode.
  • Fix display of transparent surfaces on skin.
  • Added FPS limiter from Shoker. Limit modes are switched by console command r_fps_lock (nofpslock, fpslock60, fpslock120, fpslock144, fpslock240).
  • Stretched sky fix.
  • Changed range of values for r__geometry_lod: from 0.5 to 3.
  • Extended adjustment of grass range, density and height.
r__detail_scale ;adjusts grass height.
r__no_scale_on_fade ; I guess it turns grass height adjustment on and off for it when it is drawn at a smaller size at a distance, before it stops being drawn.
  • Grass density adjustment has been expanded. Now the range of r__detail_density: [0.06, 1.0].
  • Included virtual radius of lamps fix.
  • Included blinking point-lamps fix.
  • Removed processing of [reduce_lod_texture_texture_list] section.
  • Fixed R_occlusion - flickering shadows from light sources on skin, overflow warnings RENDER [Warning]: Too many occlusion queries were issued(>1536)!!! and other glitches of this system.
  • Levelmap / cubemap screenshot works ( #298 )
  • Fixed and now working debug renderer on DX11 (for g_zones_dbg, g_vertex_dbg, etc.)
  • Added shader effect for helmets. Added r2_visor_refl and r2_visor_refl_control commands (shader is enabled when these 2 commands are enabled). Also added commands r2_visor_refl_intensity - to adjust the strength of the effect and r2_visor_refl_radius - respectively to change the radius of the effect. By default the shader is turned off by console commands, because for its normal operation you need a script that will track the costume worn and depending on this turn on/off the shader.
  • Added new Raindrops effect (suitable for helmets). Customizable with console commands:
r2_rain_drops -- global command to enable the effect from the menu.
r2_rain_drops_control -- command to enable the effect from scripts (like helmet off - off, helmet on - on. When switching with this command, the effect restarts first).
r2_rain_drops_intensity -- Intensity of the effect. The more - the more “pronounced” the drops will be.
r2_rain_drops_speed -- The speed at which the drops will flow.
  • The ai_use_torch_dynamic_lights console command will control the volumetric light of npcs' flashlights, if it is enabled for them. Previously this command did not work at all.
  • Fog fix for models\transparent shader.
  • Added special shader for collimators models_lfo_light_dot_weapons.
  • Tessellation can now work on skinny models
  • Screenshots for saves are made in higher quality

Other changes

  • Added support for semi-transparent splash in png format. You can replace the splash by putting splash.png in the engine folder. The resolution of the splash is 804 x 538.
  • With the -multi_instances key you can disable the restriction to run multiple engines at the same time
  • New console commands added:
r__smap_size -- set the resolution of shadow maps.
r__actor_shadow -- enable the shadow of the actor.
g_console_show_always -- to render the console log always
rs_always_active -- enable a mode where the game will not pause when switching to other windows.
g_zones_dbg -- Enable visual debugging of restrictors, anomalies, transitions, stairs, and other areas of the game.
g_vertex_dbg -- Enable visual debugging of the game's AI grid.
g_crosshair_dbg -- Force display of crosshair crosshairs, to customize aiming, for example.
g_music_tracks -- Enable ambient music.
g_ammunition_on_belt -- Enable use of ammo only from the belt
g_spawn <section_name> -- Spawn an item by section name to the ground
g_spawn_to_inventory <section_name> -- Spawn item by section name into actor's inventory
hud_draw -- Show/hide hud.
hud_adjust_mode -- Customize aiming for weapons. Here's a video on how to use it: https://www.youtube.com/watch?v=kIcXzWVR2xI
show_wnd_rect -- Visual debugging of UI in game
show_wnd_rect_all -- Visual UI debugging in game
show_wnd_rect_names -- Show UI statics names in debugging
jump_to_level <level_name> -- Quickly jump to the desired level
time_factor -- Command to rewind time. I do not recommend to set exorbitant numbers, the engine may jam.
hud_crosshair_build -- enable round cursor, as in builds.
rs_hw_stats -- show CPU load statistics
set_weather --command to change the weather
input_exclusive_mode --command to set keyboard/mouse capture mode. It should be on by default. Disable only for those who need to keep the multimedia keys on the keyboard locked after the engine starts. But when disabling can cause a lot of different problems on systems with multiple monitors and not only because of under-capture of control. Here, unlike CoP, the value of this command is saved in user.ltx.
g_camera_collision -- Enable/disable pseudo-collision of the camera
g_font_scale_x -- Width of fonts
g_font_scale_y -- Font height
dbg_draw_skeleton -- Visual debugging of object skeletons in the game
dbg_string_table_error_msg -- Debugging command to output untranslated strings to the log
r_font_shadows -- On/off font shadows
particle_update_mod -- Controls smoothness of particles
Clone this wiki locally