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_refractnow depends onemodfor accurate modulo calculation- Projects currently using
angle_refractmust also importemodwhen updating.
- Projects currently using
- Obsolete dependency:
instance_linkno longer depends onobj_server_gmlp- Projects which included
obj_server_gmlponly forinstance_linkcan now safely remove it.
- Projects which included
- 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_previoustotrue. - No other modifications to
obj_server_gmlpshould be made.
- In the object Create Event, under "Configure GML+", change
- These were previously included for full functionality of
1.1.3#
- Added support for objects to
foreach- Due to the way GameMaker handles pointers, this may potentially disrupt integer
foreachloops if the integer happens to match an object asset index. - If existing code with an integer
foreachloop now attemps to loop through instances of an object, use arepeatloop instead.
- Due to the way GameMaker handles pointers, this may potentially disrupt integer
- Fixed
string_explodereturning 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_implodereturning 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_gmlptoobj_server_gmlpfor 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
foreachsyntax and behavior- Parentheses now close before
callkeyword 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)
- Parentheses now close before
1.1.0#
- Changed
timer_getandtimer_settotimer_get_timeandtimer_set_timefor 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_2dwitharray_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_2dwitharray_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_widthandarray_heightwitharray_depthto complement the new built-inarray_lengthfunctionarray_widthgenerally maps toarray_lengthandarray_heightgenerally maps toarray_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_colandarray_find_rowwitharray_find_indexandarray_find_dimarray_find_colgenerally maps toarray_find_indexandarray_find_rowgenerally maps toarray_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)

X1