💡 New 3D Spot Light and Point Light objects
3D lights can now be used with the new "3D spot light" and "3D point light" objects! You can find them in the "New Object" dialog. Check out the documentation here.
Light objects can be demanding on the GPU, especially when they cast shadows. To allow to add many lights to a scene, the engine automatically hides the lights farthest from the camera. By default, the limits are 20 visible light objects and 4 light objects casting shadows (the closest to the camera). Read more in the documentation.
💝 Improvements
- Reworked events sheet design (thanks @LuniMoon!):
- Colors adjusted to match accessibility standards,
- Refined borders around conditions/actions
- Handles of comments/groups are colored as the event itself,
- Spacing, borders and other tweaks.
- Fix default variable string value being "0" instead of empty:
- Before, variable were set to the string "0" even though displaying as empty in the list of variables.
- Projects created before 5.6.267 will keep the same behavior (0 as default value for string variables) with an option to upgrade to the new behavior in the project properties dialog. This allows previous projects to keep backward compatibility and not break. It's recommended to activate this option and check that your game continues to work as soon as you can (keep a backup in case you want to upgrade later).
- Projects created from 5.6.267 will use the new default behavior (empty as default value).
- Improve 2D lights collision calculation for better performance.
- Add expressions to access the components of forward/up/right vectors of 3D objects
- These are advanced expressions mostly useful for extensions manipulating objects in 3D space.
- Add experimental configuration to allow object resources to be loaded independently from the scene.
- This is an advanced, experimental feature which is subject to changes. It's in most cases not useful, unless you have a large game or low end devices for which controlling memory usage is important. It's mostly useful to delay loading of large custom objects.
- Objects can be configured so that its resources are not loaded when the scene is loaded. Instead, you can use an action to manually load the resources used by it. When the loading is finished (this can be checked using a condition), the object can then be created. Read the documentation to learn more.
- Be careful: if an object assets are not loaded before being created, it will be broken when displayed on screen.
- Improve premium courses structure.
- Add editor lifecycle hooks for auto running npm scripts (rhanks @ViktorVovk!). See documentation here.
- Three hooks are implemented:
onEditorReady,onPreviewStart,onPreviewEnd. - Auto-execution of hooked scripts requires user consent.
- Three hooks are implemented:
- Improve handling of devices with both a mouse and touchscreen so GDevelop can be controlled both ways in one session
- Improve desktop app updater messages and actions
- Regularly check for updates, not only on launch
- When update is downloaded, notification to restart & install
- also display version number in notification
🐛 Bug fixes
- Fix created child objects instances in custom objects being wrongly picked twice in events
- Fix potential crash in scene editor when reloading resources with custom objects
- Fix GDO import and export never finishing loading
- Fix crashes when using invalid object names in object folders
- iOS export fixes:
- Fix screen orientation not working anymore
- Fix export not working with Admob extension
- Fix file uploads (for extensions for instance) not working on some web browsers like Firefox
- Fix unloading extensions instructions properly when closing project
- This was causing actions/conditions/expressions from extensions of previous projects to be still visible in a new project, even if not available.
- Fix particle emitter gravity length action when it was 0
- Fix structure children not being shown while searching variables
- Fix tentatively crash in popped-out window when a theme is missing a color
- Multiplayer: fix player ping never updating on non-host clients
- Fix missing error on expressions with unknown objects in the event sheet
- Fix rendering of events true/false or yes/no as text when parameter not filled
- Fix hot reloading for behaviors
- Mobile usage fixes:
- Fix renaming objects on mobile weird behaviors
- starting a rename was showing the image of the element dragged
- could not press on the input to select it
- Fix events locking up when dragging on mobile
- Fix renaming objects on mobile weird behaviors
- Fix fields in Events sheet prefilling to "=" after opening a relational operator
⚙️ Extensions
- [Experimental] [Advanced 3D Features] Fixed the "Distance between objects in 3D" expression
- Thanks @PANDAKO-GitHub
- [Experimental] [Scrollbar] Add actions to help moving a layer
- [Reviewed] [Scrollbar] Fix the thumb sometimes overflowing the bar
- [Reviewed] [Fire bullet] Add 2 fire actions for 3D
- [Reviewed] [Continuous bar] Allow to use bitmap texts
- [Review] [Score counter] Allow to use bitmap texts
- Also fix the initial value not being taken into account
- [Reviewed] [3rd person camera] Fix "rotate with object" property for the "all rotation" mode
- [Playgama] Extension update
- [Poki] Add new Poki User Account methods
- [Community] [Advanced 3D Features] Added functionality to obtain angles between 3D objects:
- Added “↗️Check angle to 3D objects” condition
- Added “↗️Angle to 3D objects” expression
- Updated “↔️Check distance between two objects in 3D”
- Updated “↔️Distance between objects in 3D”
- Ask submitters to declare their AI usage when sending an extension for review
🎨 Assets
🕹 Examples
- New example "Scrollbar": show how to make a scroll view
🕹 Premium Game Templates
- Add a new game template: Top Down Infinite Lands by Crowbar Coder


