Ah yes, I see what you mean. I don’t think I’d call that jittery. You’ve got a bit of acceleration there and so, as the camera begins to decelerate, it only moves one pixel at a time.
I actually think this looks fine. If you were playing this game on a NES, it would look like this. However, if you want to increase your overall resolution and just have the native look so you can achieve special effects (such as moving less than a native pixel) then yea, those other solutions are the way to go.
Right, it’s because your aspect ratio is 1.5. Since your scale is non-integer, you run the risk of your tile coordinates landing at mid-pixel boundaries, which causes the rasterizer to have to guess which pixel it belongs in. This is why I mentioned using a scale factor of only integers… either 1, 2, 3, 4, whatever fits best in the resolution you have available. Either draw more/less, or bound the remaining area with black boxes. As soon as you scale by a non-integer value, you’ll run into this type of thing.
I wouldn’t worry too much about “in-elegant” haha. If it works, great! Refactor later if you need to.
I’ll suggest one more options… you could combine methods 1 and 2 if you wanted. I can’t quite tell if your character and camera are independent or not… I think they are. It looks like the character finishes moving and the camera lags behind a tiny bit… yea?
If I’m understanding this correctly, you could render your world to a 1x scale render target at one tile (in all directions) larger. Then scale it up to the screen resolution, positioning it at the correct offset.
So lets say your current native offset is x=2.4 pixels and your scale factor is 1.5x as you are using in the example here. Keep that floating point offset, but render to a render target at the floor of your offset (ie, 2). The render target should be able to contain an extra tile, so it should be 480 + tileWidth wide.
Finally, render your tile layer to the screen but subtract the offset you omitted before, so instead of rendering at x = 0, render at x = -1 * (2.4 - 2) * 1.5.
I dunno if that makes sense. It’s a bit involved and if you’ve already got something working, probably no point in monkeying with it further. Work on something else and come back to it Also, I do think that Method 1 looks good… and is representative of what you’d see if you ran this on an old console.
(I like your sprites by the way!)