Understanding background scaling and seamless sprite scrolling

Godot Version

4.3

Question

Hi all, first post here. I’m trying to add a nice scrolling background to my game but struggling with pixelation and blocky repeating segments. My game essentially evolved from the excellent Brackey’s youtube tutorial, so currently runs with a viewport size of 1152x648. It uses the same tilemap in his tutorial video and the camera has an X and Y zoom value of 4, so it feels like a suitable platformer setup.

To create a seamless, subtly moving background, I figured on using multiple Parallax2D nodes, each with a single Sprite2D node inside. I grabbed a free parallax background bundle from Itch.io, with each image being 1980x1080. I figured this would look like a nice, crisp resolution (given that my viewport is much lower than this), but the zoom on the camera is confusing me and resulting in a fairly blurry mess. On top of that, I’m really struggling to get a seamless repeat of the background when the camera is moved:

I set an arbitrary “Repeat Size” value on each Parallax2D node of 653 (which I basically just eye-balled in the editor, continuously tweaking until there was no obvious gap between each repeating image!).

I think it’s ultimately the camera zoom that’s screwing things up, but given the relatively small tileset dimensions, I felt it was necessary to make it look sensibly scaled. Have I ultimately made a rod for my own back by doing this? How SHOULD I be doing all of this, to result in a perfectly suitable playing scale, whilst maintaining crisp background images that I don’t have to manipulate too much to have them seamlessly scroll? If it’s of any value, I intend to run my game in full screen mode, and the “Stretch” project setting is currently set to “disabled” mode.

Hope this all makes sense!

Thanks.

Any insights please guys?

Parallax effects will definitely be affected by zoom if you’re not deliberate with your repeat values. Take a look at the tutorial to get a better understanding of how it works and how to solve some common mistakes: 2D Parallax — Godot Engine (stable) documentation in English