#Unreal Engine 2 compatibility

36 messages · Page 1 of 1 (latest)

odd vine
#

Hi, I'm trying to get RTX Remix to run on Lineage 2 Chronicle 1, it uses an early version of Unreal Engine 2 with DirectX 8 renderer.

I'm trying with the latest Remix 0.6.0 release, but no luck, I get a D3DERR_DEVICELOST error from Unreal Engine (see attached image).

What I have tested and tried:

  • d3d8to9 included wrapper works fine alone.
  • Other wrappers such as dxwrapper, ENBSeries, DXVK standalone, etc. works fine alone.
  • Other versions of remix.
  • Build from source.
  • Set resolution to 640x480 (same as initial buffer) at game Option.ini as the engine error appears to be related to a resolution change after initialization.

No luck, any ideas?

I don't see much relevant information from logs.

L2.log generated by Unreal Engine 2.

...
Log: Opened viewport
Log: Enter SetRes: 640x480 Fullscreen 0
Log: Using back-buffer format 22(32-bit)
Log: Using depth-buffer format 77(32-bit)
Log: Creating device
Init: D3D Driver: CreateDevice: will use hardware transform and lighting.
Init: D3D Driver: CreateDevice: will use hardware vertex processing
Init: D3D Driver: Local Device Memory = 3145728 KBytes
Init: D3D Driver: Nonlocal Device Memory = 1048512 KBytes
Log: Enter SetRes: 2560x1080 Fullscreen 0
Log: Using back-buffer format 22(32-bit)
Log: Using depth-buffer format 75(32-bit)
Log: Creating device
Init: CreateDevice failed (D3DERR_DEVICELOST)
...

L2_d3d9.log generated by VXDK Remix.

...
[20:26:51.444] info:  D3D9DeviceEx::ResetSwapChain:
[20:26:51.444] info:    Requested Presentation Parameters
[20:26:51.444] info:      - Width:              2560
[20:26:51.444] info:      - Height:             1080
[20:26:51.444] info:      - Format:             D3D9Format::X8R8G8B8
[20:26:51.444] info:      - Auto Depth Stencil: true
[20:26:51.444] info:                  ^ Format: D3D9Format::D24S8
[20:26:51.444] info:      - Windowed:           true
[20:26:51.447] info:  Presenter: Actual swap chain properties:
[20:26:51.447] info:    Format:       VK_FORMAT_R8G8B8A8_UNORM
[20:26:51.447] info:    Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR
[20:26:51.447] info:    Buffer size:  640x480
[20:26:51.447] info:    Image count:  3
[20:26:51.447] info:    Exclusive FS: 2
--- END OF FILE ---

NvRemixBridge.log from .trex folder.

...
[20:26:45.495] info:  Initializing D3D9...
[20:26:45.495] info:  Message channel MessageChannelServer established.
[20:26:45.650] info:  D3D9 interface object creation succeeded!
[20:26:45.652] info:  Loaded D3D9 from C:\L2\L2C1\System\.trex\d3d9.dll
[20:26:45.652] info:  Version of d3d9 loaded is DXVK
[20:26:45.652] info:  Feature version parity confirmed!
[20:26:45.652] info:  Sync request received, sending ACK response...
[20:26:45.652] info:  Done! Now waiting for client to consume the response...
[20:26:45.652] info:  Handshake completed! Now waiting for incoming commands...
[20:26:45.667] info:  D3D9 Module destroyed.
[20:26:49.248] info:  Server side D3D9 Device created successfully!
--- END OF FILE ---
odd vine
#

Yes, it uses early UE2 DirectX 8 "D3DDrv.dll" renderer.

#

That is something I haven't tested, this may work! ASI loader injects stuff in a pretty fancy way, this may be the solution, will update later, thanks.

#

No, it's not. It's an early version of an MMORPG no longer supported officially.

#

I believe the problem relies at a forced resolution change after engine initialization.

Here the engine loads a hardcoded resolution after creating the renderer, a black screen is shown.
Log: Enter SetRes: 640x480 Fullscreen 0
Then the game loads a resolution from Option.ini, resize happens, the black screen disappears and D3DERR_DEVICELOST happens.
Log: Enter SetRes: 2560x1080 Fullscreen 0

