Thanks for this detailed insight, you hit the nail on the head. The third point has to do with the way I handled updating the sprite turns - basically the "physics object" you don't see rotates 360 degrees based on how long you hold down the inputs, and there are 16 sprites so every 22.5 degrees the sprite updates - which means that there is a 22.5 degree margin between what you think the angle is (due to the visuals) and what it might actually be. I tried fixing this by making the physics object snap to angles, but at least the way I tried it just ended up feeling bad to move around. So I'm not 100% sure how to fix this, but the first two points I can fiddle with already, so thanks I'll do that!