Veamos el tema de como funciona la memoria en game maker:
Sprites: Game Maker junta todo lo que está asignado en una misma hoja de texturas, sean fondos, sprites juntos o sprites con multiples imágenes (spritesheets). Es cosa del desarrollador el separarlo todo según convenga para optimizarlo. Lo normal, dependiendo de la resolución es usar hojas de texturas entre 1000x1000 y 2000x2000.
Una organización para un juego largo podría ser crear X hojas de textura y asignar los objetos, por ejemplo:
- Hoja Default: Elementos comunes a todos los niveles, hay quien la deja vacía o como cajón desastre para luego ordenarla.
- Menus: Gráficos que sólo aparecen en los menús o al iniciar el juego.
- Juego: Elementos comunes a todos los niveles, cómo puede ser el personaje y sus animaciones, elementos del interfaz, objetos, efectos recurrentes, disparos, etc.
- Mundo1: Elementos de escenario y enemigos que sólo aparecen en niveles del mundo1
- Mundo2: Elementos de escenario y enemigos que sólo aparecen en niveles del mundo2
- Mundo3: Etc.
- EnemigosX: Si planeas mezclar elementos entre niveles (enemigos especiales que pueden salir en distintos mundos, mejor poner todos aparte.
- PersonajesX: Lo mismo que con enemigos, retratros, etc.
Además entre "rooms" Game Maker ofrece la función draw_texture_flush(); que limpia toda la memoria de texturas lo que permite gestionar la memoria en plan borrón de lo ocupado en niveles anteriores. Siempre se recomienda usar la función en el primer objeto que se cree en cada nivel, por ejemplo, y un objeto por textura que se desee cargar (cada objeto asignado a una de las hojas de textura que aparezcan, que puede ser de incluso 1 pixel.).