itch.io is community of indie game creators and players

Devlogs

GMRoomLoader v2.0.0

GMRoomLoader
A downloadable GameMaker library

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_case to the PascalCase naming 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.TEXTS flags.

Payload

  • Renamed RoomLoaderReturnData() to RoomLoaderPayload(). 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_PREFIX and 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

  • GMRoomLoader v2.0.0.yymps - Local Package 29 kB
    11 days ago
  • GMRoomLoader Demo.yyz 1.2 MB
    11 days ago
  • GMRoomLoader First Setup.yyz 341 kB
    11 days ago
Download GMRoomLoader
Leave a comment