My multiplayer game allows players to select a class in the lobby. When they select a class it is stored in their game instance. When the game starts the new game mode uses the OnPostLogin event to get the selected class of each player controller (by accessing it from their game instance). This works perfectly on the host but not on the clients. After placing about a million breakpoints I found that on the client, one of my blueprint nodes is being called late. Here are some photos.
This the execution flow on the server. This works.
This is the execution flow on the clients. This does not work.
Because the GetCharacterClass event is being called late, my StartingNewPlayer event is being called with the incorrect character class (this event spawns the player).
As a result, the host spawns the the correct character but all of the clients spawn with the default character. Any help/advice would be greatly appreciated! Thanks