Skip to content

Your first Kotlin class

Let's create a file src/main/kotlin/com/yourcompany/game/Simple.kt with the following content:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
package com.yourcompany.game

import godot.Node3D
import godot.annotation.RegisterClass
import godot.annotation.RegisterFunction
import godot.global.GD

@RegisterClass
class Simple: Node3D() {

    @RegisterFunction
    override fun _ready() {
        GD.print("Hello world!")
    }
}

The classes section covers in details what we did here, but for now @RegisterClass will register the class to Godot. Now we can trigger a build.

1
./gradlew build

Once the build completes, you will be able to use your class in Godot. Simply attach the generated gdj file (By default, generated in the gdj/ directory at the root of the project. For more details, read user guide) to a node like you would do in GDScript. If you rebuild the project while the editor is open, your classes will be reloaded automatically in Godot and you can use them.

Attach Node Script

Info

As Kotlin is a compiled language you can only use newly created classes after you have built them, otherwise, Godot will not be able to find them.

Final project structure

The final filesystem project should look like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
~/Dev/Workspace/kotlin-godot-demo tree
.
├── build
│   └── libs
├── build.gradle.kts
├── gdj
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── icon.svg
├── kotlin-godot-demo.iml
├── project.godot
├── settings.gradle.kts
└── src
    └── main
        └── kotlin
            └── com
                └── utopiarise
                    └── demo
                        └── Simple.kt

12 directories, 10 files