(Game Engine) How to restrict character movement to linear paths
Have you tried incrementing motion? You might try using a setup like the one in the image below to increment the motion of the characters (Although you can set the frequency extremely low) and then adding a non-rendering collision mesh ahead of the character that rotates them when they're about to hit a wall.

Just set the motion value to the number of blender units per grid space on your map, an that should do it!



Hopefully this helps! Just a quick aside, if the motion winds up being too fast, try halfing the value for motion. That'll slow it down while still preserving the grid-based motion.