Creo que la mejor forma de armar los niveles sería crear un editor propio que permita ensamblar las piezas básicas.
Para detectar el cursor dentro de las piezas no recomiendo usar collision_point, ya que se deben activar las colisiones precisas y la revisión se hace pixel por pixel, mientras más grandes sean los sprites más lento será el sistema. Se me ocurren dos métodos para optimizar la detección: El primero sería definir los objetos con el sistema de física (Box2D) y usar physics_test_overlap para detectar la superposición con un objeto pequeño que represente al cursor. El segundo método sería definir las áreas de colisión de forma geométrica y detectar el cursor con funciones como estas:
point_in_circle
point_in_rectangle
point_in_triangle
point_in_polygon
punto_en_rect_rotado
Algo que requiere un poco de trabajo es lograr que los bordes de las figuras se vean nítidos al rotarlas. Una forma fácil es usar un nivel alto de antialias con display_reset, pero no es recomendable usarla en teléfonos proque requiere mucho procesamiento. Otra forma es usar texturas o sprites con un contorno igual al color del fondo, así el borde se verá nítido simplemente con activar la interpolación entre pixels, pero tendrás que ser muy cuidadoso en la forma de ensamblar las piezas.
Para detectar el cursor dentro de las piezas no recomiendo usar collision_point, ya que se deben activar las colisiones precisas y la revisión se hace pixel por pixel, mientras más grandes sean los sprites más lento será el sistema. Se me ocurren dos métodos para optimizar la detección: El primero sería definir los objetos con el sistema de física (Box2D) y usar physics_test_overlap para detectar la superposición con un objeto pequeño que represente al cursor. El segundo método sería definir las áreas de colisión de forma geométrica y detectar el cursor con funciones como estas:
point_in_circle
point_in_rectangle
point_in_triangle
point_in_polygon
punto_en_rect_rotado
Algo que requiere un poco de trabajo es lograr que los bordes de las figuras se vean nítidos al rotarlas. Una forma fácil es usar un nivel alto de antialias con display_reset, pero no es recomendable usarla en teléfonos proque requiere mucho procesamiento. Otra forma es usar texturas o sprites con un contorno igual al color del fondo, así el borde se verá nítido simplemente con activar la interpolación entre pixels, pero tendrás que ser muy cuidadoso en la forma de ensamblar las piezas.