I got very strange behaviour when making a final build.
The BeginPlay order is not the same in Editor as final build, this has lots of consequences.
Furthermore, is there a way to control the order of BeginPlay for actors?
EDIT: It is not reversed order, it is completely different in final build as editor play.
What is your specific use case? Maybe it is possible to remove the dependency at all.
If it is not possible to remove the dependency you can add event dispatchers.
E.g. your player controller relies on the begin play of your game mode. Add an event dispatcher to your game mode that is called when your game mode finished initializing. In your player controller begin play you bind to the event dispatcher of the game mode and handle the initializing in the custom event.
The order should not change when building. The output should be the same as editor.
In fact, i wanst relying on the order but I expected the GameState class (C++ custom version) to be the first one after GameMode. This is not the case. I was just lucky that in the editor mode, the GameState::BeginPlay just came before other BeginPlay functions that relied on it. In a final build the GameState might get executed as last.
The point is that the order is not specified - so you should not assume it to be always the same. You may have entirely different orders on different machines or when doing multiplayer.