Maybe a delayed injection could work? As I said, I will give ASI loader a try later.

odd vine
#

This is an official and recent version that uses a heavily modified and hacked Unreal Engine 2.5 with a DirectX 9 renderer, not interested on it.

#

Yes, I tried most of that, different resolutions, multiple settings, changing encrypted hardcoded settings, etc. Same result.
I'm 100% sure this version uses DirectX 8 as I have checked binaries.
Chronicle 1 and Chronicle 2 versions of the game uses DirectX 8, starting from Chronicle 3 it uses DirectX 9.0b and then at some point it switches to DirectX 9.0c.

#

Yes, I tested most of the wrappers available and multiple versions, all of the wrappers works fine standalone and it renders with DirectX 9, so it doesn't appears to be a wrapper problem.
The issue appears to be at injection, or an unsupported resolution change call (SetRes command).

#

I will be done with my job in a few minutes to test ASI Loader.

#

Does RTX Remix supports delayed injection? Or does it has to be before renderer initialization?

fallen dune
#

this site is unsafe. someone reported odd behavior on their PC after visiting it, and multiple websites (like VirusTotal) have it marked as malicious

#

please do not post it again

odd vine
#

@scenic cliff @thorn marlin Same result with ASI Loader UseD3D8to9 and loading RTX Remix as an .asi plugin.

#

Crashes at "ResetSwapChain".

[21:59:00.550] info:  D3D9DeviceEx::ResetSwapChain:
[21:59:00.550] info:    Requested Presentation Parameters
[21:59:00.550] info:      - Width:              2560
[21:59:00.550] info:      - Height:             1080
[21:59:00.550] info:      - Format:             D3D9Format::X8R8G8B8
[21:59:00.550] info:      - Auto Depth Stencil: true
[21:59:00.550] info:                  ^ Format: D3D9Format::D24S8
[21:59:00.550] info:      - Windowed:           true
[21:59:00.552] info:  Presenter: Actual swap chain properties:
[21:59:00.552] info:    Format:       VK_FORMAT_R8G8B8A8_UNORM
[21:59:00.552] info:    Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR
[21:59:00.552] info:    Buffer size:  640x480
[21:59:00.552] info:    Image count:  3
[21:59:00.552] info:    Exclusive FS: 2

This is the SetRes command from Unreal Engine 2.

odd vine
#

So before the initial resolution change, when the first CreateDevice happens at the hardcoded 640x480 resolution, RTX Remix is actually loaded.

But then when the second CreateDevice happens with the user defined resolution, it fails.

odd vine
#

Loading vanilla DXVK works fine and the game doesn't crashes but yeah, no RTX Remix features.

