Godot engine logo Go programming language logo

Write your game in Go.
Ship it with Godot.

godot-go binds the Godot 4 engine to Go through the GDExtension API via cgo. The editor you love, the language you trust.

Get Started View on GitHub

Under active development · API evolving toward 1.0

Why godot-go

Everything a Go developer needs to ship real games on a real engine

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.

Shared Game & Server Logic

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.

Go Standard Library

The Go standard library ships with encoding/json, net/http, crypto, testing, and runtime/pprof — batteries included, plus a decade of battle-tested packages.

Get Started

Linux and Windows prerequisites verified against the project's CI (Go 1.26.x · Godot 4.7-stable); macOS follows the Makefile.

Linux

Prerequisites

  • Go ≥ 1.26 — compiler and toolchain for the bindings. CI pins 1.26.5.
  • C compiler (cgo) — build-essential (gcc).
  • GNU make — drives generate, build, and test.
  • Godot 4.7-stable — header dumps and headless tests; on PATH or via GODOT.
  • clang-format optional — formats the generated C/H bindings; the build skips it silently when absent.
  • goimports optional — tidies the generated Go sources; install with make installdeps.
debian / ubuntu
$ sudo apt-get install -y build-essential clang-format
go module · all platforms
$ go get github.com/godot-go/godot-go

Build & Test

Generate the bindings, build the native library, then run the demo.

build
$ make generate && make build
test
$ make test

FAQ

The questions every Go developer asks first

Is the API stable?

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.

Will Go's garbage collector tank my frame rate?

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.

Which Godot versions are supported?

Godot 4, through the GDExtension API. godot-go plugs into the engine as a native extension via cgo — no fork, no patching the engine.

Do I give up the Godot editor?

Nope. The editor, scenes, assets, and workflow stay exactly as you know them. Only your gameplay logic changes — from GDScript to Go.

How is performance versus GDScript or C#?

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.