A summary of my GameMaker assets

This post serves as a collection of descriptions and links to various GameMaker-related assets and extensions that I have published over time.

It was supposed to be a short post, but turns out that I have made a lot of things.

Also should answer the "how do I support your work" question that some readers have.

(mouseover images to view animations, where available)

GMLive.gml (working title)


(click for a full sized gif)

While Apollo executes Lua code, this runs actual GML code and with specific purpose of enabling to edit the game logic without having to recompile the game. The way this works is:

  • Scripts that are desired for live-editing are marked by adding a live_call line into them.
  • The game runs as normal while watching their files in the project directory for changes.
  • When "live" scripts' changes are detected, they are recompiled and subsequently ran via a custom GML compiler + bytecode interpreter.

The custom scripting language is designed to be extremely alike to GML, and has full access to all GM functions, scripts, assets, and variables, meaning that it is able to compile and run GML code practically identically to how GameMaker itself would.

Of course, such wizardry comes at a price - having full access to GML structures required the thing to work in GML itself, but having it work in GML meant sacrificing some performance (compared to Apollo), which makes it less fit for modding purposes - that role will remain occupied by Apollo.

To conclude, this can change how GM games are made, and is a very exciting project for me.
I intend to have a public version available in the second half of Aug 2017.

Versions: GMS1, GMS2
Platforms: All non-HTML5 platforms (waiting for a bugfix for JS)
Price:: $29.95
Links:: blog post · itch.io · marketplace · documentation

Apollo

Allows to execute Lua code in GameMaker games, permitting to use it for debugging, modding, live coding, and numerous other purposes.

You can have Lua access GM functions, scripts, instances, and variables.
With being able to define what should be accessible, this allows for "deep" integrations and high-level scripting API design for GameMaker games.

Comes with a GML->Lua converter to simplify learning process.

Versions: GMS1, GMS2
Platforms: Windows, Mac, Linux
Price:: $14.99
Links:: itch.io (has demo) · marketplace · documentation

Non-sandboxed filesystem

Offers a huge quantity of variations of built-in functions that are not subject to sandboxing rules.

You can read and write files in the game directory, My Documents, or wherever else your heart desires (and OS allows).

Is fast, compact, and has zero dependencies. Comes with C++ source code.

Versions: GMS1, GMS2
Platforms: Windows (Mac and Linux versions are being worked on)
Price:: $3.99
Links:: itch.io (has demo) · marketplace · documentation

zlib functions

Utilizes zlib to provide functions for compressing and decompressing sections of buffers.

Intended to be used for optimizing disk use for save files, optimizing network use for games involving sending large sections of data, and so on.

Versions: GMS1, GMS2
Platforms: Windows
Price:: Free
Links:: itch.io · marketplace · documentation

Improved INI functions

Provides a set of custom INI-related functions to resolve numerous issues with GameMaker's built-in INI functions.

Allows to open multiple INI files at once, handles quotation and escape characters correctly, preserves comments and formatting, allows to read from string and save to string, supports encryption, and more.

Versions: GMS1, GMS2
Platforms: All
Price:: $3.99
Links:: itch.io (has demo) · marketplace · blog post

Improved JSON functions

Akin to above, provides a set of custom functions to resolve various issues with GameMaker's built-in JSON functions.

Allows to tell apart the nested structures inside the JSON, recognizes JS boolean values as separate type (instead of 1 and 0), includes automatic memory management (prevents memory leaks), and has various other API improvements.

Versions: GMS1, GMS2
Platforms: All
Price:: $3.99
Links:: itch.io (has demo) · marketplace · blog post

Steamworks.gml

Expands GameMaker's set of Steam-related functions to include Steam P2P networking, Steam Matchmaking, and related APIs.

Versions: GMS1, GMS2
Platforms: Windows, Mac, Linux
Price:: Free
Links:: itch.io (example) · github (source code) · documentation

Steamworks.gmk

Offers a set of basic Steam-related functions (stats, achievements) for games made with older versions of GameMaker.

Versions: GM5..GM8.1
Platforms: Windows
Price:: Free
Links:: github

JS click event handler

Allows to use browser-level events to open links in new tab, open dialogs, start audio playback on mobile, and anything else that requires direct user interaction.

