rohit-n / dominatrix

A new port for SiN
55 stars 0 forks source link

Jittery Movement #18

Open snekyo opened 8 months ago

snekyo commented 8 months ago

The player's movement is jittery. I also experience a bunch of screen tearing, even though I have the "sync every frame" option on. This may be an unrelated bug.

rohit-n commented 8 months ago

What platform are you running on? Can you go to the console and try to set cl_maxfps to a lower value, like 10?

snekyo commented 8 months ago

I'm using Windows 10, and vsync should be on. I'll try and run it on Steam to see the fps counter.

snekyo commented 8 months ago

Huh, even with "sync every frame" on, which I'm guessing is vsync, I'm getting around 600 fps. I have a 60 Hz monitor. I'm still having the jittery movement too, while I'm getting this high amount of fps.

WulfBloodfang commented 8 months ago

Just for your own reference in figuring out what's going on;

I had the same issue at default FPS of 60. 144 Hz monitor. Windows 11. Steam copy of SiN Gold.

Turned on vsync, or "sync every frame" which I assume is vsync, and the issue was fixed. Mostly. When moving from one large area to another the issue will crop up again. Like, in empty, connecting hallways. Take from that what you will.

snekyo commented 4 months ago

Just for your own reference in figuring out what's going on;

I had the same issue at default FPS of 60. 144 Hz monitor. Windows 11. Steam copy of SiN Gold.

Turned on vsync, or "sync every frame" which I assume is vsync, and the issue was fixed. Mostly. When moving from one large area to another the issue will crop up again. Like, in empty, connecting hallways. Take from that what you will.

Hey, were you using an AMD card? The issue is completely gone for me, now that I got an NVIDIA card.

Grunerd commented 3 months ago

It appears to be an issue with Id Tech 2's 10hz tickrate and client-side prediction. When cl_predict is set to 0, this jitter goes away, but due to the nature of a hard-coded tickrate, movement feels delayed and simply wrong.

To read more into this issue: https://github.com/skullernet/q2pro/issues/177

Basically, we'd need to adjust the gamex.dll and ideally implement fps-based tickrates or at least add options for 60, 120, 144 etc.

I experience this with my RX6900XT (Windows 10, i7 7700k, 16gb RAM).

Manually capping FPS (cl_maxfps) or enforcing vsync through the driver has no impact.

rohit-n commented 3 months ago

Thanks @Grunerd ! I had no idea the issue was in the game library. I'll try to fix this when I have some free time.

Calinou commented 2 weeks ago

Basically, we'd need to adjust the gamex.dll and ideally implement fps-based tickrates or at least add options for 60, 120, 144 etc.

Knowing how Quake engines handle tick rate and FPS limiting, I expect the code not to deal well with tickrates that are not integer values in milliseconds per tick (1000/tickrate). You'd probably want the tickrate to be a multiplier of the base tickrate as well for better consistency with the original gameplay, although this is not a strict requirement.

In practice, this means the viable tickrate values would be 20, 40, 50, 100 and 125. (Values above 125 will likely be too demanding, as the only values usable above that are 250, 500 and 1000.)