Hey. So while I was in the process of making a game, I found a nice setup that moves objects easily via linear velocity, but avoids the drifting that frequently arises.
The method makes use of the obj.setLinearVelocity() function, which gives a nice, stable method to set movement. It seems like it works pretty well. :)
This example file and script are licensed out for any use, personal, educational, or commercial. Attribution isn't necessary.
You can edit the values in the Settings section of the script to change how the character moves, such as acceleration, friction, and whether it should move locally or not.
Download the blend file here from FreeDrive.