5.4.203
🎮 Introducing support for Multiplayer games ("GDevelop Multiplayer" - experimental)
ℹ️ This is an experimental feature, which is still in a very early stage and will be improved fast in the short term.
GDevelop now supports building real-time multiplayer games. Watch the announcement video here. Multiplayer includes:
- Lobbies for your game and a user interface allowing players to start a new game,
- 2 to 8 players in each lobby,
- Built-in authentication for players to create an account and login to your game,
- Automatic choice of the host of the game,
- Automatic synchronization of players, depending on who is in charge of each object,
- Automatic synchronization of the rest of the game state: game objects, variables...
- Soon, automated compression to reduce bandwidth usage.
Example.of.a.simple.fun.multiplayer.platformer.game.mp4
Building a multiplayer game works by using 1) the actions to display the lobbies for your game and 2) a new Multiplayer Object behavior, allowing to mark which objects are active in the game (players, projectiles, enemies, doors, etc.)
This video shows how to transform a static game with 2 objects in a multiplayer game in 1 minute:
Multiplayer_in_1_minute.mp4
Servers are usually costly to set up and maintain for multiplayer games (from tens to thousands dollars a month for successful games).
GDevelop Multiplayer is built so that it can scale from no players to multiple thousands playing to your game. Free accounts have one lobby available for the game with 4 players. With a silver, gold or pro account, your game will get unlimited lobbies so your game can work with any number of players. Gold and Pro memberships will get access to extra customization and monetisation options in the future.
Examples are available in the app to help you get started, you can also preview a few multiplayer games here:
- Platformer ArrowFight on gd.games
- The Squeal of Time on gd.games by @tristanbob.
Read more about multiplayer game creation on this page.
If you're interested in other ways to build GDevelop games, check out THNK by @arthuro555.
💾 Simplified variable actions/conditions, local variables and extension variables.
The variable system has been considerably revised to be even more simple to use and flexible:
- Global or scene variables of any type can now be used with a unique action and condition.
For example, you don't need anymore to choose between an action to modify a scene or a global variable, as there is now a single action for it. In the action, both global and scene variables can be used. You also don't need to choose a different action for a number, text or boolean variable. - It's now required to declare your variables: add them in the global or scene variables. You can open these when editing events too, so you don't lose much time in case your forgot to create one before working on an action or condition.
Declaring variables is useful for GDevelop to allow you to use them in expressions by just writing their names, and will allow GDevelop to warn you if you misspell a variable - avoiding bugs in your game.
GDevelop also now support local variables. Those have been designed to be used the events sheet only and should be used as disposable variables, available only inside the event where you add them (and inside the sub-events).
Finally, extensions now also support variables stored inside them. These variables can live for the duration of the game (in which case they are extension global variables) or of a scene (extension scene variables). Extension creators are encouraged to use them to store data that was previously stored in scene variables.
💝 Improvements
🔍 Diagnostic report
A "diagnostic report" will now be shown when a preview is launched and GDevelop detects problems in your event sheet. It will tell you if there are missing scene variables, object variables or behaviors.
This is especially useful if you use external events shared between several scenes - in which case a mistake, like forgetting to declare a variable in a scene, can happen without being noticed immediately.
Other improvements
- New badges to unlock 🏆: Head over to the Get Started tab in the homepage. There you'll see new badges you can unlock and earn credits with!
- In your profile, fill out your Twitter and TikTok usernames, make sure you follow GDevelop account (thank you!) and you'll be given a few credits as a thank you.
- Player login is now possible from a leaderboard:
- When an anonymous score was just sent (using a player name but without a player account), the leaderboard will invite the player to create an account and claim the score.
- A score sent from a game will automatically be attached to the logged in player (unless deactivated).
- The broken authentication on iOS games was also fixed.
- An icon is now shown for variables, parameters and properties in expression autocompletions.
- Display expression errors on repeat loops
- Add possibility to load an in-app tutorial from a local file (useful to author them).
- Add a new guided lesson (Platformer)
- Multi-file project folders are now cleaned at each save to avoid stale files (thanks @DavidMLPalma!)
- Subscriptions bought with PayPal are now properly maintained until the end of the paid period
- New "Classroom" tab in the homepage that contains useful samples resources for educational usage.
- Add a "destroy when finished" parameter in events for opacity tweens.
- Add a hover message on linked external events when they come from another scene.
- Add a drop-down menu action to extract selected instances as an external layout.
- Add reminder to save your project with a badge on the Save icon and a snackbar (can be disabled in the preferences)
- Add asset from asset store next to the selected item in the objects list
- Always keep events when an object is deleted
- UI improvements
- Improve analytics panel display
- Redesign snackbars to be more consistent with the theme
- Change notification badge color
🐛 Bug fixes
- Hide game templates when searching in the asset store.
- Various fixes for the compact instance properties editor:
- Improve panel spacing
- Remove Restore icon on dimension fields if the instance uses the default size.
- When locking/unlocking multiple instances, apply same value to every instances
- Fix local network preview url opening
- Fix resources with empty name from being used or created
- Fix shared properties not being add to the scene when adding a behavior from the instruction editor
- Fix example opening not working from the example dialog
- Fix platform icons generation for cloud projects from desktop app
- Fix cloud project autosave crashing on Firefox versions <=125
⚙️ Extensions
Reviewed extensions
- [New] [Shock wave effect] No longer require the Tween behavior (Thanks @Alios5!)
- [3D flip] Allow to use animations to flip sprites
- [Resource bar (separated units)] Fix max value action
- [CrazyGame] Fix the action to display a video ads
- Fix the action to display a video ads, now it return an error if the video ads isn't ready (Thanks to MartijnKuilema!)
- [Boids Movement] Fix typo of VelocityX and VelocityY being swapped
- [Transition] Fix the animation for zoomed layers
- Keep the last frame at the end of the animation when
"Forwoard"
is chosen
- Keep the last frame at the end of the animation when
- [Fire Bullet] Minor updates and fixes (version 0.7.0)
- Add new expression: "Time before reload finishes"
- Prevent negative values for ammo
- Adjust the behavior for 360 degrees firing arc to prevent two bullets from using the same angle
Community extensions
- [InkJS] Dialogue tree with InkJS (Thanks @infokub!)
- [Point and Orbit] Improvements:
- Add the ability to point toward an angle (useful for gamepads)
- Make orbit follow the same speed as rotation.
- Minor text updates to the description
- [Removed] [Draw shock wave effect] Use "Shock wave effect" extension instead.
🎨 Assets
Premium packs
By Nyilonelycompany:
By Luckythespacecat:
By GDevelop:
Free packs
By Kenney:
- Fantasy UI Borders packaged by @Kruger77!
🕹 Examples
- Simple platformer example game
A simple platformer example game where the player can pick up coins to improve their score and die to an enemy character and falling off of platforms.
This example features:- Platformer behavior
- Smooth camera behavior
- Mobile controls
- Various types of platforms
- Basic enemy movement
- [Fire Bullet] Updated game example to test the new version of Fire Bullet extension
- Updated the game example to test the new version of FireBullet extension
- Added a bar to show the time before the reload is finished (using the new expression)
- Moved objects into object groups
🕹 Premium Game Templates
By Vegetato:
-
- This template uses THNK extension to handle multiplayer
-
[P2P Online Multiplayer] Updates:
- Updated THNK to latest version.
- Optimized the events (the game now use less events).
- Optimized some events for better performance.
- Added the new THNK action (stop THNK server) to the "Back" button event in Lobby scene.
(this will fix a bug where if you click Host → back → join another player → you will join as a host and a client in the same time) - Moved the player movement controls from client codes to server codes (both works the same, but in case THNK get big update in the future, the codes will not break).
🛠 Internal changes (for developers)
- Disable caching in preview server (Thanks @arthuro555!)
- Useful in case the preview is proxied through a CDN