This project adds TypeScript/JavaScript Support for Godot 4.x by leveraging the high-performance capabilities of V8 to bring the delightful development experience of TypeScript into Godot.
Note
The core functionality is implemented and essentially usable but still under testing.
- Godot ScriptLanguage integration
- Debug with Chrome devtools when using V8
- REPL in Editor
- Hot-reloading
- QuickJS as an alternative runtime (experimental, testing)
- Asynchronous module loading (
import
function) - Sandboxed scripting (not multi-threading)
- Worker threads
STEP 1: Download or clone the repo into the modules
directory of your Godot engine source:
cd YourGodotEngineSource/modules
git clone https://github.com/ialex32x/GodotJS.git
STEP 2: Put v8
headers and libraries into GodotJS
, or directly download the prebuilt v8
from GodotJS-Dependencies:
# download the archive of prebuilt v8
curl https://github.com/ialex32x/GodotJS-Dependencies/releases/download/v8_r11/v8_r11.zip --output your/download/path/v8.zip
# extract the zip file into your `GodotJS` directory,
# NOTE: no white space after the switch `-o`
7z x -o"YourGodotEngineSource/modules/GodotJS" your/download/path/v8.zip
Note
Don't forget to put the headers/libraries of v8
into the same directory structure used in prebuilt v8
if you decide to compile it by yourself.
The module directroy structure looks like this:
┗━ godot
┗━ modules
┣━ ...
┣━ gltf
┣━ GodotJS
┃ ┣━ bridge-quickjs
┃ ┣━ bridge-v8
┃ ┣━ ...
┃ ┣━ lws
┃ ┗━ v8
┃ ┣━ include
┃ ┣━ linux.x86_64.release
┃ ┣━ macos.arm64.release
┃ ┣━ windows_x86_64_release
┃ ┗━ ...
┣━ gridmap
┣━ ...
The currently used version of v8
is 12.4.254.20
.
STEP 3: Compile and launch Godot Editor
. Then, install TypeScript/JavaScript presets into a Godot project.
Note
Since the prebuilt v8
library is built with the windows-latest
github runner which uses VS2022, encountering Unresolved external symbol
errors during linkage with v8_monolith.lib
or libucrt.lib
may be addressed by updating to the latest version of the MSVC v143
toolchain, Windows Universal CRT SDK
and Visual Studio 2022
itself. See GodotJS-Dependencies README for the version of MSVC C++ Compiler used in different prebuilt library packages.
A prebuilt version of Godot Editor
can be downloaded from GodotJS-Build.
Because the GodotJS-Build workflow is currently run manually, it may not be built from the latest commit of GodotJS
.
For more information on how to use GodotJS
in a project, check out GodotJSExample for examples written in typescript.
And, don't forget to run npm install
and npx tsc
before opening the example project.
- GodotJSExample: An example godot project for demonstrating how to use GodotJS
- GodotJS-Build: Github workflows for building Godot Editor with GodotJS support
- GodotJS-Dependencies: Github workflows for building dependencies of GodotJS (v8, lws)
- Windows: x86_64
- Windows: arm64, UWP
- MacOS: arm64
- MacOS: x86_64 (not tested)
- Linux: x86_64
- Linux: arm64
- Android: arm32, arm64, x86_64 (
ndk_platform=android-24
) - iOS: arm64, x86_64 (not tested)
- WebAssembly