public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        Debug.Log("NetManager OnServerAddPlayer");
        Vector3          position   = Vector3.zero;
        Quaternion       rotation   = Quaternion.identity;
        PlayerSpawnPoint spawnPoint = PlayerSpawnPoint.Next();

        if (spawnPoint != null)
        {
            position = spawnPoint.position;
            rotation = spawnPoint.rotation;
        }

        //add player object
        GameObject     player   = (GameObject)GameObject.Instantiate(playerPrefab, position, rotation);
        PlayerIdentity identity = player.GetComponent <PlayerIdentity>();

        if (identity != null)
        {
            //TODO: player name and team id values are temporary - maybe grab from settings?
            string playerName = player.name + conn.connectionId.ToString();
            byte   teamId     = 1;
            identity.Initialize(conn.connectionId, playerControllerId, playerName, teamId);
        }
        else
        {
            Debug.LogWarning("NetManager: Player prefab does not have a PlayerIdentity assigned.");
        }
        m_playerTracker.Add(player);
        NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
    }