Hola amigos tengo un problema y es que para mi juego yo tengo una figura como un circulo y dentro del objeto_circulo quiero crear (cualquier cosa) pero sin salirse de la mascara de colisión precisa y hasta ahora solo tengo esto...

objeto_circulo evento create
var xx;
var yy;
repeat(50){
    xx = random_range(bbox_left, bbox_right);
    yy = random_range(bbox_top, bbox_bottom);
    if(position_meeting(xx, yy, object_index))
    {
        obj = instance_create(xx, yy, obj_r);
        }
    }
}

El código hace que los objetos se creen solo dentro de la mascara de colisión (si esta es precisa) hasta aquí todo bien pero el problema ahora es que los objetos se crean uno encima de otros y no cubren totalmente la figura, como puedo hacer que los objetos no se interpongan una encima de otras y que los objetos recorran todas las posiciones de mi objeto circulo?? gracias por su tiempo.

intenta utilizar la funcion"ranzomize()" dentro del repeat a ver que sucede.

No es mejor ir con un ciclo desde izquierda a derecha, arriba a abajo y alternando entre si se crea o no el objeto con un random? me parece mas rapido y menos codigo para el efecto que quieres hacer

var xx;
var yy;
repeat( 50 )
{
   do{
     xx = random_range(bbox_left, bbox_right);
     yy = random_range(bbox_top, bbox_bottom);
     }
   until !place_meeting( xx,yy,object_index ){
            instance_create( xx,yy,obj_r );
          }
}

A efectos practicos yo creo que no, suponiendo que uno tuviera un sprite de 20 x 20, si, super pequeño, un ciclo debería iterar 20 veces en horizontal por cada ciclo en vertical. O mejor dicho unas 400 veces
Lo que es mejor que se repita solo 50 veces con un repeat

a lo mejor me equivoco, pero esa es mi impresion.

Lo intento hacerlo en random, con un repeat de 200 y me cubre la mayoría de la figura, pero no del todo, también pienso hacer lo mismo con un sprite de una manzana, y digo que ahí seria un problema porque no me cubriría completamente el sprite, entonces creo que seria mejor crear un ciclo que cubra todas las posiciones de la mascara de colision del objeto, pero no tengo idea de como hacerlo, que puedo hacer en este caso???

Los sprite de las figuras tienen un tamaño 400 a 500 pixeles, y los objetos que se crean dentro de la figuras son de  90x90 pixeles.

Con random pocas veces vas a lograr cubrir todo el sprite, puesto que es aleatorio, es muy probable que se acumule de un lado y deje vacio el resto.

Tendrías que idearte una manera de que la distribucion fuese un poco mas uniforme. Hay varias maneras, pero es super tedioso.

Lo que querés hacer, de recorrer el sprite entero se puede hacer con un ciclo dentro de otro, pero como dije anteriormente el costo es multiplicativo m x n.
20 de ancho por 20 de alto = 400 ciclos para un sprite chico. uno de 90 x 90, 8100 ciclos lo cual es una barbaridad.

Qué estas intentando hacer concretamente?

Una forma de distribuir uniformemente es utilizar el sitema de física:
Los objetos pequeños pueden tener fixtures simples (recomiendo la forma circular).
El área que encierra los objetos puede estar definida con una cadena de aristas.

Ejemplo en GMLive
Haz clic para crear instancias con forma y color aleatorios.

En tu juego las instancias se pueden crear en un ciclo for en el centro de la figura grande. Es necesario variar ligeramente la posición de las instancias, porque si no, es posible que el vector de esplazamiento.sea cero.
El contorno de la figuras grandes se puede definir con paths, así se puede usar el editor de paths y no se deben escribir los números a mano.
Las instancias se mueven al crearse y después se estabilizan. Si no quieres que se vea eso, puedes poner una pantalla de carga.

Perfecto esto era lo que estaba buscando, funciona perfectamente, mil gracias amigo!!!