[C++] What are the Best Practices for Multiplayer Team DeathMatch Lobby

I have a Multiplayer Lobby where Clients(LAN) choose their teams, I register their Unique Ids and their teams in The Server’s GameInstance(ListenServer) every Client’s game instance is also aware of their team. The issue arises when I travel to a new level from the lobby. I can’t come up with a way to transfer the information from the server’s game Instance to the clients before the characters are spawned. I’ve tried overriding the GameMode’s FindPlayerStart function but there’s no game instance at this point. Also, begin play doesn’t do the job on the PlayerController or on the Character.

Store the gamestate values?

You need to change your ready to start match to wait until all clients have acknowledged the replication of the proper class information. If you have each client acknowledge on the replication of the class which increments a value in the game mode, you can do the following:

bool ASomeGameMode::ReadyToStartMatch_Implementation()
	return NumClientsReady == TotalClients;

Thanks, this allows me to prevent the players from spawning without being aware of their current teams. In case someone has the same issue my problem was that I was trying to access the GameInstance from inside the PlayerController before it spawned. I need to access the GameInstance from the GameMode. Everything seems to be working ATM. Thank you!