Gaming Zone > Unreal Tournament 2004

How to reduce input latency and make the game smooth.

<< < (2/10) > >>

jiRNGen:
I use a 144 hz monitor and nice internet speed so  MaxClientFrameRate=250 and MaxClientRate=20000 or 30000 works perfectly for me. One important setting UseVSync=False (everywhere) will prevent a lot of input lag and add comfort especially when moving mouse around.
 



 

Piglet:
What's the reason for max rate over monitor refresh rate?

jiRNGen:

--- Quote from: Piglet on November 20, 2019, 19:26 ---What's the reason for max rate over monitor refresh rate?

--- End quote ---

I tried to set MaxClientFrameRate to 144 before and recently  200-250, i didn't see big difference.

holyspam:

--- Quote from: Piglet on November 20, 2019, 17:41 ---Questions:

1. How does the game know to use the dll?

2. What does the console command do? The variable is defined as "var globalconfig float MaxClientFrameRate;" - so I can't see what providing "142,166,200,250" to it is intended to do. It can only take a single floating point number.

3. How does changing MaxClientFrameRate through console have any effect different to just configuring it in the ut2004.ini file?

4. Changing MaxClientFrameRate needs to be done in conjunction with a change in netspeed to have any effect on uncapping the frame rate. Something like this is a good idea - press numpad 8 at the start of every map to take effect: NumPad8=Stat Net | stat fps | netspeed 10880

5. AvoidHitches? What is it and what dos it do? I can only see its value being reset in the code - so can't tell what it's doing.

--- End quote ---

1.
For DX8 games the executable looks for d3d8.dll, if it can't find it near, windows handles it.(which also applies to all .dll files required by programs)

D3D8.dll is the name of the windows Direct3D 8 library responsible for rendering in DirectX 8 and DirectX 8.1 games.
It was used in Windows 98/XP maybe 95/2000 too, cant remember.

Even when DX9 released it support was provided for earlier versions.
The 32bit version of UT2004 uses DirectX 8.1

DX9 was not included in Win Vista and 7, there is only DX10-11 included and in order to play old games you have to install "DirectX 9 Redistributables" by yourself, which also provides support for DX8 and earlier, so this dll might not help much.

Then for windows 8/10 m$ decided that DX9 should "run" inside DX11...but only D3D9 is "properly" supported
They called it D3D9 Extended(D3D9Ex)

Using earlier versions of D3D you get something like an emulation inside D3D9Ex, which adds complexity in the rendering process and creates issues for old games, since it runs everything on D3D11.

So these guys got the SDK(software development kit) for DX8 and DX9 and instead of emulating DX8 or looking for quick solutions, they translated all DX8 code to DX9 which requires lots of testing and feedback, almost impossible for one person.

But the result is much faster than being emulated and allows you to make every game to actually work properly.

When people started using it for stuff like ReShade, it got lots of feedback and old games ran on newer windows without issues, they even fixed some graphics bugs in games while translating, even fixed some old unpatched crashes.

Anyway they put all of this inside a d3d8.dll so you won't have to mod your exe or any file.

So instead of this:
D3D8->D3D9
D3D9->D3D11
you get something like this:
(D3D8)D3D9->D3D11

For me this changes the game from MEGA stutters and lag, to super smooth.


2.
The console command can be used to change the variable MaxClientFramerate in class LevelInfo inside class Engine,
You can do this without exiting the game and opening the ini, that's the only advantage, but you have to do it in the server browser, otherwise it's blocked.
You can use this syntax for EVERYTHING inside ut2004 and user.ini:

--- Code: ---set CLASS PROPERTY VALUE
--- End code ---
CLASS is indicated inside brackets like [Engine.LevelInfo]
PROPERTY is plain text followed by "=" symbol and then the VALUE specified.

3.
Numbers provided are the limits that ut2004 actually enforces depending on system timer used, there are more details in "The holy grail of ut2004"
I think the render engine works at 1ms timers and you get one frame every X ms, which results in these actual limits.
8ms = 125fps
7ms = 142fps
6ms = 166fps
5ms = 200fps
4ms = 250fps
If i pick a framerate inbetween, it will oscillate between the two limits.

4.
Yes you need 10001 netspeed in order to unlock framerates higher than the default of 90(maybe 85 on certain systems), there is still a hard limit at 250fps with 10001 netspeed, but if you increase netspeed even more, the limit is what you set in MaxClientFrameRate.

5.
Well, it does what the name implies, it probably sacrifices some speed for consistency in framerates (the difference might have been bigger on older systems),  not sure on the technical side you'll have to ask Epic for that.
It will try to hold all textures inside VRAM, to avoid moving them back and forth. I was mostly testing various stuff from the .ini and noticed that when it's turned on it made my mouse movements smoother.

hagis:
hello :)

I don't tend to mess with any settings generally but thanks for posting, it's interesting :)

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version