/javascript

Javascript binding for godotengine

Primary LanguageC++MIT LicenseMIT

GodotJS Logo

GodotJS

-- JavaScript and TypeScript language binding for Godot game engine --

This module implements JavaScript/TypeScript language support for the Godot game engine using QuickJS as the JavaScript engine.

Getting started

Read the getting-started.

Features

  • Almost complete ES2020 support
  • All Godot API available
  • Operator overriding for built-in types (Vector3, Color, etc)
  • TypeScript support
  • Using third-party libraries from npm
  • Multi-thread support with Worker API
  • Full code completion support for all Godot APIs including signals and enumerations
  • Debug in Visual Studio Code with the plugin - currently not available for 4.x

Getting the engine

No installation or setup necessary. The binaries for download are the complete, usable Godot editor and engine with JavaScript/TypeScript language support.

Binary downloads

Download the binaries from the release page.

Compiling from source

  • Clone the source code of godot:
    • git clone git@github.com:godotengine/godot.git or
    • git clone https://github.com/godotengine/godot.git
  • This branch uses version 4.1 so checkout the version with: git checkout 4.1
  • Clone this module and put it into godot/modules/javascript:
    • git clone git@github.com:godotjs/javascript.git godot/modules/javascript or
    • git clone https://github.com/godotjs/javascript.git godot/modules/javascript
  • Recompile the godot engine
    • Use scons with those additional options warnings=extra werror=yes module_text_server_fb_enabled=yes to show all potential errors:
      • Windows: scons platform=windows warnings=extra werror=yes module_text_server_fb_enabled=yes
      • MacOS: scons platform=macos arch=arm64 warnings=extra werror=yes module_text_server_fb_enabled=yes
    • Hint: To enable unit tests you need to add tests=true to scons arguments

Documentation, Tutorials & Demos

Read this documentation or look at the tutorials or demos:

Contributing

If you like to contribute to this project check the CONTRIBUTING.md file.