Versions: GMS1, GMS2
Platforms: HTML5
Price:: Free
Links:: itch.io (has demo) · blog post

HTML5 loading screens

A small extension for customizable loading screens for GameMaker games.

Set splash image, loading bar and background colors, sizes. Supports animated splash screens.

Versions: GMS1, GMS2
Platforms: HTML5
Price:: Free
Links:: itch.io · blog post

screen_refresh

A minimalistic extension that brings back the obsolete screen_refresh function into GameMaker: Studio and GameMaker Studio 2. The function in question the contents of display buffer onto the screen, allowing for visual debugging (ever wanted to visualize procedural content right in the loop that generates it?), simple synchronous states (message box functions are a good example), and more.

Versions: GMS1, GMS2
Platforms: Windows, Linux (Mac planned)
Price:: $0.99
Links:: itch.io

window_flash

An extension that adds a set of functions related to flashing the game's window frame and/or taskbar button to notify the viewer of something happening - for example, if you have matchmaking in a multiplayer game, the user might minimize the game, and should take timely notice when a match is found.

Versions: GMS1, GMS2
Platforms: Windows
Price:: $0.99
Links:: itch.io (has demo) · marketplace

window_progress

Another purpose-specific extension, this one makes use of the ability to display "progress bars" inside the window' taskbar buttons on Windows7+

Versions: GMS1, GMS2
Platforms: Windows
Price:: $0.99
Links:: itch.io (has demo) · marketplace

Native cursors

Allows to set system-level cursors for the game.

Might not seem like a big deal, but it is - when you are drawing the cursor from the game code, there is up to 1 frame worth of lag on mouse position, or slightly more depending on vsync and system configuration. The issue becomes more apparent if the display's refresh rate exceeds the game's framerate - a 30fps\60fps always cursor looks out of place on a 120fps display.

However, by using native APIs and a couple of tricks, it is possible to task the OS with drawing the cursor, which draws it separately from the game window and results in no additional latency.

Can be considered an important feature for games with mouse aiming and fast reaction times.

Versions: GMS1, GMS2
Platforms: Windows, HTML5
Price:: $0.99
Links:: itch.io (has demo)

Native mouselock

Constraints the mouse within selected screen region.

Uses system-level functionality, which has it that the mouse can never "escape" the region (which is impossible to do with display_mouse_\window_mouse_ functions due to order of operations).

Generally a good thing to have if the game involves any quick mouse actions, as players with multiple monitors can still accidentally click outside the game (on a different screen) even if it's in fullscreen mode.

Versions: GMS1, GMS2
Platforms: Windows
Price:: $0.99
Links:: itch.io (has demo)

MouseLock + PointerLock


(click for web demo)

A slightly different version of mouselock, for first-person games and any others that have mouse-controlled aiming without displaying the actual cursor.

Versions: GMS1, GMS2
Platforms: Desktop, HTML5
Price:: Free
Links:: itch.io (has demo) · marketplace

Window commands

A purpose-specific extension that allows to minimize/maximize/restore the game window, enable/disable window buttons, and have custom code run when the buttons are clicked (e.g. you can have the user confirm exiting the game

Versions: GMS1, GMS2
Platforms: Windows
Price:: free
Links:: itch.io (has demo)

Screenshot save dialog

A very simple extension that offers unified API for displaying file dialogs for saving game' screenshots. Construct 2 version was produced because the code is identical in this case.

Versions: GMS1, GMS2, Construct 2
Platforms: Windows, HTML5
Price:: Free
Links:: itch.io (has demo)

Other things

There is also a huge quantity of GameMaker-related extensions, tools, and examples filed under GameMaker category of this blog.

Have fun!

Related posts:

3 thoughts on “A summary of my GameMaker assets

  1. I’m impressed by your projects. I’ve already tried some of them and now I’m truly looking forward to buy the Apollo extension @ç@

  2. Would you consider making something to fix the current GMS1 problem with HTML5 games?? They run at the same rate as the monitor’s refresh rate, rather than the step speed specified in the room, so if it’s higher than 60 it’ll probs be too fast.

Leave a Reply

Your email address will not be published. Required fields are marked *