So as an exercise in troubleshooting, I looked through your code and the tutorial.
// FPS camera.
UPROPERTY(VisibleAnywhere)
UCameraComponent* FPSCameraComponent;
Is incorrect as of 4.16/4.17 and should have the type of “class” before it.
as in
// FPS camera.
UPROPERTY(VisibleAnywhere)
class UCameraComponent* FPSCameraComponent;
Give that a try, and see if it works out for you.