Skip to main content

Version History


  • Added collision_line_meeting for identifying exact coordinates of a collision intersection
  • Added ds_struct_equals for recursively comparing contents of structs
  • Added struct support to is_empty
  • Added emod for calculating remainder with Euclidean division (always positive result)
  • Fixed angle_refract clipping mirror angle below 0 degrees
  • Improved instance_link to no longer depend on obj_server_gmlp
  • Improved accuracy of game_get_step when obj_server_gmlp is present
  • Optimized mouse and frame-time constants
  • Optimized game_get_time
  • Deprecated universal image_angle_previous, image_x/yscale_previous for performance reasons, as they are no longer needed for instance_link (see Compatibility Notes)


  • Added ds_struct_copy for "deep cloning" structs and all contents (including other structs/arrays)
  • Added ds_struct_find_first, ds_struct_find_next, ds_struct_find_previous, ds_struct_find_last
  • Added support for objects to foreach (loops all instances of an object)
  • Improved wait timer accuracy when application is running below performance target
  • Fixed string_explode returning an empty first value if the delimeter doesn't exist in the string
    • Strings with no delimeters will now return the string as an array of one value as expected
  • Fixed string_implode returning a string with a delimeter even if only one array value exists
    • Strings will now only include delimeters when two or more array values exist as expected


  • Improved foreach syntax and behavior


  • GameMaker Studio 2.3.1 support!
    • Completely reorganized code structure, updated to new standards
  • Added foreach function to iterate the contents of a wide variety of data types, including numbers, strings, arrays, and data structures
  • Added is_empty function to check the contents of a wide variety of data types, including numbers, strings, arrays, data structures, surfaces, and buffers
  • Added surface read and surface_write functions for handling surfaces as strings
  • Added draw_get_surface to restore broken surfaces from cached memory
  • Added camera_get_view to complement built-in view_get_camera function
  • Added ds_struct functions for interacting with structs like other data structures
    • Supports struct hierarchies, unlike built-in functions!
  • Added ds_grid_empty function, bringing parity between grids and other data structures
  • Added instance_link function for grouping objects by position, rotation, and scale
  • Added image_angle_previous, image_xscale_previous, and image_yscale_previous built-in variables to all instances via obj_gmlp
  • Added angle_reflect and angle_refract to Angle Functions
    • Includes new demo room!
  • Added support for animation curve assets to interp. Make your own custom curves using the built-in visual editor in GameMaker Studio 2.3!
  • Added string_explode, string_implode, and string_trim functions for converting data between strings and arrays
  • Added string_upper_* and string_lower_* functions for manipulating string case on an individual, per-word, or whole-string basis
    • string_upper_all and string_lower_all are 2x faster than equivalent built-in GML!
  • Multiple changes to array functions:
    • Added array_clear and array_shuffle for greater parity with data structure functions
    • Replaced array_create_2d with array_create_ext, now supporting any number of dimensions!
    • Replaced array_fill_2d with array_fill, now supporting any number of dimensions!
    • Replaced array_width and array_height with array_depth to complement the new built-in array_length function
    • Replaced array_find_col and array_find_row with array_find_index and array_find_dim for better compliance with updated GML behaviors
    • Removed array_sort, array_delete_*, and array_insert_* functions, as they have been replaced by official functions
  • Fixed wait returning true on the first frame of the first cycle
    • Now will wait the specified duration once before first returning true


  • Initial release