Not possessing my default pawn on play

Another possible solution (and one which fixes lots of unexpected behavior):

Note, this applies only to C++ classes/base classes that don’t function as expected.

Many times, problems can be solved by adding “Super::foo(param)” to the top of your Derived::foo(param) definition.

For example, I had the above problem when trying to extend GameModeBase in C++. The default pawn would never spawn. On further inspection, I found that I had failed to call “Super::PostLogin()” inside my DerivedGameMode::PostLogin() method. As soon as I added it, the problem was resolved.

This just ensures that all the good stuff that the base class does actually happens.