Bien, pensé en la variable imagen para facilitar el cambio de sprite, aunque veo que es mejor que se convierta en una variable global.
Para no modificar tanto los objetos que ya tenemos, se me ocurre crear una habitación que sea el menú principal (o un menú de selección de imagen). Al seleccionar una imagen se debe asignar la variable (ahora global) e ir a la habitación que contiene el objeto controlador:
[gml]
global.imagen = spr_x;
room_goto( rmPuzzle );
[/gml]
En el objeto controlador se deberían borrar las líneas donde se definen las variables que ya fueron definidas por el otro objeto, y agregar la palabra global. donde se necesite. También se podrían asignar otras variables como la separación entre objetos y la cantidad de piezas en horizontal y vertical. El diseño del menú dependerá del tipo de menú.

En código para soltar la pieza se pueden meter los sonidos y disparar otras acciones como las que mencionas. Para el sonido sólo se necesita la función audio_play_sound. El mensaje puede ser una instancia que es creada por la pieza y que se desvanece poco a poco, tal vez quieras que el mensaje mostrado dependa de otras variables como la puntuación, el tiempo, combos, etc., en ese caso se podría necesitar pasar algunos datos al controlador y que éste se encargue de decidir qué mensaje mostrar; por ejemplo para detectar un combo o cadena (varias piezas correctas seguidas) se puede iniciar una alarma en el controlador, si se coloca otra pieza correcta entes de que acabe la cuenta regresiva se incrementa la variable combo. Para regresar la pieza a su posición anterior se puede usar un algoritmo parecido al que se usó para mezclar, es más, se puede usar el mismo código, sólo hay que cambiar el estado de la pieza a MEZCLA.
Quedaría más o menos así:
[gml]
///Soltar pieza

if( ESTADO = ACTIVO ) //si esta activa
if( global.seleccion = id ) //y esta seleccionada
{
    global.seleccion = noone; //seleccionar nada
   
    //si esta cerca de la posicion correcta
    if( point_distance(x,y,xstart,ystart) < 64 )
    {
        x = xstart; //plop
        y = ystart;
        ESTADO = CALZA; //cambiar estado
        global.calzadas += 1; //incrementar contador
        audio_play_sound( snPlop, 1, false ); //sonido plop
       
        if( obControl.alarm[0] > 0 ) //si la alrma continua
            global.combo += 1; //la nueva pieza incrementa el combo
        else //si la alarma ha terminado
            global.combo = 0; //restablecer variable
        obControl.alarm[0] = room_speed; //alarma de 1 segundo
    }
    else //la pieza NO esta en la posicion correcta
    {
        audio_play_sound( snError, 1, false ); //sonido error
        ESTADO = MEZCLA; //regresar a la pos. anterior
    }
}
[/gml]
Debo decir que hacer que la pieza regrese a la posición anterior no me agrada, porque en rompecabezas grandes a veces es necesario poner piezas en posiciones aproximadas para completar varias secciones de forma independiente.

Ya he pensado en formas de cortar las imágenes dentro del juego, pero aún no me decido, ya que todas tiene sus ventajas e inconvenientes.

Hola Clamud, gracias por seguir con el tema...tengo un nuevo hallazgo, cada vez que mezclo las piezas, se van duplicando, parece ser que la memoria de las listas se van almacenando en cada tiro, por decirte algo, tengo 6 piezas por cada pieza,valga la redundancia, como lo podría resetear para que empiece con lista nueva y no almacene las anteriores...te pongo una imagen de lo dicho, este juego es de 20 piezas, logre alinearlas bien después de un largo batallar.Ahora, cuando se mezclan , no ve ve tan bonito como tu ejemplo, como son muchas piezas, se aglomeran mucho...se ve muy saturado...a lo mejor para oxigenar y darle aire a la room sera mejor que se distribuyan alrededor del marco, que opinas_.
Saludos.

El problema no es la lista, ya que la lista por sí misma no dibuja las piezas, sólo sirve para mantener el orden de profundidad y no tener profundidades repetidas. Para limpiar la lista se usa la función ds_list_clear, también se podría destruir al regresar al menú con la función ds_list_destroy.

Parece que en realidad se están creando más piezas de las necesarias, ¿has modificado el evento Create del controlador?

Distribuir las piezas alrededor del marco es fácil, mañana muestro un ejemplo.

