Shpoike / Quakespasm

Extra bloaty junk to modernise stuff a bit.
http://triptohell.info/moodles/qss/
GNU General Public License v2.0
190 stars 41 forks source link

Movement inconsistencies between 72 FPS and higher #86

Open thekovic opened 2 years ago

thekovic commented 2 years ago

Observed in my map, the player is unable to jump up on top of a block that's 64 units tall when gravity is set 550 in QSS if host_maxfps is set 200. Setting host_maxfps to 72 fixes the issue and matches behaviour seen in QuakeSpasm and vkQuake.

Video of issue: https://www.youtube.com/watch?v=YkcgTKiDAlk

Download link for my map if you wanna test the behaviour yourself: canyonlands.zip

adelpha commented 2 years ago

Confirmed. All tests performed on canyonlands.bsp at sv_gravity 550. (vid_vsync 0 obviously). FTE has exactly the same behaviour, btw.

It's entirely dependent on the actual framerate, rather than the host_maxfps value, so it'll likely vary a little between setups.

I can set host_maxfps to 140 to get an actual framerate of ~114fps when looking straight ahead. This makes the jump impossible. If I look down at the ground to bring the framerate to ~120fps, the jump is much more reliable.

With that said, on MY system:

At host_maxfps between ~78 and ~130 the jump is either impossible or very unreliable.

At 78 I can make maybe 1 jump out of 7. At 79 it's more like 1 out of 100.

At host_maxfps 144 it's 100% reliable. Either side of 144 it's like a bell curve where it's reliable in the middle of the range, and less reliable in the outside of the range.

At host_maxfps between 190 -> 200 it becomes increasingly unreliable, and appears to be impossible at precisely 200.

Bizarrely, at >201 it reverts to being fine. Fine at 201, 250, 288, 300, etc.

My only theory: some kind of precision error in the network/renderer isolation formula.

thekovic commented 2 years ago

For me, the jump remains unreliable (albeit possible) at host_maxfps 201. At 202, the success rate is above 50 %. At 202, scr_showfps reports framerate between 180-185 (is this the real framerate?)

Thank you so much for the in-depth testing @adelpha . It is clear now that the issue is more nuanced than "72 FPS good, more bad" that I initially made it out to be.

Novum commented 2 years ago

@thekovic Are you sure this doesn't happen in vkQuake too? It also has the network isolation code ported from QSS.

thekovic commented 2 years ago

@Novum The issue is not present in vkQuake at 200 FPS which is how my port was setup when designing and creating the map. It is, however, present at other FPS values in vkQuake, namely x<58, 73<x<116 and 145<x<174. All other framerates seem to work.

Novum commented 2 years ago

@thekovic That's what I expected, thanks for confirming this.

Novum commented 2 years ago

Fixed in vkQuake d2c34b38b3fe566873a414e28dea4ef1f0ddafd9

thekovic commented 2 years ago

Yep, works well! I'd encourage QSS to implement this as well.

VinnyVicious commented 1 year ago

This would be a great addition.