IEnumerator PrepararRondaRutina()
    {
        yield return(levelGenerator.GenerarLayout());

        levelGenerator.RenderNivel(true);
        // levelGenerator.ActualizarColliderYNavSurface();

        var agrupados = levelGenerator.generadorLayouts.generados.GroupBy(cuarto => cuarto.categoria);
        var grandes   = agrupados.FirstOrDefault(grupo => grupo.Key == LayoutCuarto.Categoria.Grande);
        var peques    = agrupados.FirstOrDefault(grupo => grupo.Key == LayoutCuarto.Categoria.Peque);
        var data      = new LevelGeneratorData()
        {
            posGrandes = grandes.Select(cada => (Vector2)cada.BoxCol.transform.TransformPoint(cada.BoxCol.offset)).ToArray(),
            tamGrandes = grandes.Select(cada => (Vector2)cada.BoxCol.transform.TransformVector(cada.BoxCol.size)).ToArray(),
            posPeques  = peques.Select(cada => (Vector2)cada.BoxCol.transform.TransformPoint(cada.BoxCol.offset)).ToArray(),
            tamPeques  = peques.Select(cada => (Vector2)cada.BoxCol.transform.TransformVector(cada.BoxCol.size)).ToArray(),
            puertas    = levelGenerator.generadorMapaArbol.vinculos.SelectMany(vinc => vinc.puertas).ToArray()
        };

        levelGenerator.generadorColliderGlobal.GenerarAMano(
            data.posGrandes, data.tamGrandes, data.posPeques, data.tamPeques, data.puertas
            );
        levelGenerator.ActualizarColliderYNavSurface();

        gridPos = levelGenerator.Bounds.min;
        var tam = levelGenerator.Bounds.size;

        // (gridSize.x, gridSize.y) = (Mathf.CeilToInt(tam.x / gridStepSize), Mathf.CeilToInt(tam.z / gridStepSize));
        gridSizeX = (uint)Mathf.CeilToInt(tam.x / gridStepSize);
        gridSizeY = (uint)Mathf.CeilToInt(tam.z / gridStepSize);
        posList   = new Vector3[gridSizeX * gridSizeY];
        for (int i = 0; i < posList.Length; i++)
        {
            var x = i % gridSizeX;
            var y = i / gridSizeX;
            posList[i] = gridPos + new Vector3(gridStepSize * x, 0f, gridStepSize * y);
        }
        Debug.Log($"estimated bits needed - {Mathf.Ceil(Mathf.Log(gridSizeX * gridSizeY, 2))}");

        GenerarJugadoresIniciales();
        GenerarPatrullas();

        rondaIniciada = true;

        StartCoroutine(GeneradorDeJugadores());
    }