void OnCreateTank(NetworkConnection conn, CreateTankMessage message)
    {
        // playerPrefab is the one assigned in the inspector in Network
        // Manager but you can use different prefabs per race for example


        // Avoir une liste des spawnPoint available
        List <GameObject> spawnPointsAvailable = new List <GameObject>();

        GameObject[] spawnPoints = GameObject.FindGameObjectsWithTag("SpawnPoint");
        GameObject[] players     = GameObject.FindGameObjectsWithTag("Player");

        foreach (GameObject spawnPoint in spawnPoints)
        {
            if (SpawnUtility.SpawnPointAvailable(spawnPoint, players, 10))
            {
                spawnPointsAvailable.Add(spawnPoint);
            }
        }

        // Je spawne le player si il reste des spawn Points available
        if (spawnPointsAvailable.Count > 0)
        {
            GameObject selectedSpawnPoint = spawnPointsAvailable[Random.Range(0, spawnPointsAvailable.Count)];

            GameObject newPlayer =
                Instantiate(playerPrefab, selectedSpawnPoint.transform.position, Quaternion.identity);

            // Apply data from the message however appropriate for your game
            // Typically Player would be a component you write with syncvars or properties

            // call this to use this gameobject as the primary controller
            NetworkServer.AddPlayerForConnection(conn, newPlayer);
        }
    }