Skip to content

Getting Started

Download the editor and start the application

Recommended for TypeScript:

  • Rename the downloaded file to godot and add Godot to your path
  • Open a terminal
  • Test if you can use Godot via terminal and run godot --version

How to export script class to Godot

  1. Define your JavaScript class and inherit from a Godot class, then export it as the default entry:
my-sprite.mjs
// The default export entry is treated as an exported class to Godot
export default class MySprite extends godot.Sprite {
  // this is _init() in GDScript
  constructor() {
    super();
  }

  _ready() {}

  _process(delta) {}
}
  1. Save the script with extension .mjs
  2. Attach the script file to the node or resource object like you do with GDScript

How to export signals

my-sprite.mjs
export default class MySprite extends godot.Sprite {}
// register game_over signal to MySprite class
godot.register_signal(MySprite, "game_over");

How to export properties

my-sprite.mjs
export default class MySprite extends godot.Sprite {
  _process(delta) {
    // Yes! We can use operators in JavaScript like GDScript
    this.position += this.direction * delta;
  }
}
// export 'direction' properties to MySprite Godot inspector
godot.register_property(MySprite, "direction", new godot.Vector2(1, 0));

There are 2 ways of using the godot.register_property. The third parameter can either be a default value for the property you're trying to export or an object giving a more detailed description of how the editor should show it.

function register_property(target: GodotClass | godot.Object, name: string, value: any);
function register_property(target: GodotClass | godot.Object, name: string, info: PropertyInfo);

So calling the register_property like this:

godot.register_property(MyClass, "number_value", 3.14);

Is the simplified version of:

godot.register_property(MyClass, "number_value", {
  type: godot.TYPE_REAL,
  hint: godot.PropertyHint.PROPERTY_HINT_NONE,
  hint_string: "",
  default: 3.14,
});

For more detail on how to use it, click here.