Skip to main content

Compatibility Notes

Some updates include certain changes which require existing projects to be modified to retain compatibility with updated versions. This section documents those changes as well as the remedies to any incompatibilities they create.

1.1.4#

  • New dependency: angle_refract now depends on emod for accurate modulo calculation
    • Projects currently using angle_refract must also import emod when updating.
  • Obsolete dependency: instance_link no longer depends on obj_server_gmlp
    • Projects which included obj_server_gmlp only for instance_link can now safely remove it.
  • Deprecated: universal image_angle_previous, image_x/yscale_previous
    • These were previously included for full functionality of instance_link, which no longer requires them.
    • Universally updating these variables has a measurable performance cost whether or not they are used.
    • This feature is now disabled by default, but can be re-enabled by modifying obj_server_gmlp:
      • In the object Create Event, under "Configure GML+", change expanded_image_previous to true.
      • No other modifications to obj_server_gmlp should be made.

1.1.3#

  • Added support for objects to foreach
    • Due to the way GameMaker handles pointers, this may potentially disrupt integer foreach loops if the integer happens to match an object asset index.
    • If existing code with an integer foreach loop now attemps to loop through instances of an object, use a repeat loop instead.
  • Fixed string_explode returning an empty first value if the delimeter doesn't exist in the string
    • Any code that previously handled empty first values must be updated to assume an array length of 1 if no delimeter was found in the string.
  • Fixed string_implode returning a string with a delimeter even if only one array value exists
    • Any code that previously handled single-value strings with delimeters must be updated to assume no delimeter is present.
  • Renamed obj_gmlp to obj_server_gmlp for consistency with other XGASOFT middleware
    • Any existing references to the old name must be updated to match the new nomenclature
    • (Recommended: Use global search & replace)

1.1.2#

  • Improved foreach syntax and behavior
    • Parentheses now close before call keyword rather than after
    • Existing instances of this function must be updated to match the new syntax
    • (Recommended: Use regex global search & replace in external code editor)

1.1.0#

  • Changed timer_get and timer_set to timer_get_time and timer_set_time for clarity and consistency with other get and set functions.
    • Existing instances of these functions must be renamed to match the updated syntax
    • (Recommended: Use global search & replace)
  • Replaced array_create_2d with array_create_ext, now supporting arbitrary dimensions
    • Existing instances of the old function must be renamed to match the new function.
    • Instances providing two dimensions and a default value require no further changes.
    • Setting a default value is now required, as additional arguments are treated as new dimensions preferentially. Instances which previously set no default value must be updated to include one.
    • (Recommended: Use global search & replace)
  • Replaced array_fill_2d with array_fill, now supporting arbitrary dimensions
    • Existing instances of the old function must be renamed to match the new function.
    • (Recommended: Use global search & replace)
  • Replaced array_width and array_height with array_depth to complement the new built-in array_length function
    • array_width generally maps to array_length and array_height generally maps to array_depth. However, behaviors may not be identical in all cases due to multidimensional arrays now acting as arrays within arrays. Evaluate existing code and update as needed.
    • (Recommended: Use global search & replace)
  • Replaced array_find_col and array_find_row with array_find_index and array_find_dim
    • array_find_col generally maps to array_find_index and array_find_row generally maps to array_find_dim. However, behaviors may not be identical in all cases due to multidimensional arrays now acting as arrays within arrays. Evaluate existing code and update as needed.
    • (Recommended: Use global search & replace)