Hola Clamud, los códigos no han tenido variación excepto en la posición del puzzle en la room y en el sector donde se distribuyen las piezas al mezclarse,...a estas alturas del juego, ya se me lleno la room de piezas, todavía no estoy seguro si se duplican cuando selecciono las piezas, pero es un comportamiento inusual, pues en el de 9 piezas corre bien....ah, un detalle...quise ponerle el código al botón independiente pero me marco error, supongo que fue porque no borre el draw...borre de nuevo el boton que añadí y también el código adjunto como alternativa, fue entonces que ahora me salio repetido tres veces el que dibuja el draw, voy a seguir revisando para ver donde esta la modificación, por lo pronto te adjunto los códigos, no le veo la falla.
Saludos.

Hola Clamud, UUFFF al fin descubrí lo de las piezas que se multiplicaban, sabes cual era el pegon? ja, ja, ja...tenia en la room 4 veces el controlador del rompecabezas, tamaño quebradero de cabeza, ahora estoy enredado con la alarma que me hacen aparecer los mensajes....todavía nada...me atreví a sustituirle el show mensaje del nivel completado por draw_sprite (spr_fel,1,224,544); pero no lo proyecta. ya el juego lo tengo bastante adelantado, por el momento solo son dos juegos, de 9 y 20 piezas, voy a empezar a probar como integrarle mas imágenes y plantillas...sera que si las plantillas se pongan en negro los podrá dibujar el draw y así se evitarían el montón de sprites, solo con la imagen completa que se quiera cortar.
Saludos.

Hola Clamoud, no pude poner las variables para los textos, no me sale bien, estoy haciéndolo muy mal...es decir si el rompecabeza es de 9 piezas quiero que salgan en este rompecabezas 3 mensajes, un mensaje por cada  tres piezas correctas indistintamente de su posición, pero en el rompecabezas de 20 piezas quiero que salgan 4 mensajes por cada 4 piezas correctas, independientemente de las piezas,, me estoy haciendo un caos, pues no estoy muy claro como manejar las variables de los textos.Tengo que poner acaso un controlador de los textos independiente  por cada rompecabezas_...Ahora si me complique...Los textos son unas tarjetitas como las del juego monopolio, tengo sus scripts, mi duda es si se podran dibujar directamente los sprites con el draw, como instancias, o tengo que hacerles su objeto para poder aparecer en la room? Gracias por tu tiempo.
Saludos.

Hola , lo prometido.Este es el resultado del ensayo de rompecabezas de 9 y 20 piezas.Puede ser mejorado con tus aportes, para que logremos un atractivo y bonito rompecabezas y pueda servir como orientación o guía metodológica para los que nos iniciamos en esto.Gracias a Clamud y mousteroix por incentivarme en poder terminarlo. Saludos.

excelente aporte solsticio, un buen trabajo, ahora vamos a seguir trabajando y poder hacer de este proyecto un gran trabajo,
clamud eres un makina, haber si puedes hechar una mano en mejorarlo, nos acordaremos de ti cuando seamos millonarios, xdd
saludos a todos

alguien puede aportar plantillas de puzzles para photoshop de diferentes cantidad de piezas? 

hola , subo plantillas que pueden ayudarte, lo mejor es aprender a hacerlas sobre todo , el recorte .En Photoshop te sugiero que la linea de las plantillas sea de 1 pixel para evitar que la separación sea muy notoria y se deforme la imagen.En lo que permita la capacidad de subida de este foro los ire subiendo , te adjunto un link para la elaboración de las piezas, debes hacerlo con mucho cuidado .De ello depende el exito de los sprites.
https://www.youtube.com/watch?v=M-a7cWzp7nY

puedes aportar de 20 piezas y de 9 que no logro encontrar, como los que usaste en el proyecto..
graciassss

hola mira de esta forma he implementado el puzzle pero las pestañas de las piezas me aparecen de esta manera, que no encaje bien,,solsticio o clamud o alguien que pueda echar una mano haber que hago mal.

ayudaaaaaaaaaa!!!!!!!

Hola, ajusta estos valores hasta que calcen bien.Estoy preparando unas imagenes para ilustrar como hice las plantillas y los cortes, espero te sirvan.
saludos.

Hola estos son los archivos, si tienes alguna duda no dejes de comentar.
Saludos.
Pd. En estos días subiré avances con rompecabezas, ojala Clamud nos de una manito para lograr mejores resultados.Logre hacer un switch para cambiar imagenes, pero no he podido lograr que los recortes negros de la plantilla se conviertan en la imagen seleccionada.

excelente tu aporte solsticio, lo suyo seria eso que al elegir una imagen del juego del puzzle esta se cortara automaticamente y se formara la imagen del puzzle, voy a investigar un poco,
espero que clamud nos ayude, pero veo que estará ocupado porque le estoy esperando para otra duda!