A downloadable extension

Buy Now$2.99 USD or more

NOTICE: Requires a registered license of GameMaker Studio 2 (GameMaker Studio 1 not supported)

Download the free trial now!

Download from the GameMaker Marketplace

Unified. Simplified. Amplified.

With a history now spanning more than 20 years, GML has come a long way. However, organic growth has left many oddities, inconsistencies, and omissions behind.

That's where GML+ comes in: GML+ is a collection of useful functions and built-in variables designed to fill the gaps in vanilla GML and supplement it with quality-of-life enhancements it should've had all along.

Like GML itself, GML+ is not set in stone and will continue to grow with its parent language. What's more, most GML+ functions come with few external dependencies. You can pick-and-choose only the functions you need for your project. Now that's the best of both worlds!

Originally included as separate functions in other XGASOFT products, now you can have them all in one convenient package! Once you go GML+, you won't want to go back!

It features...

  • Automatic integration into your project--just import and start using it!
  • Additional language features, such as:
    • Universal data functions like foreach and is_empty
  • Built-in variables and macros, such as:
    • Extended mouse variables, unifying behavior with instances
    • Extended instance properties, creating new possibilities for game design
    • Frametime constants (easy delta_time)
  • Dozens of useful functions you always wished were part of vanilla GML, such as:
    • Extended array functions, unifying behavior with data structures
    • Extended data structure functions, unifying behavior among different types
    • Extended sprite functions, unifying behavior with new GMS2 features
    • Extended angle functions for trigonometry (robust lengthdir), reflections, and more
    • Interpolation with easing (robust lerp), including custom bezier and user-generated curves
    • Filesystem functions (robust file_find_*)
    • Timer functions (robust alarm)
    • String manipulation functions
    • Recursive struct functions
    • Even/odd number functions
    • Hex color functions
  • ... And more! See the complete documentation for details!

For a complete list of features, visit the online documentation!

Online Documentation

End-user License Agreement (EULA)

Rated 4.5 out of 5 stars
(2 total ratings)
Made withGameMaker
TagsAnimation, Game Design, Game engine, GameMaker, Math, sourcecode
LinksHomepage, Documentation, Twitter, Facebook, EULA


Buy Now$2.99 USD or more

In order to download this extension you must purchase it at or above the minimum price of $2.99 USD. You will get access to the following files:

gmlp-1.1.4.zip 10 MB

Development log


Log in with itch.io to leave a comment.

I know that this extension hasn't been updated in a while, but I am having trouble importing this extension into my project since using any of the frame constants causes it to crash at compile time. it seems that the code in the global gml_pragma is not firing off. Any help would be appreciated.

Hello, and thanks for using GML+! The extension has been tested working in the latest version of GameMaker Studio, including the frame constants feature. Can you please send a copy of your error output to contact@xgasoft.com? I'm certain we can get you up and running!

Great utility asset. saved me time writing a lot of this myself.

BTW. importing the "instance_find_var" script in your project will stop the HTML export from working.


Great extension, but I found an issue that stumped me for a few days. in device_mouse_check_region_gui() if you feed it allignment (in my case fa_left and fa_top) it will only check for device 0, not whichever argument it was passed. 

I believe the error is in line 129 & 130.

It's also possble that i'm using an older version of the extension, in which case disregard


Nice catch - apologies for that. I've gone ahead and updated the script to fix this issue. Since it's just a typo, there's no version change. You can download version 1.1.1 again and reimport the device_mouse_check_region_ script. Thanks for the report!

~Lucas C.

Excellent! Thank you!