Mix Go with GDScript
Two languages, one project. Keep GDScript for UI, glue, and fast iteration; drop to Go for the heavy systems. They interoperate through Godot's class system, so you adopt Go one system at a time — no rewrite required.
godot-go binds the Godot 4 engine to Go through the GDExtension API via cgo. The editor you love, the language you trust.
Under active development · API evolving toward 1.0
Everything a Go developer needs to ship real games on a real engine
Two languages, one project. Keep GDScript for UI, glue, and fast iteration; drop to Go for the heavy systems. They interoperate through Godot's class system, so you adopt Go one system at a time — no rewrite required.
Your gameplay lives in Go, so the same packages — data models, validation, game rules — run on an authoritative multiplayer server too. One language from client to backend, types reused across the wire.
The Go standard library ships with encoding/json, net/http, crypto, testing, and runtime/pprof — batteries included, plus a decade of battle-tested packages.
Linux and Windows prerequisites verified against the project's CI (Go 1.26.x · Godot 4.7-stable); macOS follows the Makefile.
build-essential (gcc).generate, build, and test.PATH or via GODOT.make installdeps.$ sudo apt-get install -y build-essential clang-format
GODOT at the .exe.make installdeps.$ scoop install wget unzip
mingw-w64 gcc and make come with your dev environment (runner-provided in CI).
generate, build, and test.PATH or via GODOT.make installdeps.$ brew install go clang-format
$ brew install --cask godot
$ xcode-select --install
Homebrew can't install the Xcode Command Line Tools (clang) — run xcode-select --install once; Homebrew itself needs them. The godot cask symlinks the binary onto your PATH.
$ go get github.com/godot-go/godot-go
Generate the bindings, build the native library, then run the demo.
$ make generate && make build
$ make test
The questions every Go developer asks first
The API is experimental and evolving toward 1.0. It firms up as we approach release — pin your versions and read the changelog before updating.
Go's concurrent collector pauses are sub-millisecond. For hot paths, reuse allocations with sync.Pool, keep game state in structs, and profile — your 60 fps stays safe.
Godot 4, through the GDExtension API. godot-go plugs into the engine as a native extension via cgo — no fork, no patching the engine.
Nope. The editor, scenes, assets, and workflow stay exactly as you know them. Only your gameplay logic changes — from GDScript to Go.
Your game logic compiles to native code and runs at native speed while the engine handles rendering. Heavy simulation, AI, and data crunching are exactly where Go shines.