If I have a topdown rpg type game. And movement in 8 directions (N/E/S/W/NE/NW/SE/SW) in a 2d game that involves both x and y velocity. I'm finding when i'm moving in the diagonal directions i'm building both x and y velocity and its making my character move faster than they do in straightline directions. Is there a fix for this so no matter what of the 8 I travel its the same speed? so say... vel_x, vel_y=0 spd=1 then in my gameloop vel_x*=0.2 vel_y*=0.2 Then my button presses add/subtract the spd value from their corresponding velocity direction x/y when pressed. then I add the vel_x to my x sprite position and same with vel_y for my y sprite How would I address this...? Would I look at btn press actions for when both keys are held....or limits for when vel_x AnD vel_y are 'high' enough in tandem.... I've done the latter and it helps but I can't make it accurate. Images: With velocity removed and just +-1 speed increases/decreases. Left is the proposed adjustment to the vertical movement. Right is no adjustment. Is Left moving at same speed all the time and right isn't? [![enter image description here][1]][1] [![enter image description here][2]][2] [1]: https://i.sstatic.net/3uuPh.gif [2]: https://i.sstatic.net/chucY.gif