Get gamemode gives me the wrong gamemode

If you are trying to get a value by BeginPlay, and set it also by BeginPlay(InitializeComponent) - then the sequence of their calls is difficult to predict, and you definitely shouldn’t rely on it.

And if you get a value by BeginPlay of an already loaded level, and then load a level in which this value is set by BeginPlay, then you will definitely get something different from what you set.