Are there any events that are called AFTER Begin Play

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