16-reviewer audit of ae815f489 (103 findings) remediated in six groups.
1. Lazy THREE init (runtimeobject.ts): scratch Box3/Matrix4/Euler allocated on
first use, so a 2D-only export (never loads three.js) boots.
2. Culling correctness: computeAABB uses |size|/2 half-extents and places the box
at the true rotation pivot C' = P + R*(C-P); custom-object children union
conservative boxes; the frustum is rebuilt in the boxes' space (right-multiply
_threeGroup.matrixWorld) with a numeric cache incl. camera-Z; hide/cull route
through setCullingVisible/applyRenderVisibility (no detached-carrier writes);
custom-object children and nested tile maps no longer cull with a wrong window.
3. Studio pipeline wedge (Utils.js + Studio/*): lock release over all calls,
working marks only editor calls, spawn failures reach the model, plan merge on
objects (JSON.parse bug), one persistent LoopGuard with real call_id +
re-arming + recordSuccess, RequestWriteGate self-retry + supersede-rejects,
UseStudioRuntime fire-and-forget gate write + recomputed plan + sent check,
FinalizeSubAgents terminal-'error' + executed-but-unsent + turn-cap + enriched
report, send-returns-boolean, BYOK cache write-through, suspension cascade,
turn-cap dispatch, stand-alone cannot spawn.
4. Instancing: useInstancing now serializes (C++); the pool grows without null.add
and collapses deleted slots; the instance matrix is normalized
(carrier * correction) and rewritten on rotation/hide; animated/skinned/morph/
multi-mesh models rejected; per-slot shadows; layer moves re-acquire.
5. BYOK role enforcement: studioRoleId persisted and re-applied every turn (tools +
prompt); dispatch filters tools outside the role; readOnly roles skip edit
approval.
6. Warnings + Info: mutating-tool classification, hasOwnProperty role guards,
cache-message merge, spawn arg caps, per-batch GDD note, fan-out cap, plan
dependsOn-omission + caps + duplicate-id + fail-closed + trimmed ids, tilemap
rotated/mirror bail + window margin + null-map guard, pool dispose wired to
unloadScene, schema description required, plus doc/comment corrections.
Verified: engine builds clean; boot + computeAABB (13/13) + Model3DInstancePool
(9/9) harnesses pass; Jest green for src/AiGeneration + src/AI (175), CustomAIClient
(27, incl. the critical second-turn role regression), PlanStore (25),
FinalizeSubAgents (21), LoopGuard (18), RequestWriteGate (11), Roles (9).
GDevelop JavaScript Platform (HTML5 game engine)
GDevelop JavaScript Platform (GDJS) is the game engine for making HTML5/Javascript based games with GDevelop.
📚 Game developer, searching for the documentation? Go to the GDJS Runtime (game engine) documentation.
1) Installation 💻
To do changes in the game engine or create extensions, install the development version (click here to learn more).
2) Development 🤓
GDJS is composed of two parts:
- the JavaScript game engine (Runtime folder), called GDJS Runtime.
- the C++ part exposing GDJS to GDevelop IDE (GDJS folder), including the Exporter and classes doing transpilation from events to JavaScript, called GDJS Platform.
GDJS Runtime (game engine)
The game engine is in the Runtime folder. If you want to work on the engine directly, follow the GDevelop 5 README about the development of the game engine.
-
To use the game engine, you can look into the GDJS Runtime (game engine) documentation.
-
To run tests for the game engine, go to
GDJS/tests, runnpm installandnpm test. More information in the README for the tests. -
To launch type checking with TypeScript, run
npm installandnpm run check-typesinGDJSfolder.
Building GDJS Runtime
To build the GDJS Runtime, run npm run build in the GDJS folder.
Build Options:
- Production build (default):
npm run build- builds with minification enabled - Debug build:
npm run build -- --debug- builds without minification for easier debugging - Custom output path:
npm run build -- --out=/path/to/output- specify custom output directory
Examples:
# Standard production build
npm run build
# Debug build for development (no minification)
npm run build -- --debug
# Debug build with custom output path
npm run build -- --debug --out=./debug-build
GDJS Platform (exporters, code generation...)
Check the GDJS Platform documentation or the full GDevelop developers documentation.
3) How to contribute 😎
Any contribution is welcome! Whether you want to submit a bug report, a feature request or any pull request to add a feature, do not hesitate to get in touch.
-
Follow the Development section of the README to set up GDevelop and start modifying either the editor or the game engine/extensions.
-
To submit your changes, you have first to create a Fork on GitHub (use the Fork button on the top right), then create a Pull Request.
License
GDJS is distributed under the MIT license: see LICENSE.md for more information.