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