Claude 9fe13e1350 Custom objects: build their transformation only when it changed
The conversions added by the previous commits are read far more often
than the values they are built from change: the cursor is converted by
every object it may be over, on every frame. Three things were rebuilt
for nothing.

- The way back from the parent recomputed the rotation of the object
  (a `Math.cos` and a `Math.sin`, and a quaternion in 3D) on every
  single call. It is now kept, like the transformation itself, until
  something the object is made of changes. The 3D one also allocated
  two arrays per call, which are gone.

- Moving or turning an object told its renderer to build its whole
  container again, when it only had to write the position or the
  rotation on it - which it was already asked to do right after. The
  build stays pending when one was asked for earlier (a scale, a center
  of rotation), so nothing is ever drawn from values that changed.

- A child moving rebuilt the transformation of its parent, even when the
  parent has an area of its own (or a center of rotation set on it) and
  therefore does not follow its children at all. Its hit boxes - and the
  ones of the objects containing it - still follow them.

The tests come from an acceptance suite written against the three
previous commits: every mutator is checked to leave both ways of the
conversion to recompute, a child moving is checked to still refresh the
bounds and the collision data of its parent, and the object with no area
of its own is checked to still move with its children.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01CuhWWcQTYqEwUG5RWdsCqi
2026-09-17 12:04:31 +00:00
2026-03-11 17:30:11 +01:00
2026-05-21 12:46:30 +02:00

GDevelop logo

GDevelop is a full-featured, no-code, open-source game development software. You can build 2D, 3D and multiplayer games for mobile (iOS, Android), desktop and the web. GDevelop is designed to be fast and incredibly intuitive: make games using an easy-to-understand yet powerful event-based system and modular behaviors. Create with AI that assists or builds alongside you.

The GDevelop editor when editing a game level

The GDevelop editor when editing a game level

Getting started

❔ I want to... 🚀 What to do
🎮 Use GDevelop to make games Go to GDevelop homepage to download the app!
⚙️ Create/improve an extension Read about creating an extension, with no-code or code.
🧑‍💻 Contribute to the editor or game engine Follow this README.
👾 Create or sell a game template Submit a free example or a paid template on the Asset Store.
🎨 Share or sell an asset pack Submit a free or paid asset pack on the Asset Store.
🌐 Help translate GDevelop Go on the GDevelop project on Crowdin or translate in-app tutorials.
👥 Get online game services or commercial support See offers for professionals, teams or individual creators.

Are you interested in contributing to GDevelop for the first time? Take a look at the list of good first issues, good first contributions or the "🏐 not too hard" cards on the Roadmap.

Games made with GDevelop

  • Find GDevelop games on gd.games, the gaming platform for games powered by GDevelop.
  • See the showcase of games created with GDevelop and published on Steam, iOS (App Store), Android (Google Play), Itch.io, Newgrounds, CrazyGames, Poki...

Some games made with GDevelop

Technical architecture

GDevelop is composed of an editor, a game engine, an ecosystem of extensions as well as online services and commercial support.

Directory ℹ️ Description
Core Core classes, describing the structure of a game and tools to implement the IDE and work with GDevelop games.
GDJS The game engine, written in TypeScript, using PixiJS and Three.js for 2D and 3D rendering (WebGL), powering all GDevelop games.
GDevelop.js Bindings of Core, GDJS and Extensions to JavaScript (with WebAssembly), used by the IDE.
newIDE The game editor, written in JavaScript with React, Electron, PixiJS and Three.js.
Extensions Built-in extensions for the game engine, providing objects, behaviors and new features. For example, this includes the physics engines running in WebAssembly (Box2D or Jolt Physics for 3D). All the official and experimental extensions are on this repository. Community extensions are available here.

To learn more about GDevelop Architecture, read the architecture overview here.

Pre-generated documentation of the game engine is available here.

Status of the tests and builds: macOS and Linux build status Fast tests status Windows Build status https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg

Community

Development Roadmap

License

  • The Core library, the native and HTML5 game engines, the IDE, and all extensions (respectively Core, GDJS, newIDE and Extensions folders) are under the MIT license.
  • The name, GDevelop, and its logo are the exclusive property of Florian Rival.

Games exported with GDevelop are based on the GDevelop game engine (see Core and GDJS folders): this engine is distributed under the MIT license so that you can distribute, sell or do anything with the games you created with GDevelop. In particular, you are not forced to make your game open-source.

Star History

Help us spread the word about GDevelop by starring the repository on GitHub!

Star History Chart

Languages
JavaScript 88%
C++ 7.7%
TypeScript 3.9%
CSS 0.2%