Player motion constraints


I am currently trying to make a game with some constrained motion for the player, like in the game NeoAssault :

I can set the player constrained to the mesh but I encounter some issues with collisions.
I tried to move the pawn with sweep, get the new player location and project it on the mesh but the projection make inaccurate results and some problems appear (the player still enter the collided mesh or the player for example).

How could I try to make that kind of game with collisions ? Should I make my own collision system ?

Thank you.