objects inheriting from defaultPawn or Character can have movementcomponents, but if you want to have movement on a regular Pawn type, you need to make your own movement component, or just put the movement code in the event blueprint.
gravity and friction can be simulated with some simple math:
gravity is a type of acceleration, which means its a variable that adjusts velocity every tick.
for gravity, you can make a vector of (0,0,-1) then multiply it by a float that you can call “gravity”, then add that result to your pawns velocity every tick. if the pawns velocity becomes greater than terminal velocity, don’t add anything.
for friction, you can multiply your velocity by a friction coefficient, which is just a float with a value of less than 1.
0.9 would be slippery like ice, 0.2 would stop things quickly.
doing this in C++ would be much more efficient than blueprints, especially if you want an army of pawns on screen, but for small games with few moving parts, it probably wont make a difference.