I’d suggest looking at ShooterGame or UTAlpha to see how to setup a team based mode. In a nutshell, you add a system for choosing or forcing a given team, typically using the PlayerState to store the team information. Then override AGameModeBase::FindPlayerStart to pick the player start based on the team. TeamDamage is controlled by APawn::ShouldTakeDamage. As for when to pick/set the team that really depends. If the player is choosing it before connection use AGameModeBase::PreLogin or AGameModeBase::Login. If the server is deciding it, AGameModeBase::InitNewPlayer().