2024.400 - Current Version: IDE 556/Runtime 571
Download Links: Windows - macOS - Ubuntu Beta
- IDE Featured Changes
- Lots of fixes for Redefine Keys/hokeys not working in various editors, the Asset Browser, and also in the Redefine Keys part of Preferences - also fixes issues with some special keys being performed multiple times when you had only pressed it once
- Room Editor: Shift-clicking no longer cancels “select from any layer” mode every time you do the command #2463
- Room Editor: Deleting specific pre-2024.400-created child instances and then undoing the delete no longer transforms them into their parent object #5607
- Texture Group Editor: Changing values for “Custom Options” now correctly forces the asset compiler to rebuild those textures (so be aware your next build may take longer, etc.) #5603
- Variable Definitions: Inherited Asset-type definitions in child objects no longer show their parent’s values instead if the project was imported from 2024.2 #5606
- Runtime Featured Changes
- Building Projects: IDE and in-game errors now better advise when you have set incompatible texture compression settings for the current target #5604
- Garbage Collector: [VM] Allocating tens of thousands of arrays per frame no longer causes lengthy stalls and a potential memory leak #5677
- In-Game: [HTML5] Various array_…() and string_…() functions no longer crash if any optional argument is left empty, but then subsequent args are supplied #5593
- Live Wallpapers: Fixes for subscribing and un-sunbscribing from mouse events correctly - plus, a fix to stop these subscriptions affecting other targets (e.g., Windows) #5648
- IDE Featured Changes
- Local Package Integration: Git starter files are now created when importing a package to become a new project #5513
- Preferences: Fixed a GM crash on startup if any “Paths” field was left blank and saved in the last IDE session (Preferences now also blocks adding a blank path and will revert the path back to the default) #5488
- Project Saving: Fixed an issue where duplicated Sequences were sometimes empty and could not be edited thereafter, but this was later found to affect AnimCurves, regular Sprites, and Objects also, so this is a very important fix! #4990
- UI/UX: [Mac IDE] File > Recent Projects when another project is already open now/again reliably opens the chosen project #5508
- UI/UX: Fixed that pressing your Tab key on any dialog in Beta 4 (and possibly 3) would frequently cause the press to be registered multiple times #5388
- Runtime Featured Changes
- Building Projects: Added support for complying with Apple’s new privacy requirement (ITMS-91053) through PrivacyInfo.xcprivacy #5122
- In-Game: bm_subtract no longer creates a different end result than expected in 2024.400 runtimes #5496
- In-Game: gpu_set_depth() now affects the depth at which subsequent calls to draw_tilemap() will draw that tilemap #4741
- In-Game: [macOS] show_debug_message()/show_message() in a Cleanup event no longer causes a crash when using Cmd+Q to quit the game #5571
- IDE Featured Changes
- Debugger: F2 to rename a watch no longer instead renames the “Variables” dock tab #5080
- Docs Integration: Release Notes links on the Help menu and Update Available notification are now updated to point at these new release notes pages #5204
- Project Saving: Only in “Blank Game” templates on the Start Page is the default room in that project resized to match your Preferences value for the default size of a new room, as this caused the other Templates to not look/work correctly
- Room Editor: Removed unexpected extra project autosaves whenever pressing “delete” and “copy” shortcuts (which can greatly improve performance/productivity in larger projects) #5320
- Room Editor: F2 to rename a layer in the panel no longer instead renames the Inspector tab #2665
- Room Editor: Shift-clicking no longer cancels “select from any layer” mode every time you do the command #2890
- A large number of Redefine Keys issues and general “hotkeys” bugs have been fixed
- Plus, there have been many changes/fixes for Code Editor 2 and the other dialogs it interacted with
- And, if you do need to send us a “Building A Project” or “In-Game” bug, you will now see you’re also asked to kindly tell us which platform(s) you have confirmed are affected by the issue you want to report
- Runtime Featured Changes
- Building Projects: [Android] Increased the minimum supported SDK version from 16 to 21 #4459
-
Note: For your existing projects you may need to raise this value in Game Options yourself before trying to do any builds
- Building Projects: [Android] Fixed an issue where Extensions could cause build fails in 2024.400 runtimes because build.gradle keys were not expanded correctly #5173
- Building Projects: [HTML5] Fixed that sound assets were not exported on Beta Runtimes 2024.400.0.550+ #5283
- In-Game: Gamepads are again found on startup if built using 2024.400 runtimes, which fixes an issue in earlier 400 Betas #5327
- In-Game: audio_get_recorder_count() now correctly includes devices which contain non-Latin characters in their name (also, the Audio Recording event is now surpressed if the data failed to be read - instead, you now get an error logged telling you this) #5124
-
Important: Xbox GDK version increased - see the Required SDKs FAQ before trying to do any builds
- This release also brings support for the new GPU Texture Compression extension available on its own GitHub repo now #5495
- IDE Featured Changes
- Code Editor: The new code editor is now available for Beta users to enable in Preferences (if you wish) and try out - along with its many new features: scrollbar minimap with floating code preview tooltips, rainbow braces, all events for an object open at once in a single view, configurable layouts, and much more (see its Preferences section for more info)
- Feather: Has now been renamed “Diagnostics” and is active when using CE2, so you will see this if you enable the new code editor (be aware that in this release you will get a second panel for Diagnostics, rather than your existing “Syntax Errors”/”Feather” tab being closed when the new one opens - just close the old one)
- Project Save: The Preferences default for where GameMaker stores your projects has now been moved, as Windows IDE users are increasingly opting-in (sometimes unknowingly) to OneDrive managing their “My Documents” folder and so OneDrive is causing problems when trying to do their builds later on #4372
-
Note: If you have not manually set a different home folder in Preferences, then your Preferences will automatically update to this new value when you start GameMaker; if you have previously changed your home folder, then you may wish to check it is not inside OneDrive, etc.
- Project Save: Carrying on from the change above, if GameMaker detects your project is still being stored in a folder which is managed by OneDrive/Dropbox/Google Drive/iCloud, then you will get dialogs on save/load which advise you that you really should move your projects to the new, safe location #2859
- Runtime Featured Changes
- IDE Featured Changes
- Default .gitignore files are now added into new projects when you create them (although, we are aware that right now the Mac IDE does not do this, nor does importing an existing project .yyz) #2922 / #4559
- Project Save: Renamed resources are now resorted alphabetically in the .yyp when using 2024.2 #5035
- Game Options: Fixed a GM crash when setting a .gif file as Windows splash screen and clicking Apply (note that you will not get an animated splash screen if you supply a .gif - only the first frame will be used!) #5048
- Image Editor: Auto-Trim command now also adjusts the sprite’s collision mask to maintain the original relative position #4873
- Also a very important project-saving fix for converting a pre-2024.2 project in 2024.2 or 2024.400 Beta 1 when your “Default” configuration is not the active one in the IDE would overwrite your Default configuration’s Game Options
- Runtime Featured Changes
- IDE Featured Changes
- Local Packages can now be created even when logged-out (when using a “guest” account) #4417
- Can now define the default Animation Speed value for Sprites on an Asset layer in a room #2931
- Game Options for iOS no longer rejects icon images which contain transparency #4617
- Stopped adding the “…_stripN” suffix onto the new Sprite assets created when dropping strip images onto GameMaker #2963
- Updated the gamepad database to incorporate latest gamepad definitions - #4735
- A number of performance and stability fixes also
- Runtime Featured Changes
Milestone Page
- 2024.4 (Closed issues are fixed/implemented for Betas, Open issues are still to do before the Monthly)
Misc New Functions
dbg_view_exists(view)
- Check to see if a dbg_view still exists.
dbg_section_exists(section)
- Check to see if a dbg_section still exists
gpu_get_blendequation()
- This function can be used to retrieve the current blend equation being used for drawing. The returned value will be one of the following constants (the default value is bm_eq_add):
gpu_get_blendequation_sepalpha()
- This function can be used to retrieve the current blend and alpha blend equations being used for drawing. The function returns a 2 element 1D array with the following elements in it:
gpu_set_blendequation(equation)
- When GameMaker goes to draw a pixel there is a source colour (the colour of the pixel we’re going to draw) and a destination colour(the colour that’s already in the pixel we’re drawing to), so when determining the new colour of the pixel, the source and destination colours are calculated according to the chosen blend mode. Each component of the colours is stored as a floating point value between 0 and 1, and the new colour is calculated by multiplying each component of the source colour by some factor and by multiplying each component of destination colour by some other factor and then combining the results together component by component using a configurable equation.
gpu_set_blendequation_sepalpha(equation,equation_alpha)
- When GameMaker goes to draw a pixel there is a source colour (the colour of the pixel we’re going to draw) and a destination colour(the colour that’s already in the pixel we’re drawing to), so when determining the new colour of the pixel, the source and destination colours are calculated according to the chosen blend mode. Each component of the colours is stored as a floating point value between 0 and 1, and the new colour is calculated by multiplying each component of the source colour by some factor and by multiplying each component of destination colour by some other factor and then combining the results together component by component using a configurable equation.
gamepad_enumerate()
- Currently only functional on Android, this function will enumerate gamepads to detect any newly added gamepads and remove any recently removed ones without the need for BLUETOOTH_CONNECT permission.
Misc Changed Functions
skeleton_animation_clear(track)
changed to skeleton_animation_clear(track,[reset],[track])
Misc New Constants
bm_min
- Min blending (Takes the minimum value for each colour component).
bm_reverse_subtract
- Subtractive blending where the destination colour is subtracted from the source colour.
bm_eq_add
- Additive blending. Luminosity values of light areas are added.
bm_eq_subtract
- Subtractive blending where the source colour is subtracted from the destination colour.
bm_eq_max
- Max blending (Takes the maximum value for each colour component).
bm_eq_min
- Min blending (Takes the minimum value for each colour component).
bm_eq_reverse_subtract
- Subtractive blending where the destination colour is subtracted from the source colour.
gp_home
- The gamepad’s Home button
gp_extra1
- A gamepad button used for mapping extra buttons on a device
gp_extra2
- A gamepad button used for mapping extra buttons on a device
gp_extra3
- A gamepad button used for mapping extra buttons on a device
gp_extra4
- A gamepad button used for mapping extra buttons on a device
gp_extra5
- A gamepad button used for mapping extra buttons on a device
gp_extra6
- A gamepad button used for mapping extra buttons on a device
gp_paddler
- A gamepad button used for mapping paddle right button on a device
gp_paddlel
- A gamepad button used for mapping paddle left button on a device
gp_paddlerb
- A gamepad button used for mapping paddle right bottom button on a device
gp_paddlelb
- A gamepad button used for mapping paddle left bottom button on a device
gp_touchpadbutton
- A gamepad button used for mapping the touchpad button on a device (i.e. PS4 and PS5)