[22:45:07.431] info:  No default config found for: C:\L2\L2C1\System\L2.exe
[22:45:07.431] info:  Trying to open config file: C:\L2\L2C1\System\.trex\bridge.conf
[22:45:07.432] info:  Found user config file: C:\L2\L2C1\System\.trex\bridge.conf
[22:45:07.432] info:  Effective configuration:
[22:45:07.432] info:    logAllCalls = True
[22:45:07.432] info:    client.useVanillaDxvk = True
[22:45:07.432] info:    server.useVanillaDxvk = True
[22:45:07.432] info:    logAllCommands = True
[22:45:07.432] info:    logServerCommands = True
[22:45:07.432] info:  ==================
[22:45:07.432] info:  NVIDIA RTX Remix Bridge Server
[22:45:07.432] info:  ==================
[22:45:07.432] info:  Version: remix-0.6.0+c40116b7
[22:45:07.432] info:  Running in x64 mode!
[22:45:07.433] info:  Launched server with GUID 8f68c614-0929-4af5-824c-2ce936490cf4
[22:45:07.433] info:  Server started up, waiting for connection from client...
[22:45:07.433] info:  Registering exit callback in case client exits unexpectedly.
[22:45:07.433] info:  Registering message channel for asynchronous message handling.
[22:45:07.433] info:  Initializing D3D9...
[22:45:07.433] info:  Loading standard Non-RTX DXVK d3d9 dll.
[22:45:07.433] info:  Message channel MessageChannelServer established.
[22:45:07.435] info:  Non-RTX standard d3d9vk_x64.dll loaded
[22:45:07.502] info:  D3D9 interface object creation succeeded!
[22:45:07.503] info:  Loaded D3D9 from C:\L2\L2C1\System\.trex\d3d9vk_x64.dll
[22:45:07.503] info:  Version of d3d9 loaded is DXVK
[22:45:07.503] err:   Unable to resolve QueryFeatureVersion, may be the result of an outdated Remix DXVK *or* loading vanilla DXVK.
[22:45:07.503] info:  Sync request received, sending ACK response...
[22:45:07.503] info:  Done! Now waiting for client to consume the response...
[22:45:07.503] info:  Handshake completed! Now waiting for incoming commands...
[22:45:07.516] info:  D3D9 Module destroyed.
[22:45:08.770] info:  Server side D3D9 Device created successfully!
[22:45:08.885] info:  Server side D3D9 Device created successfully!
[22:45:13.751] info:  Client window became inactive, disabling timeouts for bridge server...
[22:45:14.346] info:  Client window became active, reenabling timeouts for bridge server!
[22:45:19.448] info:  Client window became inactive, disabling timeouts for bridge server...
[22:45:19.986] info:  Client window became active, reenabling timeouts for bridge server!
[22:45:20.927] info:  Client window became inactive, disabling timeouts for bridge server...
[22:45:22.025] err:   9 objects discovered in Resource map at Direct3D module eviction:
[22:45:22.025] err:       d -> 000001650072CCA0
[22:45:22.025] err:       e -> 000001650072CCA0
[22:45:22.025] err:       f -> 000001650072BA80
[22:45:22.025] err:       10 -> 0000016500934920
[22:45:22.025] err:       11 -> 000001650072C7A0
[22:45:22.025] err:       12 -> 000001650072B4E0
[22:45:22.025] err:       3b -> 000001650072FF40
[22:45:22.025] err:       167b -> 000001650FCF26E0
[22:45:22.025] err:       167c -> 000001650FEB95F0
[22:45:22.025] err:   1 objects discovered in Vertex Declaration map at Direct3D module eviction:
[22:45:22.025] err:       3c -> 00000165009D91F0
[22:45:22.025] err:   1 objects discovered in Swapchain map at Direct3D module eviction:
[22:45:22.025] err:       c -> 0000016500870530
[22:45:22.025] err:   1 objects discovered in Device map at Direct3D module eviction:
[22:45:22.025] err:       b -> 00000165007E1AC0
[22:45:22.025] info:  Command processing loop finished, cleaning up and exiting...
[22:45:22.025] info:  Shutdown cleanup successful, exiting now!
[22:45:22.025] info:  [Uptime]: 14s
#

Mouse was unusable and invisible.
client.DirectInput.disableExclusiveInput = True fixed it.

odd vine
#

So I have loaded the game in DEBUG offline dev mode which does not changes the resolution after initialization.
I was able to see the the map with textures and the player character without textures for one second, and the RTX Runtime banner.
Then the game crashed.

#
[23:57:13.961] err:   CreateTexture() failed with: no response from server.
odd vine
#

Success!

#

I'm narrowing down which Engine setting change for the renderer made it work.

odd vine
#

Alright, so this makes it work.

UseHardwareTL=False
UseHardwareVS=False

This makes Transform and Lightning, and Vertex Shader to be handled by software, no issues with stuttering or low FPS so far.

odd vine
#

Back into the original problem, when not in Developer mode, the game calls a "SetRes" to change resolution after device initialization making RTX Remix crash and the game also crashing.

#

The same error can be replicated in Developer mode by opening the console and issuing the SetRes command.
SetRes 1024x768 as an example.

odd vine
#

I see 3 possible solutions.

  • A fix for RTX Remix for this scenario.
  • Null the SetRes function.
  • Modify the game UnrealScript to not call SetRes upon initialization.
odd vine
#

Will figure it out later, for now I will try to get a decent rendering.

#

Anyone knows why this happens?

#

Raytracing Disabled

#

Raytracing Enabled

#

Textures get really odd.

#

Appears to be an issue with Alpha blending.

brazen zodiac
#

tried running the Open Season game (another UE2 game) though it wasn't fully raytraced from my experience.