Releases: 4ian/GDevelop
5.4.218
📈 Improved game dashboard
The game dashboards have been redesigned to provide a comprehensive view of all key aspects of your game in one convenient location, including analytics, player feedback, leaderboards, multiplayer configurations, and exports.
📣 New "Boost" (one-click marketing): get thousands of players in a few days
From your game dashboard, you can access new "Boost" packages available for purchase to enhance your game's visibility. These packages include up to 5000 guaranteed players who will try out your game in a few days or even hours. It's a perfect opportunity to attract more attention and gather insights on player retention.
💝 Improvements
- Various UI improvements:
- Improved login & signup dialogs design
- Community & Play tabs in the homepage have been merged.
- Improve landscape mode and responsiveness of the UI on small screens
- Prevent opening variables dialog for objects & groups if there is no object
- Improve object collision masks & points dialog button label
- Show object effect drop-down list for parameters in extension editor
- Add a button at the top of the object list to add new objects.
- Allow uploading thumbnails for games directly from the Game Dashboard.
- Add sort field (creation date, weekly sessions, all time sessions) for the list of games in the Manage tab
- Add a button to ask any question in the Learn page
- Google Drive support on the web-app is now deprecated. Please use Cloud projects instead, which are better integrated and fully support all GDevelop features.
- Add automated game screenshots when remixing a game.
🐛 Bug fixes
- Fix a memory leak on object instances in the Physics Engine.
- Fix Dialogue Tree returning sometimes a string instead of a number in expressions reading variables
- Fix login dialog stuck in loading after trying to use a provider
- Fix destroying an object even if flagged as "DoNothing" in the multiplayer behavior
- Fix dialogue tree crashing the game when syntax errors are present
- Fix leaderboards not properly replaced in projects using them in custom objects
- Fix game thumbnail taking too much space on mobile in Quick Customization dialog
- Fix centering of "UI layers" after a screen orientation change
- This happened often on mobile (iOS notably) and sometimes when resizing the window on desktop too.
- Fix 3D model sizes in the editor when aspect ratio is free
- Fix issues when reworking a "quick customization" project (don't duplicate the project multiple times if already saved).
- Fix adding an object from context menu when the Objects panel is closed
- Fix instances paste from a scene to another
- Custom object editor fixes:
- Fix instance variable editor opening in CustomObject editor
- Fix tilemap painting in CustomObject editor
- Fix a crash at runtime when an animatable custom object has no animation
- Fix object thumbnails in custom objects event functions
- Fix sprite scaling factor when a custom size is set
⚙️ Extensions
- [Community] [Hedgehog platformer] A new platformer engine for Sonic-like games (thanks @Kennoir!)
- [Rectangular flood fill] Include the features from "Create multiple copies of objects" extension
- [Rectangular flood fill] Pick the created objects
- [Community] [TweenZOrder] The extension was removed - a variable tween can be used instead.
- [3D sprite] Fix a crash when sprites have no frame.
- Updated to the new syntax for properties and parameters in reviewed extensions.
🎨 Assets
- Add a new premium audio pack: Horror SFX Halloween sounds pack (by GDevelop)
- Add 70+ Tilemaps in ELV's packs
- Add a new premium audio pack: Magic RPG Sounds SFX (by GDevelop)
🕹 Examples
- Add screen orientation checker and improve title screen centering for 3D Car Coin Hunt
- Use custom objects in some examples:
- [Lane runner, Car coin hunt, Tappy plane, Run dino run] Use a custom object for the leaderboard dialog
- [Platformer] Use a custom object for the game over dialog
- [Top-down RPG] Use a custom object for the character dialog
- [3D city builder] Use a custom object for the tool bar
- [360° platformer] A Sonic-like demo that uses a tile-map
🕹 Premium Game Templates
- New premium game template: Idle Clicker (by @VegeTato)
🛠 Internal changes (for developers)
- Add mention to Three.js in README (Thanks @MTSyntho!)
- Add "dispose" method to RuntimeGame and various classes (Thanks @danvervlad!)
- This allows to fully release resources, textures and anything else that is linked to a gdjs.RuntimeGame. This can be useful if multiple games must be loaded/unloaded/changed in a single web page.
- Only add watermark styles in case showWatermark is true (Thanks @dmyamster!)
- This avoids using a DOM API if not needed.
- Add gdcore-tools hook (Thanks @arthuro555!)
5.4.217
💝 Improvements
- Allow custom objects to use leaderboard properties in order to build custom objects linked to leaderboards
- Optimize custom object layouting in the editor
- Display Audio Resource parameter field for function actions
- Display context menu using an "action sheet" like drawer on mobile/touchscreens
- Add larger buttons in quick customization and danger buttons in some interfaces
🐛 Bug fixes
- Fix to forbid behavior properties from being used as values in expressions
- Fix autocompletion by hiding parameters and properties of type "behavior"
- Fix default parameter of action with operator functions not displaying in the editor
- Fix text input visibility when its custom object is hidden
- Fix a crash when an instance with a wrong object name is in a custom object
- Fix wrong custom objects duplication when updating an extension
- Fix resource used in behavior properties not being exported
- Fix changing the shape painter colors in the properties panel/object editor
- Fix cloud projects incorrectly counted when saving a project
🎨 Assets
Premium packs
By @Bouh:
- [New audio pack] Basic RPG Sounds and SFX
By GDevelop:
- [New audio pack] SFX Platformer Mario Game Like
Free assets
Multiple tilemaps objects were added:
- 10 by Kenney
- 1 from VEXED
- 1 from Robert Norenberg (0x72)
🕹 Examples
- Fix spine example missing sound resource
🛠 Internal changes (for developers)
- Ensure GDevelop.js build is done using release mode if not specified
- Fix resource used in behavior properties not being exported
5.4.216
📝 🏎️ Objects now directly editable from the Properties panel
When an object is selected (or when "Edit object" is chosen in the Properties panel after choosing an instance), this panel will now show the object properties, behaviors, variables and effects. Everything can be directly edited from there.
This allows for fast edition of most elements of an object: appearance, properties, but also behaviors, variables, effects... Most work and iterations on your game should be faster, from adapting the appearance of a text to tweaking behaviors and updating the preview to check the result in realtime. For example, behaviors can be directly added, removed and configured:
💡 If you keep the preview of the game opened, on the desktop app, you can then click on the "Update" button in the toolbar to apply changes to the live game, without restarting the preview.
✈️ Custom objects ("prefabs") can now be created (Experimental)
Custom objects are containers, composed of one or more other objects and having custom logic (made with events, like in a traditional scene) inside them.
In this new version of GDevelop, you can now select a few instances on the scene and extract them into a custom object that will contain them and their associated object:
"Custom objects" are also called "Prefabs" or "Templates" in some game engines.
They almost act like if they are a scene, but available as an object. Like custom behaviors, they can have actions, conditions and expressions, so they can be manipulated by the scene events.
They allow to speed-up development and make games more modular by having an object that can be reused in different scenes.
For example, you can build:
- A custom object that is a dialog: a background, some text, some buttons. This allows to do all the logic related to this dialog inside the custom object events, without cluttering the scene.
- A character or some other game objects that is composed of multiple parts. For example,
Read the documentation to learn more about their usage.
You can see here the two buttons extracted into a custom object. Notice the checkered background indicating that this is not a scene but a custom object that can be reused in multiple scenes:
💝 Improvements
- UI Improvements across the app
- Allow closing & deleting an opened cloud project
- Add icons to help understand to scroll during in app tutorial
- See also all the improvements in version 5.4.215
🐛 Bug fixes
- A lot of fixes for custom object creation:
- Fix closing of custom object tabs when they are deleted from their extension
- Fix autocompletion of layers and points for custom object children
- Fix object lists not always up-to-date in the extension events editor after adding an object in the custom object editor
- Fix custom object editor not closed when the extension is renamed
- Fix mouse and key parameters for functions
- Fix custom object loading when opening a project
- Fix extraction to custom object sometimes using an already used name
- Fix wait action in custom objects
- Fix objects owned by Multiplayer host not being properly migrated when host changes
- Avoid intermittent game crash, due to an audio issue, when resuming the game (when focused back again)
- Fix memory corruption/crashes when events in extensions had errors
- Prevent players from claiming a leaderboard score as an anonymous user.
- See also all the bug fixes in version 5.4.215
⚙️ Extensions
- [Auto typing] Fix the word wrapping
🎨 Assets
- Add a new premium pack: Casual UI and Interface SFX (by @Bouh)
- Add a new premium pack: 2D Pixel Quest -The Dungeon by BarelyApes
🛠 Internal changes (for developers)
- Fix silent exceptions when resource loading finished after an instance was reset/removed
- Add clang-tidy and builds with assertions/memory sanitizers for libGD.js
- Fix missing or wrong arguments in GDevelop.js tests + uninitialized variables
- These were "silently succeeding" but would create issues when Emscipten is run with SAFE_HEAP=1.
5.4.215
This version brings the new properties panel for objects as well as support for visual edition of custom objects. Use version 5.4.126 as it contains important bug fixes for them (and the release notes of this version contains the full description of these).
💝 Improvements
- New in-app tutorial explaining how to use a Tilemap and interact with it at runtime.
- When choosing a font or an audio file, the Asset Store will now display a preview and will allow to quickly search in all of them.
This is perfect for quickly prototyping games.
Note that the Asset Store is not shown anymore when choosing an image (it was confusing as all images were shown without links to their asset packs and without consideration as if they could be used as standalone images). Instead, consider using the menu option to swap an object. - Add vertical alignment property for Text objects.
- Improved "Quick Customization" flow in the Get Started page.
- Tilemap improvements:
- Add possibility to paint Tilemaps with a rectangle selection from the tileset.
- Allow to filter external tile map collision per layer.
- Tilemaps can now be found in the Asset Store in different packs.
- Public domain tilemaps are now suggested when you create a new Tilemap object - allowing to quickly start building a level.
- UI improvements:
- Add context menu to move Sprite object animation in list.
- Add a context menu options to duplicate instruction parameter or behavior property.
- Show the tolerance in the sentence of "Is object turned toward" condition
🐛 Bug fixes
- Fix exception 't.bind is not a function' when a resource has an empty file
- Fix some crashes in previews with Tilemaps
- Fix an exception when a touch is ended and then started in the same frame at runtime
- Fix the action to change the animation elapsed time for sprites and 3D models
- Fix text input focus messing with key pressed in the rest of the game
- Fix ghost hitboxes on tilemap when tiles are flipped
- Fix some more crashes happening in preview
- Fix iOS automatic exports when using AdMob
- Fix crashes in Preview due to ill-formed color values
- Fix anchor behavior positioning when the object has a custom origin
- Fix instance selection rectangle not being flipped properly
- Fix an exception when the object position is not finite using the Physics engine
- Forbid negative damping values in the Physics engine.
- Disable the "support us" dialog during an in-app tutorial
⚙️ Extensions
- [Community] [WithThreeJs] Add drawing detection and improved raycasting
- Add "Check 3D Object Is Within 3D Camera FOV" condition
- Add "Change 3D Object Raycast Detection" action
- Thanks @PANDAKO-GitHub
- Make some behaviors work with more object types
- Make clearer these are both reviewed and community extensions [skip ci]
- Update README [skip ci]
- [Reviewed] [Mouse pointer lock] Fixed an issue where extensions did not work on Linux, etc.
Fixed an issue where extensions did not work on Chromium-based browsers (this mainly happened on Linux). - [Corner sliding] Fix a conflict with the pixel perfect extension
🎨 Assets
- Add a new premium pack: Pixel Quest Vol 2: The Necromancer's Order by BarelyApes
- Fonts and audios are now displayed in a user-friendly manner.
🕹 Examples
- [Pair] Simplify the cards shuffling
- [Asteroids] Fix audio on iOS and replace deprecated actions (thanks @ddabrahim!)
- [Goose bomberman] Updated with the new variable actions
- [3D bomber bunny] Updated with the new variable actions
- Updated several game templates to use Tilemaps (Top-down RPG, Multiplayer platformer pickup, Duck game, Sokoban, Tower defense war, Simple platformer)
🕹 Premium Game Templates
- Add a new multiplayer game template: Picle Park by @VegeTato. It includes:
- Objects/variables sync and ownership
- Smart spawn/despawn players system
- GDevelop built-in multiplayer usage
- Handling players join mid-game
- Handle up to 8 players
- Mobile support
- Rope mechanic
- Physics usage
- Guest login
5.4.213
💝 Improvements
- You can now change Opacity & Flip of instances directly in the Properties Panel:
- Custom object layouting support: Instances in a custom object can now use the anchor behavior and, when used in another scene (or another custom object), the custom object will dynamically adapt the position of its instances according to its size.
- The teacher educational resources list have been updated to show the upcoming lessons we're preparing.
- Various Tilemap improvements:
- Improve performance display when painting tiles,
- Allow atlas size to be something else than a tile size multiple and ignore last column and row,
- Display error message only when the the tile size is greater than the atlas image,
- Add object name in actions and conditions.
🐛 Bug fixes
- Tilemap fixes:
- Fix tiles preview when tilemap instance is rotated
- Do not crash preview if tilemap object badly configured
- Fix a crash in the new behavior dialog (the crash happened when the extensions didn't load as expected).
- Fix hot reload of object variables in object instances.
- Fix store UI (wrong centering of items)
⚙️ Extensions
- [Reviewed] [Rolling counter] Smoothly change a counter value of a text object (Thanks @Jurfix!)
🕹 Examples
- 3D shark frenzy a game inspired from Hungry Shark by @Jurfix
🕹 Premium Game Templates
- [Cubic world] Fix fonts
🛠 Internal changes (for developers)
- Remove warnings during C++ emscripten compilation
5.4.212
🐛 Bug fixes
- Fix tilemap object edge cases causing crashes
- Fix scrolling an input with the mouse wheel even if it was not focused
⚙️ Extensions
Reviewed
- [3D object shake] Fix the translation on Z
Community
- [3D tween] Add a tween action to tint 3D models - Thanks @Jurfix
🕹 Premium Game Templates
- Add a new premium game template: Land Maker, a game like Mario Maker! (by @VegeTato)
🛠 Internal changes (for developers)
- Catch callback functions of Firebase preventing JS crashes
- Catch errors when handling electron browser window preventing JS crashes
5.4.211
🐛 Bug fixes
- Fix instance number properties which could not be saved to 0
- Also add back the ability to use keyboard arrows and mouse wheel to control the value precisely
- Show a loading texture when a Panel Sprite is loading, instead of an error texture
- Fix crash in the scene editor when changing the Panel Sprite tiled/stretched option
- Fix checkered background in collision and points editor
- Fix exception when changing an external tilemap file after it was initially missing
🛠 Internal changes (for developers)
- Avoid unnecessary recompilation of many C++ files at each build
5.4.210
Warning
This version has a known issue where the number 0 could not be used in the instance properties panel.
Please use the version 5.4.211 instead.
🎮 Multiplayer games improvements: Play as Guest + more
Play Stranded on a Raft on gd.games
- Introducing Play as Guest: players can now join as a "guest" player, without having sign up anymore. This should increase the number of players that are willing to try your multiplayer games. Anyone can join a game in a few seconds!
- Performance improvements with a new automatic "host migration" when the host player leaves:
- The host of a multiplayer game is now automatically migrated to a new one, picked from the list of players (the one with the lowest ping).
- A new condition "Is host migrating" is now available - in case you want to do something special in the gamewhile the migration happens. This can take up to a few seconds. If your game has no interactions between players, you can just do nothing. Otherwise, you may want to pause the game while the host is changing.
- A new action is available to configure the lobby game to end instead of migrating when the host leaves. This is useful if you prefer the host not changing during your game.
- Allow changing the synchronization rate of objects:
- The default "sync rate" of objects is set to 30 times per second - which is enough for most games.
- A new action can be used to update this value depending on the type of your game, at the cost of bandwidth. Fast-paced competitive? Go for 60. Slow turn-based game? 5 or 10 is probably enough.
Read more about all multiplayer features on the GDevelop Multiplayer documentation page.
➕ Formulas in the instance properties
You can now write simple math formula in the property fields of an instance: for example, you can enter 100 + 50
or 100 + 70/2
or ToDeg(sin(2.3))
in the instance editor fields. This is helpful when you need to precisely set up the position of instances in a menu, UI or level.
🪙 gd.games ads earnings (Revenue Sharing) in your game dashboard
You can now see the earnings of the games you've published on gd.games at the top of your Games dashboard.
You can either cash out that amount if you reach a certain threshold, or exchange your balance (at a preferential rate) for GDevelop credits that can be used on the asset store.
Read more about revenue sharing on this forum thread.
🛠️ Work-in-progress, experimental visual editor for custom objects ("prefabs")
An experimental, still work-in-progress, editor to build objects inside GDevelop - from small, reusable UI objects to larger parts of your game - is being finalized.
We're still improving the anchor behavior so that it can be used to position dynamically objects inside a Custom Object (which will be perfect for UI elements like dialogs, popups...). A bunch of bugs and limitations, listed below, are being worked on, so we only recommend advanced users to try this (and if you do, please give feedback on Discord "engine-development" channel).
List of limitations or bugs being worked on:
- Effects should be disabled for layers
- Hot reloading mostly works but needs some extra work
- Add a "Extract as a custom object ("prefab")" when selecting instances in a scene.
- Ensure physics and pathfinding behaviors work properly.
- New expressions to translate coordinates from the parent to the local custom object.
- Ensure deletion of a custom object is gracefully handled by the editor
👥 New interface for teachers to manage students and other teachers
Administrators and teachers having a GDevelop for Education subscription can now create new anonymous accounts for students, invite new teachers and enable or disable user accounts.
Read more about administration of student/teachers on the documentation page.
💝 Improvements
- Add a new expression to get Spine point attachments positions (Thanks @f0nar!)
- Various Tilemap improvements:
- Improved Tilemap collision precision.
- Improved Tilemap preview rendering performance
- When using a mouse, the middle click can be used to pan the view when painting on a Tilemap.
- Allow custom objects ("prefabs") to use the anchor behavior on their children.
- Allow centering objects with the anchor behavior.
- Update AdMob banner so they cover part of the game screen instead of reducing it (Thanks @devgiordane!)
- In most games, it's better to design the game with the size of the ad banner in mind - which will cover either part of the top or bottom of the screen. Previously, the game size was reduced which was making it difficult to properly design a game and would introduce bad looking black borders.
- Add automated crash reporting from previews:
- This will allow to detect any bugs or crash in the game engine without relying on manual reports from users on GitHub. Note that exceptions and errors in JavaScript code blocks won't be reported. This can be deactivated in preferences if you prefer not to have GDevelop send these crash reports at all.
- Add an action to change a Text object font
- Add a default shortcut for adding a comment in the Events Sheet (Shift+C)
- Physics engine: merge the 2 world scale properties into one
- Add possibility to drop variable after last item in the variables editor
🐛 Bug fixes
- Fix text input not properly deleted when used in a Custom Object
- Fix memory clearing/leak when a scene is paused or stopped
- Fix default parameters from being able allowed to be dragged and dropped
- Fix default values for the Adjustement effect
- Fix update notifications translations on Desktop app
- Fix hot-reload for variables
- Fix issues with undo/redo when paintaing on a tilemap
- Remove effects tab (and actions and conditions) wrongly shown for Tilemap objects
- Avoid exponential loop when scrolling out of view on the Scene editor
- Hide a duplicated expression to get the text of a text input.
-
- Hide required behavior properties in the object editor
⚙️ Extensions
Reviewed
- [Multitouch joystick] Fix the dead zone for the
Force
expressions - [Boids] Fix the "activate behavior" action and handle collision layers
- [Linear movement] Add a behavior to move objects ahead according to their angle. (Thanks @Jurfix)
- [Fire bullet] Fix variance in multi-shots being used twice
- [3D object shake] Fix shakes with an easing longer than the duration
- [Autotyping] Unify the 3 behaviors
- [3rd person camera] Use the object center instead of the origin
- [Swipe gesture] Use extension variables
Community
- [Animation System] Fixed old broken variables. (Thanks @VegeTato)
- [3D grid jump] Move objects by jumping on a grid like a frog. (Thanks @Jurfix)
🕹 Examples
- [3D road crosser] New example! A Frogger-like game, similar to the mobile game "Crossy Road" (Thanks @Jurfix for building this game)
- [3D car coin hunt] Fix the dead zone for mobile controls
- [Arrow Fight] Extensive improvements to this multiplayer example
- Added bots with randomized movements that only spawn while there is 1 player in the lobby.
- Now when players join a game that has bots in it, the bots will be removed and the players will play together immediately.
- Changed the way the pause "leave game" button works, now only the player who presses the button will exit the game.
- Removed the old drop out handling where players disconnecting would kick everyone from the game.
- Tweaked how the score messages are changed, now only the host changes the text. (Prevents conflicts between scores)
- Swapped out the level previously made with tiled sprites for a tilemap object instead.
- [Music Jukebox] New example by Perri "TeckGeck" T.F. (TKGK Interactive)
🕹 Premium Game Templates
- Add a new premium game template: Wheel Of Fortune - An interactive kiosk game to promote your brand
- Add a new premium game template: In-game AutoTile extension by @VegeTato
🎨 Assets
Free asset packs by Quaternius:
5.4.209
💝 Improvements
- Add "Quick Customization" in the Get Started page: choose a starter game and quickly replace objects and tweak their behaviors. The game is then automatically published so it can be shared: this is perfect for new users to get a taste of how a game works and make their own remix of a game before going further.
- Add an option in objects context menu to quickly swap assets of Sprites and 3D models, using the asset store:
- This is perfect for quickly prototyping or trying new game art,
- Animation of the object that are missing in the asset are replaced by a copy of the 1st asset animation. 3D model volume is adjusted to stay the same while keeping asset proportions.
- Allow hot-reloading of 3D models (Thanks @arthuro555!)
- Display the number of tilemap objects available in premium asset packs before purchase.
- Allow drag and drop in the extension function parameter editor
🐛 Bug fixes
- Fix having to select another function to reopen the same function on mobile in the extension editor
- Fix extension's behavior and object properties lists not scrolling on mobile
⚙️ Extensions
Reviewed
- [Physics car] New behavior that simulate a top down car motion (using the Physics Engine behavior)
- [3rd person camera] Fix the offset to rotate with the camera - it allows to keep the player near the bottom of the screen or a bit on the side like in some 3rd person shooters.
🎨 Assets
- [City Tileset] Update: Add Tilemap object with the whole tileset
🕹 Examples
- [Arrow Fight] Update to allow mid-game join
- [3D car coin hunt] Use the new behavior for the car movement
- [3D car coin hunt] Make the controls independent from the car size
- [3D lane runner] Use custom extensions to organize events
🕹 Premium Game Templates
- Update Cubic World game template by Jurfix:
- The method of saving for world information has been changed for heavy objects (air and cubes), this is due to the browser limitation on the amount of information saved in Local Storage (5 MB), this problem was solved by creating a new saving extension that uses IndexedDB, now you can save an almost unlimited amount of data.
- For Apple mobile devices, Long Tap is now disabled, which prevented the destruction of cubes. (You can see how this is implemented in the Mobile Control Helper extension)
- Bug fixes:
- Now cubes cannot be placed inside the player, which led to getting stuck or falling out of the world.
- The buttons in the menu and pause are no longer distorted when turning the screen on mobile devices.
- Add a new premium game template: Card Game by VegeTato
🛠 Internal changes (for developers)
- Replace electron-is with electron-is-dev (Thanks @arthuro555!)
- Allow custom objects and behaviors to use resources from properties
- Fix GDevelop project files so they are versioned with the same version as the editor (Thanks @f0nar!)
- Avoid to use an intermediate ThreeGroup for custom objects in the editor
- 2D custom objects displayed in the editor now also use the origin point of their 1st child unless an hidden property force a location.
5.4.208
🐛 Bug fixes
- Fix a crash when renaming a child variable of a Structure in the Variables editor.
- Fix the sentence for the Tilemap Tile id action/condition
- Fix child object internal recycling in custom objects.
⚙️ Extensions
- [Community] [WithThreeJs] Support multiplayer behavior
- Thanks @PANDAKO-GitHub