ikemen-engine / Ikemen-GO

An open-source fighting game engine that supports MUGEN resources.
https://ikemen-engine.github.io
Other
695 stars 124 forks source link

Stutter with Playerpushing when a Helper Moves Camera with odd GameFramerate/GameSpeed #1079

Open thoj900 opened 1 year ago

thoj900 commented 1 year ago

Describe the bug

Might possibly be related to 1 of the issues in this pull here: https://github.com/ikemen-engine/Ikemen-GO/pull/641

Quote: "bug related to camera tracking and frame rendering when playing with an odd GameFramerate/GameSpeed value was fixed. To reproduce the bug in Ikemen GO 0.98.2, set GameFramerate to an odd number like 55 or 26, then, in a stage with a high boundhigh value and a verticalfollow of 1, try to add Y Vel to a character. You'll see the character starts to stutter and the camera will not be able to keep up to its speed."

Now this has been fixed for player side characters moving the camera, but when a HELPER is moving the camera and you are pushing a player, you can see the player character pos still stutter. I don't really know if it stutters when a character isn't pushing up against someone, but it only seems to happen during pushes. This is hard to capture on video recording and it is better to test yourself. I will provide info below.

To Reproduce

PosStutter099.zip

Info: I've created a Helper that controls the Camera to show what happens in this file (data/SlowCam.zss). There is also a mugen version of this in the "Expected Behavior" section

If you want to test your own helper, create a helper to move camera, and set root player's sctrl screenbound in state -2 to to be bound by screen but not move the camera with movecamera = 0,0

Game FPS has been set to 55 to showcase the issue better

  1. Download the Test Case zip file and extract. This uses the latest default ikemen 0.99 build from git.
  2. Select 1p vs 2p
  3. Select KFM vs KFM and Mountainside Temple Stage
  4. Start walking towards idle player and push them across the screen, you will see their position/sprites stutter because only the helper is moving the screen, not the actual player
  5. Escape, and go Back to Menu
  6. Go to Options >Game Settings
  7. Change Game FPS back to 60
  8. Start at Step 2 up to Step 4 again, this time you don't see the player stutter at all.

Expected behavior

mugen11intendedbehavior_2.zip

Expected Behavior: No position/sprite stuttering when player pushes another. Again, not sure if anything outside of player pushing is affected? I've attached a test case with MUGEN 1.1 and kfm with the same code in CNS. Its been set to slow 1 preset which is 55fps, and when you push a player there is no stuttering behavior. Again, VS mode, 1p vs 2p, then mountainside temple (it doesn't really matter what stage) and you will see intended behavior. Attached the 7zip inside zip file here as well (for some reason windows would not zip up some contents using regular zip)

Screenshots / Video

A bit hard to capture on video, when you actually play the zipped testcase you can see it better. Again, change game fps from 60 to 55, push the player across the screen and compare, you will notice that 60fps is normal and smooth, but on 55 the position/sprite stutters.

Engine Version (or source code date)

v0.99, expected behavior tested on mugen 1.1b1

Operating system

Windows

Extra context or search terms

I also have a M1 Mac Pro and it also happens there as well

Lazin3ss commented 1 year ago

It seems camera code and position interoplation code will have to be improved to act with greater precision when the GameFramerate/GameSpeed is an odd value. Right now, I don't how this can be improved, but I'll be looking for a solution after 0.99