Jerky Camera + Lerp + Low Resolution

Apologies for reviving an old thread, but has there been any traction on this?
I’m experiencing the exact same problem as JayH described here.

Based on the wording I would expect the “Update resolution during the game to fit the screen or window size” option to take care of this when enabled, but it doesn’t seem to help any, and there isn’t any information on this option in the official documentation.

I tried Silver-Streak’s solution for resolution resize and camera zoom, and while this fixes the camera movement jitter, static sprites that the camera does not follow now have pixel jitter, with or without pixel rounding enabled.

I think GDevelop is sorely missing the following two rendering options, on top of the scale width / scale height settings:

  1. Scale the game with integer scaling on window resize (For pixel games)
  2. Perform internal resizing and zoom akin to Silver-Streak’s solution, without the odd jitters caused when doing this manually via events (This is standard in Unity, and akin to Construct 3’s ‘High’ resolution mode, or Godot’s ‘2D’ scaling mode)

As it stands it’s not very workable to create low resolution games in GDevelop unless you are fine with the aesthetic of pixel-perfect movement of the camera and player.

I apologize once more if I should have created a new thread. I really like GDevelop and I think the under the hood components are in many ways far more user friendly and functional than competitor engines. All the more impressive for an open source, community driven engine. Really just wish I could create small pixel games in it! :slight_smile:

1 Like

I cannot reproduce the issue you’re experiencing with my method, if you can provide a project that experiences it I might be able to take a look and see if I can reproduce it, just to ensure the devs have good resources to refer to.

Just to close the loop on this, EBDev and I synced up on discord and did some testing. There’s a few unique issues (they’re on an ultrawide monitor, are using a 144hz refresh rate, etc) but the main issue was a graphical pixel distortion (subpixel rendering) due to how scaling was applied vs their ultrawide monitor.

For the distortion, we were able to solve this by using my method above, telling the game to scale based on height (adjusting width), and adding a fake “integer based scaling” by adding a large black border sprite with a hole in the center cut out for their normal game resolution. This means that the game resolution is getting updated accordingly but the visible area of the game remains the same (since the border hides any extra space that would be shown by changing the resolution).

They’re going to continue to experiment with camera options and FPS settings, but otherwise the distortion they were seeing seems to be resolved.

Thanks Silver-Streak for all the help troubleshooting this!
I spent the better part of the day creating my own extension for this so I could re-use it in projects easily. I’m attaching it HERE if anyone else finds this thread and wants to try it:

Hopefully this gets implemented into the core of GDevelop as proper scaling methods at some point, but for now I’m happy with my extension.

4 Likes