you can create one the same as any class in the NewBlueprintClass menu or in c++ just inherit from APlayerController
then in your world settings/gamemode change the default controller class to your class and default pawn to none as you will spawn your own.
on controller begin play spawn the pawn and possess