GMRoomLoader v2.0.0
Overview
This release marks the first major update since the initial v1, introducing a fully rewritten documentation, an improved demo project and a major API overhaul with a shift from snake_case to PascalCase. It brings powerful new features and optimizations, marking a major step up from v1 and setting a new baseline for the library.
General
-
Completely rewrote and significantly improved the Documentation, now built with VitePress and hosted on GitHub Pages. You can find the old documentation archived here.
-
Fully reworked the demo project with examples for all common loading and screenshotting operations, configurable through the DBG ImGui interface. The demo is now much clearer and easier to use.
-
BREAKING CHANGE! Converted the entire API from the
snake_caseto thePascalCasenaming convention for consistency with other popular GameMaker libraries (and because I’ve grown to like it more). -
BREAKING CHANGE! The minimum supported GameMaker Runtime version is now v2024.13.1.242.
RoomLoader
-
Added optional scaling and rotation to .Load() and .LoadInstances().
-
Added .LoadTilemap() for loading individual tilemaps with optional mirroring, flipping, rotation and tileset.
-
Added State Management before Loading and Screenshotting using a Builder pattern with a Fluent Interface - an alternative way to set up optional arguments for core library methods.
-
Added .DataInitAll() for initializing data for all rooms in the project, with optional blacklist.
-
Added .DataGetLayerNames() for getting an array of layer names.
-
Added .DataGetInstances() for getting formatted instance data for custom processing.
-
Optimized tilemap initialization and loading.
-
BREAKING CHANGE! Renamed
.TakeScreenshot()to .Screenshot(). -
BREAKING CHANGE! Renamed
.TakeScreenshotPart()to .ScreenshotPart(). -
Fixed Screenshotting ignoring
ROOMLOADER_FLAG.TEXTSflags.
Payload
- Renamed
RoomLoaderReturnData()toRoomLoaderPayload(). Referenced as Payload in the documentation. - Made layer destruction in .Cleanup() optional to avoid destroying shared layers.
- Added .GetInstance() for fetching loaded instances using their unique room IDs.
- Added new .DepthAbove() and .DepthBelow() methods for shifting loaded layer depths above or below a given depth. Simplifies depth juggling between host and loaded rooms.
- Added an option to not destroy loaded layers during .Cleanup() to avoid destroying merged layers.
- Fixed .Cleanup() skipping Destroy events for instances.
Configuration
- Added ROOMLOADER_MERGE_LAYERS that determines if loaded layers should be merged with existing ones or created anew.
- Added ROOMLOADER_DELIVER_PAYLOAD to speed up loading in cases where Payload isn’t necessary.
- Removed
ROOMLOADER_LAYER_PREFIXand layer name prefixing altogether. - Removed
ROOMLOADER_ROOMS_RUN_CREATION_CODE. - Removed
ROOMLOADER_SEQUENCES_PAUSE.
Other Notes
- Particle System loading is still broken due to a GM bug. Investigating.
- The demo project now includes a utility function for exporting screenshots of all rooms in the project (it is not part of the library).
Files
Get GMRoomLoader
GMRoomLoader
Free & Open Source GameMaker library for loading rooms at runtime, nominated twice in the GameMaker Awards.
| Status | Released |
| Category | Assets |
| Author | Gleb Tsereteli |
| Tags | cookbookjam, GameMaker, prefabs, Procedural Generation |
More posts
- Vote for GMRoomLoader in the 2025 GameMaker Awards!2 days ago
- GMRoomLoader v2.4.023 days ago
- GMRoomLoader v2.3.040 days ago
- GMRoomLoader v2.2.052 days ago
- GameMaker Awards 2025 - Nominate GMRoomLoader for Best Tool!54 days ago
- GMRoomLoader v2.1.061 days ago
- GMRoomLoader v1.8.0Jan 21, 2025
- GMRoomLoader nominated for Best Tool!Aug 28, 2024
- GMRoomLoader v1.7.0May 31, 2024

Leave a comment
Log in with itch.io to leave a comment.