sezero / quakespasm

QuakeSpasm -- A modern, cross-platform Quake game engine based on FitzQuake.
https://sourceforge.net/projects/quakespasm/
GNU General Public License v2.0
227 stars 96 forks source link

Moving platforms are buggy in 0.95.0 #40

Closed AAS closed 1 year ago

AAS commented 1 year ago

There is some issue with vertically long-distance moving platforms in the last release. You get damage from noting while platform moving up. On vkquake and previous version of QS platform moves without the problem. You can test it on https://www.quaddicted.com/reviews/prisonofhope.html map and my save.

platformbug.zip

sezero commented 1 year ago

I noticed getting mortal damage from elevators in recent brutal jam, too. Didn't get with this one, but haven't tried much.

@temx, @andrei-drexler: Any insights? The major difference between 0.94.7 and 0.95.0 is the model scale patch which touches the server side code.

sezero commented 1 year ago

FWIW my experience with the killer elevator issues were in qbj_grue (the first elevator leading to blue key), and qbj_annihilator (last elevator leading to the last fight scene) -- happening reproducibly especially when you are standing in the middle of the elevator. But they do happen with 0.94.7 too, not just with 0.95.0.

temx commented 1 year ago

I don't get it on this one unless host_maxfps is set to >72, same as always. Do you ever get it with lower values? The scale patch shouldn't affect server physics in any way.

sezero commented 1 year ago

I don't get it on this one unless host_maxfps is set to >72, same as always. Do you ever get it with lower values? The scale patch shouldn't affect server physics in any way.

If you are asking me, I didn't get it with prisonofhope. And I have never ever changed host_maxfps: it is set to 72.

temx commented 1 year ago

Uh-oh. I can reproduce with the official build but not if I compile it locally from the tarball. Did the compiler change? If not, something may have triggered a code generation change.

sezero commented 1 year ago

.. and yes, it doesn't make any sense that the model scale patch would affect physics in any way.

Anyways, I don't have a clue with this one yet. And for the record, both 0.95.0 and 0.94.7 were built with the same compilers/toolchains and with the same compiler switches.

sezero commented 1 year ago

Uh-oh. I can reproduce with the official build but not if I compile it locally from the tarball.

On windows x64?

Did the compiler change? If not, something may have triggered a code generation change.

No, the same compiler and the same options.

sezero commented 1 year ago

I'm on linux i686 for now, tried git master with gcc-4.4.7 and gcc-4.9.4: No changes, same behavior. BUT a curious observation: I still haven't (tried to) reproduce anything on prison of hope, but with brutalist jam: seems like I can not reproduce the killer elevators using SDL-1.2 builds. What is your experience?

temx commented 1 year ago

Sorry, I was not trying hard enough - I can reproduce it with all builds in the qbj_grue elevator, including the official quakespasm-0.94.7_win64, so I don't think this is a new problem.

sezero commented 1 year ago

How is vkquake or ironwail behaving?

temx commented 1 year ago

Aha. So this is highly framerate-dependent. I get it reliably with host_maxfps 70 in both Ironwail and vkQuake, but never out of 10 attempts with host_maxfps 72. QuakeSpasm for some reason seems to round down to an integer number of milliseconds (even with sys_throttle 0?), so requesting 72 gets you a bit less, making it much more likely to happen.

sezero commented 1 year ago

sys_throttle 0 doesn't make a difference for me.

However, as I said, the SDL-1.2 binaries work fine for me on i686 linux: how do they behave for you? (And how would SDL-1.2 vs SDL2 affect framerate???)

sezero commented 1 year ago

.. and for the record, host_maxfps 70 makes it run fine for me :/

temx commented 1 year ago

It took a few tries but I do get the squish on both 0.94.7 and 0.95.0 32-bit sdl12. SDL implements SDL_GetTicks() and SDL_Delay() so it may have some effect if the precision or accuracy has changed.

sezero commented 1 year ago

I just tried replacing SDL_GetTicks with SDL_GetTicks64, no difference for me..

Does vkquake exhibit this issue? (I know things are much different in there.)

temx commented 1 year ago

With host_maxfps 72, it doesn't for me. At >72, it shouldn't for anyone, since it enforces a constant 72 Hz tic (even if you're running slower). With host_maxfps 70, it does. You can set the tic time directly using host_framerate. In QuakeSpasm, host_framerate 0.01388 kills me every time, whereas host_framerate 0.013888 doesn't. Oof.

sezero commented 1 year ago

Replacing Sys_DoubleTime code to use the good old gettimeofday instead of SDL_GetTicks seems to work for me for now. (For windows, timeGetTime maybe??)

Will try messing with framerate options you mentioned above.

@ericwa: What do you think of all this?

AAS commented 1 year ago

Looks like I nailed it.

I have mixed setup of QS, QSS, ironwail, vkquake, fte in a same folder with custom config resided in id1, but host_maxfps is not mentioned in it. One of the engines overwrite config.cfg with its default value (vkquake with value 200 in my case).

My use case is starting .exe, typing game whatever, then manually exec my config, so QS on start loads previously modified config.cfg and never changes host_maxfps back to 72.

Adding host_maxfps 72 in my config fixes that.

Sorry for the hassle.

sezero commented 1 year ago

So, @AAS's original bug was an accident. And, brutalist jam hotfix/4 mentions a fix for killer elevators (doesn't seem to make a difference for me though): https://www.slipseer.com/index.php?resources/quake-brutalist-jam.126/updates#resource-update-168 Elevator safety features (trigger_push for less accidental player squishing)

Closing this one now.

AAS commented 1 year ago

FWIW my experience with the killer elevator issues were in qbj_grue (the first elevator leading to blue key), and qbj_annihilator (last elevator leading to the last fight scene) -- happening reproducibly especially when you are standing in the middle of the elevator. But they do happen with 0.94.7 too, not just with 0.95.0.

Happens to me too even with host_maxfps 72. Tested this map in vkquake and elevators are fine.

sezero commented 1 year ago

FWIW my experience with the killer elevator issues were in qbj_grue (the first elevator leading to blue key), and qbj_annihilator (last elevator leading to the last fight scene) -- happening reproducibly especially when you are standing in the middle of the elevator. But they do happen with 0.94.7 too, not just with 0.95.0.

Happens to me too even with host_maxfps 72. Tested this map in vkquake and elevators are fine.

Someone (not me) should report that to map-pack authors.