Old one started to struggle at 5000 sprites, new one runs above 170FPS with 10000 spites (as long it doesn’t need to switch context too much between shaders and textures), although it can tank to 60 if per-pixel collision detection is needed. Hit-box detection is already done, the likely issue is that in this example, it needs to pull the collision shapes too much (bit arrays, each line is aligned to 64 pixel wide to speed up checks as much as possible by ANDing together chunks, then check the result for non-zero value).