Files
GDevelop/GDevelop.js
Florian Rival 252eeb86b1 Upgrade the underlying runtime running the desktop app, and exported desktop games, to Electron 18 (#3806) (#3854)
* This brings improved performance and compatibility for the desktop app with Windows, macOS and Linux.
* In particular, tilemap performance should be greatly improved both in the scene editor, the preview and exported games on Linux.
* This should also improve performance of both the editor and games on macOS when running on Apple Silicon (M1 cpus).
* Thanks to @nilaymajorwar for the ground work on this upgrade.

Only show the rest in developer changelog:

* More work is needed to isolate the Electron "renderer" process from the "main" process (both for the editor and for games), by using `contextBridge` and preload scripts (https://www.electronjs.org/docs/latest/tutorial/process-model). Your help is welcome to progressively do this migration.

Co-authored-by: Nilay Majorwar <nilaymajorwar@gmail.com>
2022-05-08 17:24:49 +02:00
..

GDevelop.js

This is the port of GDevelop core classes to WebAssembly+JavaScript. This allows GDevelop Core libraries to run in a browser or on Node.js.

🎮 GDevelop is a full-featured, cross-platform, open-source game development software requiring no programming skills. Download it on the official website.

How to build

👋 Usually, if you're working on the GDevelop editor or extensions in JavaScript, you don't need to rebuild GDevelop.js. If you want to make changes in C++ extensions or classes, read this section.

Linux/macOS Windows
git clone https://github.com/juj/emsdk.git git clone https://github.com/juj/emsdk.git
cd emsdk cd emsdk
./emsdk update emsdk update
./emsdk install 1.39.6 emsdk install 1.39.6
./emsdk activate 1.39.6 emsdk activate 1.39.6
source ./emsdk_env.sh emsdk_env.bat
  • Launch the build from GDevelop.js folder:
    cd GDevelop.js
    npm install
    npm run build

⚠️ If the npm install fails, relaunch it in a different terminal using a recent Node.js and npm version (to avoid using the old npm version from Emscripten).

Output is created in /path/to/GD/Binaries/embuild/GDevelop.js/ and also copied to GDevelop 5 IDE (newIDE folder).

-> ⏱ The linking (last step) of the build can be made a few seconds faster by specifying -- --dev. Be sure to remove it before building a release version, as this disable "link-time optimizations" of the generated WebAssembly module.

  • You can then launch GDevelop 5 that will use your build of GDevelop.js:
    cd ..
    cd newIDE/app
    npm install
    npm start

More information in GDevelop 5 readme.

Tests

npm test

About the internal steps of compilation

The npm build task:

  • Creates Binaries/embuild directory,
  • Launches CMake inside to compile GDevelop with emconfigure to use Emscripten toolchain,
  • Updates the glue.cpp and glue.js from Bindings.idl using Emscripten WebIDL Binder,
  • Launches the compilation with make (or ninja on Windows with CMake 3.17+) (you can also compile using MinGW-32 using npm run build-with-MinGW).

See the CMakeLists.txt for the arguments passed to the Emscripten linker.

Documentation