Commit Graph

312 Commits

Author SHA1 Message Date
Florian Rival b15ee15b5b Match objects with unicode names in EventScript source view filters (#8868)
GDevelop identifiers can contain any unicode character except the ones
reserved by the expressions grammar (GrammarTerminals.h), but the
read_events_source object-name filter used an ASCII [A-Za-z0-9_] word
boundary: objects named like "Héros" could match or miss incorrectly.

Don't show in changelog
2026-07-22 10:28:53 +02:00
Clément Pasteau 97eccf98c3 Reduce possible crashes in the event sheet when undoing/redoing (#8820) 2026-07-09 08:53:29 +02:00
Clément Pasteau 663edf81ec Improve a lot the time to launch previews (and other operations like modifying groups/renaming objects) when using very long expressions (#8662) 2026-06-01 14:40:33 +02:00
Florian Rival 080bc15f56 Add missing override specifiers to event classes (#8633)
Don't show in changelog
2026-05-21 16:31:37 +02:00
D8H 6dc9ed5d2c Fix minus sign color for negative numbers (#8621)
Don't show in changelog
2026-05-20 16:35:51 +02:00
ViktorVovk f39d8bb080 Add experimental support for "canonical" serialization of events (#8552)
- When activated, the JSON of the project is saved with properties always in alphabetical order. Fields in events are also never omitted.
- The preference is controlled via `gdevelop-settings.yaml` (already read
by the IDE on project open):

  ```yaml
  # gdevelop-settings.yaml
  preferences:
    canonicalEventSerialization: true
  ```

Only show in developer changelog
Co-authored-by: Viktor Vovk <vvovk@playtika.com>
2026-05-20 16:10:12 +02:00
D8H cea1410fb3 Add syntax highlighting for expressions in events (#8538)
Complex expressions and formula will now be shown using multiple colors, like the rest of events. This allows to identify objects, numbers, strings in a long formula.
2026-05-18 18:10:00 +02:00
Clément Pasteau 0eb6014a93 Fix some visual glitches in the Events Sheet when opening and scrolling (#8571) 2026-05-11 10:52:30 +02:00
Clément Pasteau 3c80598d09 Revert "Fix some visual glitches in the Events Sheet (#8551)" (#8570)
This reverts commit 232443328d.
2026-05-06 16:48:11 +02:00
Clément Pasteau 232443328d Fix some visual glitches in the Events Sheet (#8551) 2026-05-05 18:29:21 +02:00
Florian Rival e8fe23d9dc Fix rendering of events true/false or yes/no as text when parameter not filled (#8561) 2026-05-03 23:35:12 +02:00
Florian Rival dc62aea8d8 Add support for ordering For Each by an expression, with optional limit (#8319)
- For advanced use cases where it's important to run events on each instance of an object with an ordering, the For Each can now have an ordering: an expression can be written and will be evaluated for each instance separately. The For Each will then execute for each instance in the order of the result of the expression.
- It's possible to change the direction (ascending or descending)
- It's also possible to give a limit (for example, 1 will allow to pick just the instance with the highest/lowest value for the expression).
- Examples are provided in the UI for common use cases (maximum value of a variable, health points, ammo, distance to another object...)
2026-02-25 10:37:59 +01:00
Florian Rival abe44723ba Fix else events not working properly when after a disabled event or comment (#8293)
- Also fix generated code for events (and Else) not working with 'use strict' (only show in developer changelog)
- Also improve the UI to not show horizontal bars for disabled events and comments
2026-02-19 17:14:24 +01:00
Florian Rival 6bb56c6e5b Add support for local variables for loop events (While, Repeat, For Each, For Each Child Variable) and loop counter variable (#8273)
- "For Each Child Variable" now also properly support choosing local variables for the variable to iterate on, and for the variable where to store the child and the optional variable where to store the name.
- The loop counter starts from 0 and is automatically increased by 1 each time the event is repeated.
2026-02-15 16:14:04 +01:00
danvervlad f1401b33c7 Add support for marking extension functions as deprecated, with visual warnings/explanations (#8156) 2026-02-12 19:37:55 +01:00
Florian Rival 17443587b9 Add Else event (#8216)
* This is not finished yet:
  - Documentation needs to be written.
  - Menu item (and shortcut?) to quickly toggle between a standard event and a else event must be added so it's easy to switch from one to the other.
  - Design must be adapted to make it clearer that the else event is "linked" to the previous one and is not run if the previous event is run.
2026-02-07 17:15:01 +01:00
Florian Rival a9b5f282db Limit impact of potential memory corruption when serializing instructions 2025-12-19 10:57:36 +01:00
D8H 28cea4d94c Allow events to use resources parameters and properties (#7942) 2025-11-13 14:08:01 +01:00
D8H db28136a12 Avoid a crash at preview when behaviors are missing (#7970) 2025-11-13 14:06:20 +01:00
Clément Pasteau e174136fb4 New Save & Load built-in actions (#7811)
* New actions are available to save & load the game state, making Saving & Loading as easy as adding 1 action to your game!
* While it will work in most cases, it has a few limitations and hasn't been thoroughly tested on all types of objects/behaviors and games, so it is for the moment tagged as **Experimental** while we gather feedback and improve it
* Check out the wiki for more info: https://wiki.gdevelop.io/gdevelop5/all-features/save-state
2025-09-29 15:38:37 +02:00
D8H 4c7231e6ae Fix a crash at runtime when behaviors are missing in functions (#7830) 2025-09-15 16:40:21 +02:00
Florian Rival 29ad7308c3 Introduce an experimental AI agent (#7659)
- This is an AI agent that takes a request and takes actions on a project: it can create scenes, find and create objects, add, remove behaviors, modify them, put instances on the scene, create or modify events, and more to come (layers, setup leaderboards, etc...).
- It's still in beta and there is room for improvement on many things, but is already useful for prototyping and learning - beginners notably are able to see what the AI can do and learn the concepts of GDevelop. For intermediate and power users, it's useful to try new things, or get things done while working on something else.
- Experiment with it and always make backup of your project before starting - in the future restoration points will be added to go back to a previous state if the result is not good or broken.
2025-06-17 16:25:03 +02:00
Florian Rival 7e1f2c6c97 Add support search (and replace) in Link events (#7637) 2025-06-04 16:42:26 +02:00
D8H d08bf97471 Fix conflict between variable or property and parameter in variable setters (#7329)
- Don't show in changelog
2025-01-21 19:16:43 +01:00
D8H d6c99b27af Allow to use parameters and properties in the variable action and condition (#7124) 2025-01-15 23:28:18 +01:00
Florian Rival e237fc4b21 Add experimental support for importing JS source files in extensions (#7278)
* See more about using [JavaScript on this page](https://wiki.gdevelop.io/gdevelop5/events/js-code/javascript-in-extensions/#experimental-new-option-javascript-files-in-your-project).

Only show in developer changelog
2025-01-06 11:02:28 +01:00
Florian Rival 58ba2668c2 Add clang-tidy and builds with assertions/memory sanitizers for libGD.js (#7051)
Only show in developer changelog
2024-10-14 12:06:42 +02:00
Florian Rival 31dac9cc93 Fix memory corruption/crashes when events in extensions had errors (#7050) 2024-10-13 22:44:36 +02:00
AlexandreS e6e4d9048f Add action to set Text object font (#6911) 2024-09-02 16:25:41 +02:00
D8H 011abaf808 Allow drag and drop in the extension function parameter editor (#6847) 2024-08-20 10:29:52 +02:00
D8H 864ba181e9 Improve a comment (#6800)
Don't show in changelog
2024-07-26 11:22:52 +02:00
D8H 10fa3296a9 Fix text input disabled/read only actions, as well as a few other actions (#6797) 2024-07-26 11:04:25 +02:00
Florian Rival a51c223c9c Add experimental, work-in-progress visual editor for custom objects (aka "prefabs"/"templates") (#6699)
* Still to do: 
  * Properly handle effects (disable 3D effects) for layers
  * Handle hot reloading properly
  * Avoid duplicating the configuration of the custom object inside each object created from it. Instead, only store the modified values.
  * Add a "Extract as a custom object ("prefab")" when selecting instances in a scene.
  * Add a dialog to give choice between 2D or 3D object when creating one.
  * Make sure "behavior shared data" are properly handled (physics, pathfinding...)
  * Check if we need to give an expression to translate coordinates from the parent to the local custom object.
  * Ensure a deleted custom object does not break the editor

Co-authored-by: Davy Hélard <davy.helard@gmail.com>
2024-07-11 11:27:34 +02:00
Aurélien Vivet 5b1e3565d3 Remove dead code (TinyXml) (#6754)
Only show in developer changelog
2024-07-05 17:45:57 +02:00
D8H 75d79a7758 Display errors on variable parameters about name collisions with objects (#6732) 2024-07-01 16:42:43 +02:00
D8H f82b5fc66d Fix local variables default values when the wait action is used (#6715) 2024-06-25 16:14:40 +02:00
D8H 0b5f929773 Display expression errors on repeat loops (#6625) 2024-06-05 13:49:14 +02:00
D8H ff9c6e5cf3 Display missing objects in the diagnostic report (#6608) 2024-06-03 10:48:45 +02:00
D8H 231d92a2fa Allow any variables in for each child loops (#6585)
- Don't show in changelog
2024-05-23 18:30:11 +02:00
D8H 75bfa5cb45 Unify variable instructions and handle local variables (#6459)
- Global or scene variables can be used with a unique action and condition.
- Object variables can be used with a unique action and condition.
- Variables need to be declared following the same logic as the new expression syntax.
- Local variable can be declared on events
- Extensions have their own variables
- Show a diagnostic report when a preview is launched and there are missing scene variables, object variables or behaviors.
  - This is especially useful if external events are shared between several scenes.
2024-05-20 23:14:07 +02:00
Vladyslav Pohorielov d0005ba2cb Add support for Spine objects (2D skeletal animation) (#5927)
* This allows to use animatable 2D objects created with Spine (purchase a licence on [their website](https://esotericsoftware.com/) if you're interested).
* 2D skeletal animation allows for very smooth animations, and keep resource usage low compared to animations made of frames like Sprite objects. It's perfect for 2D games and can be used for animated characters, avatars, UI elements.
* Many thanks to @f0nar and @LousyMolars for their work on this new feature and associated game examples!

---------

Co-authored-by: Vladyslav Pohorielov <vpohorielov@playtika.com>
Co-authored-by: Gleb Volkov <glebusheg@gmail.com>
Co-authored-by: Florian Rival <Florian.rival@gmail.com>
Co-authored-by: Davy Hélard <davy.helard@gmail.com>
2024-01-17 18:19:08 +01:00
Florian Rival e2c40ff205 Improve structure variables completion (#5978)
* When a structure variable name is entered in an expression, completions will also be provided for children variables.
2023-11-30 13:47:19 +01:00
Clément Pasteau a848764318 Fix libGD.wasm not properly loaded on Electron local + build warnings (#5942)
Don't show in changelog
2023-11-23 15:55:31 +01:00
D8H 84d7500eab Add the 3D particle emitter in the object list (#5840) 2023-10-27 11:51:05 +02:00
Daniel R b0f9bed273 Add string condition operators: starts with, ends with and contains (#4970)
- Thanks @danired
2023-10-12 13:33:32 +02:00
Florian Rival 913e367f6f Allow to properly use variables/properties/parameters in brackets to access a structure variable (#5738)
* This means expressions like `MyStructure[SomeIndexVariable]` will work properly for a structure if `SomeIndexVariable` is a string variable. Gdevelop now properly uses the type of the variable/property/parameter (to avoid considering what's inside the brackets as a number if it's a string). Remember to declare your variables in the variables editor so that you can use them in expressions.
2023-10-09 18:21:49 +02:00
Florian Rival 8944df1831 Add support for writing parameter names directly in expressions (#5676) 2023-09-22 22:41:13 +02:00
Florian Rival a0925c79c3 Add a new simplified way to use variables in expressions, and automate renaming of variables in events (#5580)
* You can now simply write the name of the scene or global variable in an expression to use it: `1 + MyVariable` (instead of `1 + Variable(MyVariable)`).
* Objects can also have their variables accessed like this: `MyObject.MyVariable` (instead of `MyObject.Variable(MyVariable)`.
* This also works for properties inside functions of behaviors or custom objects. For example, you can write `Speed` instead of `Object.Behavior::PropertySpeed()`.
* This syntax will also handle all types of variables without the need to write ToString. For example, you can now write "Score: " + CoinsEarned instead of "Score: " + ToString(Variable(CoinsEarned)).
* This syntax will only work (and autocompletions will be shown) if you add the variable in the variables editor of the scene, the project or in the variables of the object. It's a good practice to always declare your variables here and give them a default value - do it to benefit from this new simplified syntax, which will make your formulas and expressions much more readable.
* When you rename a variable in an editor, it will now rename the variables everywhere in the events of the project. This makes it much easier to change the name of a variable if you find a better one. Note that this works for "rootæ variables, but not variables inside structures or arrays.
2023-09-21 18:56:12 +02:00
Florian Rival 3a2878c737 Add more restricted characters in internationalized names (#5643)
Only show in developer changelog
2023-09-07 14:54:56 +02:00
Florian Rival b262cb4c3e Fix link in disabled events still processed internally (#5619)
* This could generate infinite loop crashs even when a link is included as
a sub event of a disabled event.
2023-09-01 13:58:51 +02:00