gogogd

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2026 License: MIT Imports: 13 Imported by: 0

README

gogogd

A Godot binding for Go plus an opinionated authoring layer, in one project. Write full Godot games in Go.

Working principle: Go fast. Stay Godot.

gogogd lets you write Godot games in Go with the type system, tooling, and ecosystem you already use, without the binding ceremony that makes raw gdextension bindings verbose. The Godot scene tree, nodes, signals, resources, packed scenes, and lifecycle hooks remain front and centre — gogogd just makes them pleasant to drive from Go code.

package main

import (
    "fmt"
    "os"

    "github.com/AveryLucas/gogogd/classdb/Node"
    "github.com/AveryLucas/gogogd/startup"
)

type Game struct {
    Node.Extension[Game] `gd:"Game"`
}

func (g *Game) Ready() {
    fmt.Fprintln(os.Stderr, "[hello] Game.Ready — gogogd works")
}

func main() {
    // Class registrations are emitted by `gogogd register` into
    // gogogd_register.go's init() — run automatically before main.
    startup.Scene()
}

Drop a Game node into main.tscn in the Godot editor (or use gogogd new — the scaffold writes the scene file too), then gogogd dev rebuilds and reloads on save.

Install

Requires Go 1.26+ and Godot 4.6.2+.

go install github.com/AveryLucas/gogogd/cmd/gogogd@latest
gogogd new my-game
cd my-game
gogogd dev

CLI

gogogd new <name>       Scaffold a new project.
gogogd doctor [--json]  Diagnose the local toolchain.
gogogd register         Generate gogogd_register.go for the current project.
gogogd build [target]   Build the project (target: windows, linux, macos, web).
gogogd run              Codegen + build + launch the project under Godot.
gogogd dev              File-watching dev loop (rebuild + relaunch on save).
gogogd inspect <type>   Print a registered type's static schema.
gogogd test [--duration d]  Run the project headless for d (default 8s).

Most users only need gogogd dev. The others are exposed for CI, scripting, and one-off operations.

What it provides

Component authoring. Register a Go struct as a Godot class by embedding the binding's <Class>.Extension[Self]:

type Player struct {
    CharacterBody2D.Extension[Player] `gd:"Player"`

    HP    int       // inspector property
    Speed gd.Delta  // inspector property
}

func (p *Player) Ready()             { /* ... */ }
func (p *Player) Process(dt gd.Delta){ /* ... */ }

Codegen promotes every ancestor's methods, properties, and signals onto the leaf class, so p.SetPosition(v), p.MoveAndSlide(), p.OnPressed(cb), p.QueueFree() all work directly with no .AsParent() chain.

Helpers — pick your import shape. Two equivalent ways to reach the authoring API:

// (1) Umbrella — one import for the high-frequency surface.
import "github.com/AveryLucas/gogogd"

gogogd.After(p.AsNode(), 0.5, p.QueueFree)
gogogd.Connect0(p.AsNode(), &p.Died, onDied)
gogogd.Quit(p.AsNode())
// (2) Bare packages — one import per verb. The import list reads as
//     the inventory of what the component does.
import (
    "github.com/AveryLucas/gogogd/timing"
    "github.com/AveryLucas/gogogd/signals"
    "github.com/AveryLucas/gogogd/scenetree"
)

timing.After(p.AsNode(), 0.5, p.QueueFree)
signals.Connect0(p.AsNode(), &p.Died, onDied)
scenetree.Quit(p.AsNode())

Both compile to the same code (the umbrella is wrapper functions and type aliases over the bare packages). Mix freely — import what reads well in each file.

Package What it owns Available on umbrella?
gd Type aliases (Vec2, Vec3, Col, Delta, Radians), Must, MustOk yes
signals Signal0, Signal[T], owner-bound Connect / Connect0 yes
timing After, Every, Cooldown, OnMainThread yes
actions Pressed, JustPressed, Vector and mouse helpers yes
scenetree Quit, ChangeScene, ReloadScene, SetPaused yes
tree Find, Children, Descendants, OnlyIf yes
spawn Add, AddChild, AddNew (polymorphic) yes
strict Assert for ggd:"strict" field validation yes
visual AttachCircle, AttachRect, ColorOf, X11 colours bare only
stat Reactive Stat[T] bare only
pool Typed object pool bare only
sequence Timeline DSL (Wait, Do, Parallel, Loop) bare only
bus Global pub/sub bare only
i18n Tr, SetLocale, Bind bare only
audio Bus volume, ducking bare only
window Fullscreen, VSync bare only
settings Typed reactive singleton bare only
physics Raycast2D, OverlapRect bare only
ui Modal screen stack, toast, focus bare only
fsm Flat finite state machine bare only
fx Flash, Hitstop bare only
save Typed save slots with versioned migration bare only

The umbrella covers the core authoring surface — the helpers a typical component file reaches for. Domain-specific packages (save, i18n, ui, fsm, …) stay as bare imports because a file that touches them is about that domain and the explicit import is informative.

main() still imports startup directly. startup.Scene() is the engine entry point. We can't re-export it through the umbrella without an import cycle (the cgo glue at the umbrella root is blank-imported by startup). One-line cost per project.

The full Godot class surface. Every Godot class (Node, Sprite2D, CharacterBody2D, Control, Button, ~500 in total) is a Go package under classdb/. Codegen emits the full bound surface plus virtual hook helpers and OnX signal connectors.

Examples

  • examples/01-coin-collector — smallest real game shape. Player auto-paths toward coins, picks them up via Area2D overlap, score on a Label HUD.
  • examples/02-shooter — bullets with self-cleanup, enemy spawner, body-overlap hit detection.
  • examples/03-menus-and-save — typed save slots with migration, reactive settings, modal screen stack, audio/window control, global event bus, FSM, i18n.

Each runs headless under gogogd test --duration 5s.

Documentation

Supported platforms

  • Windows (GOOS=windows gogogd build windows)
  • Linux (GOOS=linux gogogd build linux)
  • macOS (GOOS=darwin gogogd build macos)
  • Web (GOOS=js gogogd build web)

64-bit only (arm64, amd64, wasm).

Status

gogogd is pre-1.0. The authoring surface is stable; the binding layer tracks Godot 4.6.x. Breaking changes happen — pin a commit until 1.0.

History

gogogd started as an opinionated authoring layer on top of grow-graphics/gd (also known as Graphics.GD), a Godot binding for Go by @Splizard and contributors. In May 2026 the two were merged into one project: every API decision that was previously "wrapper sugar over the binding" is now codegen on the binding itself. The original upstream README is preserved at Readme_upstream.md.

Graphics.GD's design — the keepalive walker, the variant system, the classdb registration machinery, the cgo bridge, the cross-platform build pipeline — is the foundation gogogd stands on. Thanks.

The gogogd-specific work covers the authoring helpers, the gogogd CLI, the codegen passes that promote parent methods/properties/signals onto leaf classes, the scaffold templates, and the documentation rewrite.

Licensing

MIT, the same as Godot. You can use gogogd in any manner you can use the Godot engine. The gd command-line tool reuses some code under the Apache 2.0 license. The Readme_upstream.md is preserved under the original Graphics.GD license terms.

If gogogd is useful for a commercial product, consider sponsoring @Splizard — the binding layer they maintain is most of the code, and the upstream project depends on sponsor support.

Documentation

Overview

Package gogogd is the umbrella for the gogogd authoring API.

Most user-facing helpers and type aliases live here as re-exports of the bare packages underneath (`timing`, `signals`, `actions`, `scenetree`, `tree`, `spawn`, `strict`, …). Users who prefer the bare-package shape can import those directly; users who want one import can get most of what they need from this package.

Two things are NOT in the umbrella:

  • The per-class packages under `classdb/` (Node, CharacterBody2D, Control, …). There are ~500 of them and users only need the handful their components actually subclass — importing those directly keeps the import list informative.
  • The engine entry point. `main()` calls `startup.Scene()` from "github.com/AveryLucas/gogogd/startup". We can't re-export it through the umbrella without an import cycle (startup blank-imports this package for cgo linking).

A typical component file is two imports:

import (
    "github.com/AveryLucas/gogogd"
    "github.com/AveryLucas/gogogd/classdb/CharacterBody2D"
)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Add

func Add(parent Node.Instance, thing any, pos Vec2) Node.Instance

Add adds `thing` as a child of `parent` and positions it at `pos`. Polymorphic over: a Go value implementing AsNode, a PackedScene instance, or a string scene path ("res://x.tscn").

func Add3

func Add3(parent Node.Instance, thing any, pos Vec3) Node.Instance

Add3 is the 3D variant of Add.

func AddChild

func AddChild(parent Node.Instance, thing any) Node.Instance

AddChild adds `thing` as a child of `parent` without setting a position. Useful for non-spatial children.

func AddNew

func AddNew[T interface{ AsNode() Node.Instance }](parent Node.Instance, newFn func() T) T

AddNew constructs a fresh T via `newFn` and adds it as a child of `parent`. Used for stock Godot node types (Timer, etc.) that have their own constructor.

func After

func After(owner Node.Instance, dt Delta, fn func())

After schedules `fn` to run once after `dt` seconds. The schedule is owner-bound: if `owner` exits the tree before the timer fires, `fn` is dropped.

func AncestorOf

func AncestorOf[T Object.Any](start Node.Instance) (T, bool)

AncestorOf walks up from `start` and returns the nearest ancestor matching type T.

func As

func As[T Object.Any](value Object.Any) (T, bool)

As converts `value` to the requested type T (typically a leaf Instance type). Returns (T, false) if the conversion isn't valid.

func Assert

func Assert(target any)

Assert validates every `ggd:"strict"` tagged child field on `target` is populated by a scene-authored node (not an auto-created runtime stub). Call from Ready.

func (m *MainMenu) Ready() {
    gogogd.Assert(m)
    // ... fields are now guaranteed scene-authored
}

Panics on any unset strict field.

func ChangeScene

func ChangeScene(any Node.Instance, path string) error

ChangeScene switches to the scene at `path` (typically "res://x.tscn").

func Children

func Children[T Object.Any](parent Node.Instance) []T

Children returns all direct children of `parent` whose type matches T.

func Connect

func Connect[T any](owner Node.Instance, sig *Signal[T], fn func(T))

Connect owner-binds a single-payload signal handler.

func Connect0

func Connect0(owner Node.Instance, sig *Signal0, fn func())

Connect0 owner-binds a void-signal handler. When `owner` exits the scene tree, the connection auto-detaches.

func Connect2

func Connect2[A, B any](owner Node.Instance, sig *Signal2[A, B], fn func(A, B))

Connect2 owner-binds a two-payload signal handler.

func Connect3

func Connect3[A, B, C any](owner Node.Instance, sig *Signal3[A, B, C], fn func(A, B, C))

Connect3 owner-binds a three-payload signal handler.

func Descendants

func Descendants[T Object.Any](parent Node.Instance) []T

Descendants returns every descendant of `parent` whose type matches T.

func Every

func Every(owner Node.Instance, dt Delta, fn func())

Every schedules `fn` to run on a repeating `dt`-second interval. Owner-bound — auto-cancels on owner exit.

func Find

func Find[T Object.Any](any Node.Instance) (T, bool)

Find searches the scene tree from `any` for a node of type T.

func IsPaused

func IsPaused(any Node.Instance) bool

IsPaused reports whether the engine is currently paused.

func JustPressed

func JustPressed(action string) bool

JustPressed reports whether the named input action transitioned to pressed this frame.

func JustReleased

func JustReleased(action string) bool

JustReleased reports whether the named input action transitioned to released this frame.

func Must

func Must[T any](v T, err error) T

Must adapts an (T, error) return into a T, panicking on non-nil error. Use for component code that *expects* the value to be there.

func MustOk

func MustOk[T any](v T, ok bool) T

MustOk adapts a (T, bool) return into a T, panicking on false.

func OnExit

func OnExit(owner Node.Instance, fn func())

OnExit fires `fn` once when `owner` exits the scene tree.

func OnMainThread

func OnMainThread(fn func())

OnMainThread runs `fn` on Godot's main thread. Use from a goroutine when you need to touch any Godot node, since cross-thread node access is unsafe.

func OnlyIf

func OnlyIf[T, In Object.Any](fn func(T)) func(In)

OnlyIf wraps a typed handler so it only fires when the incoming argument is of type T. Common with signals whose payload type is looser than what you want to react to.

area.OnBodyEntered(gogogd.OnlyIf(func(p *Player) { p.Hit() }))

func OnlyIfBody2D

func OnlyIfBody2D[T Object.Any](fn func(T)) func(Node2D.Instance)

OnlyIfBody2D is the Node2D-specialised version of OnlyIf for physics-body overlap signals.

func Pressed

func Pressed(action string) bool

Pressed reports whether the named input action is currently held.

func Quit

func Quit(any Node.Instance)

Quit shuts the engine down cleanly. `any` is any node in the tree (used to reach SceneTree).

func ReloadScene

func ReloadScene(any Node.Instance) error

ReloadScene reloads the current scene from disk.

func SetPaused

func SetPaused(any Node.Instance, paused bool)

SetPaused toggles the engine's pause state.

Types

type Class

type Class = classdb.Class

Class is the interface every registered gogogd class implements (via embedding `<Class>.Extension[Self]`). Alias for classdb.Class.

type Col

type Col = gd.Col

Col is an RGBA color. Alias for Color.RGBA.

type Cooldown

type Cooldown = timing.Cooldown

Cooldown is a zero-value-ready countdown timer. Tick each frame; Ready() reports whether the cooldown has elapsed; Reset starts it over.

type Delta

type Delta = gd.Delta

Delta is the frame-delta-time type passed to Process / PhysicsProcess. Alias for Float.X (float32).

func Strength

func Strength(action string) Delta

Strength returns the analogue strength (0..1) of the named action.

type EulerRadians

type EulerRadians = gd.EulerRadians

EulerRadians is a 3-axis Euler-angle triplet in radians.

type Radians

type Radians = gd.Radians

Radians is an angle in radians. Alias for Angle.Radians.

type Signal

type Signal[T any] = signals.Signal[T]

Signal is a single-payload signal. Declare as a struct field:

type Player struct {
    Node.Extension[Player] `gd:"Player"`
    HPChanged gogogd.Signal[int]
}

type Signal0

type Signal0 = signals.Signal0

Signal0 is a void signal (no payload). Declare as a struct field:

type Coin struct {
    Area2D.Extension[Coin] `gd:"Coin"`
    Collected gogogd.Signal0
}

type Signal2

type Signal2[A, B any] = signals.Signal2[A, B]

Signal2 is a two-payload signal.

type Signal3

type Signal3[A, B, C any] = signals.Signal3[A, B, C]

Signal3 is a three-payload signal.

type Vec2

type Vec2 = gd.Vec2

Vec2 is a 2D vector (X, Y). Alias for Vector2.XY.

func MouseDirectionFrom

func MouseDirectionFrom(from Vec2, any Object.Any) Vec2

MouseDirectionFrom returns the unit vector pointing from `from` to the current mouse position in `any`'s coordinate space.

func MousePos

func MousePos(any Object.Any) Vec2

MousePos returns the current mouse position in the coordinate space of `any` (a node or anything with AsObject()).

func Vector

func Vector(negativeX, positiveX, negativeY, positiveY string) Vec2

Vector returns a normalised 2D movement vector built from four named input actions (negativeX, positiveX, negativeY, positiveY). Useful for "use arrow keys to walk" patterns.

type Vec3

type Vec3 = gd.Vec3

Vec3 is a 3D vector (X, Y, Z). Alias for Vector3.XYZ.

type Vec4

type Vec4 = gd.Vec4

Vec4 is a 4D vector (X, Y, Z, W). Alias for Vector4.XYZW.

Directories

Path Synopsis
Package actions provides input-action polling and mouse helpers, plus the WASD-vector convenience.
Package actions provides input-action polling and mouse helpers, plus the WASD-vector convenience.
Package audio exposes Godot's audio-bus controls in a chainable, name-keyed form.
Package audio exposes Godot's audio-bus controls in a chainable, name-keyed form.
Package bus provides a process-global string-keyed pub/sub channel.
Package bus provides a process-global string-keyed pub/sub channel.
GUI
IP
OS
Sky
cmd
gd command
The 'gd' command is designed as a drop-in replacement of the 'go' command when working with Godot-based projects.
The 'gd' command is designed as a drop-in replacement of the 'go' command when working with Godot-based projects.
gd/internal/cryptic
Package cryptic provides functions for generating deterministic RSA keys and self-signed certificates.
Package cryptic provides functions for generating deterministic RSA keys and self-signed certificates.
gd/internal/cryptic/atomicfile
Implement atomic write-rename file pattern.
Implement atomic write-rename file pattern.
gd/internal/cryptic/binpatch
A means of conveying a series of edits to binary files.
A means of conveying a series of edits to binary files.
gd/internal/cryptic/pkcs7
PKCS#7 is a specification for signing or encrypting data using ASN.1 structures.
PKCS#7 is a specification for signing or encrypting data using ASN.1 structures.
gd/internal/cryptic/pkcs9
PKCS#9 is a specification for trusted timestamping.
PKCS#9 is a specification for trusted timestamping.
gd/internal/cryptic/rsa
Package rsa implements RSA encryption as specified in PKCS#1.
Package rsa implements RSA encryption as specified in PKCS#1.
gd/internal/refactor/eg
Package eg implements the example-based refactoring tool whose command-line is defined in golang.org/x/tools/cmd/eg.
Package eg implements the example-based refactoring tool whose command-line is defined in golang.org/x/tools/cmd/eg.
gogogd command
Command gogogd is the gogogd toolchain CLI.
Command gogogd is the gogogd toolchain CLI.
Package debug provides developer-time inspection helpers: live value watches, FPS readout, and a minimal in-game overlay.
Package debug provides developer-time inspection helpers: live value watches, FPS readout, and a minimal in-game overlay.
Package fsm provides flat (single-level) finite state machines for components that need explicit, transition-bounded behavior.
Package fsm provides flat (single-level) finite state machines for components that need explicit, transition-bounded behavior.
Package fx provides screen-feel helpers: hit-flash, hit-stop, screen shake.
Package fx provides screen-feel helpers: hit-flash, hit-stop, screen shake.
Package gd is the umbrella of short, curated aliases for the types every Godot game touches every day: Vec2 / Vec3 / Col / Delta / Radians, plus the registration constraint and a couple of must-or-panic idioms.
Package gd is the umbrella of short, curated aliases for the types every Godot game touches every day: Vec2 / Vec3 / Col / Delta / Radians, plus the registration constraint and a couple of must-or-panic idioms.
Package i18n provides translation lookup (Tr), locale switching (SetLocale), and a registry of widget bindings that auto-retranslate when the locale changes.
Package i18n provides translation lookup (Tr), locale switching (SetLocale), and a registry of widget bindings that auto-retranslate when the locale changes.
Code generated by the generate package DO NOT EDIT
Code generated by the generate package DO NOT EDIT
callerpc
Package callerpc provides fast caller PC capture via assembly.
Package callerpc provides fast caller PC capture via assembly.
gdclass
Code generated by the generate package DO NOT EDIT
Code generated by the generate package DO NOT EDIT
gddocs command
[gdscript] var code_preview = TextEdit.new() var highlighter = GDScriptSyntaxHighlighter.new() code_preview.syntax_highlighter = highlighter [/gdscript] [csharp] var codePreview = new TextEdit(); var highlighter = new GDScriptSyntaxHighlighter(); codePreview.SyntaxHighlighter = highlighter; [/csharp]
[gdscript] var code_preview = TextEdit.new() var highlighter = GDScriptSyntaxHighlighter.new() code_preview.syntax_highlighter = highlighter [/gdscript] [csharp] var codePreview = new TextEdit(); var highlighter = new GDScriptSyntaxHighlighter(); codePreview.SyntaxHighlighter = highlighter; [/csharp]
gdextension
Package gdextension is gogogd's authoritative Go representation of the Godot C GDExtension API.
Package gdextension is gogogd's authoritative Go representation of the Godot C GDExtension API.
gdmemory
Package gdmemory provides functions for transferring data between Go and the graphics engine.
Package gdmemory provides functions for transferring data between Go and the graphics engine.
ie
Package ie provides abbreviations for generated code.
Package ie provides abbreviations for generated code.
loosely
Package loosely provides loose any-to-any type conversions with support for all variant types.
Package loosely provides loose any-to-any type conversions with support for all variant types.
pointers
Package pointers provides managed pointers that are invisible to the Go runtime.
Package pointers provides managed pointers that are invisible to the Go runtime.
rodatacheck
Package rodatacheck detects whether a Go string is backed by the binary's read-only data section (i.e.
Package rodatacheck detects whether a Go string is backed by the binary's read-only data section (i.e.
tool/builtins command
builtins checks gdmaths and gdvalue packages for builtin class methods and reports any builtin methods that are missing from gd or any duplicates.
builtins checks gdmaths and gdvalue packages for builtin class methods and reports any builtin methods that are missing from gd or any duplicates.
tool/callables command
tool/constants command
tool/distinctor command
tool/enumerate command
tool/generate command
tool/lifetimer command
tool/nocircle command
tool/transdoc command
Package physics provides typed 2D physics queries (raycasts, shape-overlap) with a small, opinionated result type.
Package physics provides typed 2D physics queries (raycasts, shape-overlap) with a small, opinionated result type.
Package pool provides a fixed-capacity object pool for spawn-heavy scene-tree code: bullets, particles, debris.
Package pool provides a fixed-capacity object pool for spawn-heavy scene-tree code: bullets, particles, debris.
Package save provides typed, versioned save slots backed by Godot's FileAccess.
Package save provides typed, versioned save slots backed by Godot's FileAccess.
Package scenetree provides convenience wrappers for the common SceneTree operations: Quit, ChangeScene, ReloadScene, SetPaused.
Package scenetree provides convenience wrappers for the common SceneTree operations: Quit, ChangeScene, ReloadScene, SetPaused.
Package sequence runs a list of timeline steps in order, with lifetime bound to an owner node.
Package sequence runs a list of timeline steps in order, with lifetime bound to an owner node.
Package settings provides typed user-preferences singletons backed by JSON on disk under user://.
Package settings provides typed user-preferences singletons backed by JSON on disk under user://.
Package shaders provides a ShaderMaterial.Instance with the shader pipeline written within Go.
Package shaders provides a ShaderMaterial.Instance with the shader pipeline written within Go.
bool
Package bool provides GPU operations on boolean values.
Package bool provides GPU operations on boolean values.
bvec2
Pacakge bvec2 provides GPU operations on two-component boolean vectors.
Pacakge bvec2 provides GPU operations on two-component boolean vectors.
bvec3
Pacakge bvec3 provides GPU operations on three-component boolean vectors.
Pacakge bvec3 provides GPU operations on three-component boolean vectors.
bvec4
Pacakge bvec4 provides GPU operations on four-component boolean vectors.
Pacakge bvec4 provides GPU operations on four-component boolean vectors.
float
Package float provides GPU operations on floating-point values.
Package float provides GPU operations on floating-point values.
int
Package int provides GPU operations on signed integer values.
Package int provides GPU operations on signed integer values.
internal/builtins command
builtins checks gdmaths and gdvalue packages for builtin class methods and reports any builtin methods that are missing from gd or any duplicates.
builtins checks gdmaths and gdvalue packages for builtin class methods and reports any builtin methods that are missing from gd or any duplicates.
ivec2
Package ivec2 provides GPU operations on two-component signed integer vectors.
Package ivec2 provides GPU operations on two-component signed integer vectors.
ivec3
Package ivec3 provides GPU operations on three-component signed integer vectors.
Package ivec3 provides GPU operations on three-component signed integer vectors.
ivec4
Package ivec4 provides GPU operations on four-component signed integer vectors.
Package ivec4 provides GPU operations on four-component signed integer vectors.
mat2
Package mat2 provides GPU operations on 2x2 matrices.
Package mat2 provides GPU operations on 2x2 matrices.
mat3
Package mat3 provides GPU operations on 3x3 matrices.
Package mat3 provides GPU operations on 3x3 matrices.
mat4
Package mat4 provides GPU operations on 4x4 matrices.
Package mat4 provides GPU operations on 4x4 matrices.
pipeline/CanvasItem
Package CanvasItem provides a canvas item shader pipeline used for shading 2D objects.
Package CanvasItem provides a canvas item shader pipeline used for shading 2D objects.
pipeline/Fog
Package Fog provides a fog shader pipeline used for shading 3D objects.
Package Fog provides a fog shader pipeline used for shading 3D objects.
pipeline/Particle
Package Particle provides a particle shader pipeline used for shading 2D and 3D particles.
Package Particle provides a particle shader pipeline used for shading 2D and 3D particles.
pipeline/Sky
Package Sky provides a sky shader pipeline used for shading 3D objects.
Package Sky provides a sky shader pipeline used for shading 3D objects.
pipeline/Spatial
Package Spatial provides the spatial shader pipeline used for shading 3D objects.
Package Spatial provides the spatial shader pipeline used for shading 3D objects.
rgb
Package rgb provides GPU operations on three-component floating-point colors.
Package rgb provides GPU operations on three-component floating-point colors.
rgba
Package rgba provides a constructor for vec4.RGBA values.
Package rgba provides a constructor for vec4.RGBA values.
uint
Package uint provides GPU operations on unsigned integer values.
Package uint provides GPU operations on unsigned integer values.
uvec2
Package uvec2 provides GPU operations on two-component unsigned integer vectors.
Package uvec2 provides GPU operations on two-component unsigned integer vectors.
uvec3
Package uvec3 provides GPU operations on three-component unsigned integer vectors.
Package uvec3 provides GPU operations on three-component unsigned integer vectors.
uvec4
Package uvec4 provides GPU operations on four-component unsigned integer vectors.
Package uvec4 provides GPU operations on four-component unsigned integer vectors.
vec2
Package vec2 provides GPU operations on two-component floating-point vectors.
Package vec2 provides GPU operations on two-component floating-point vectors.
vec3
Package vec3 provides GPU operations on three-component floating-point vectors.
Package vec3 provides GPU operations on three-component floating-point vectors.
vec4
Package vec4 provides GPU operations on four-component floating-point vectors.
Package vec4 provides GPU operations on four-component floating-point vectors.
Package signals provides owner-bound signal connection helpers — the recommended way to attach Go callbacks to Godot signals.
Package signals provides owner-bound signal connection helpers — the recommended way to attach Go callbacks to Godot signals.
Package spawn provides the polymorphic Add verb — one call to parent any of {Go component pointer, PackedScene.Instance, "res://..."} into a node and optionally position it.
Package spawn provides the polymorphic Add verb — one call to parent any of {Go component pointer, PackedScene.Instance, "res://..."} into a node and optionally position it.
Package startup provides a runtime for connecting to the graphics engine.
Package startup provides a runtime for connecting to the graphics engine.
Package stat provides a reactive numeric value: hold a Stat instead of a bare int/float when you want UI to update automatically on change.
Package stat provides a reactive numeric value: hold a Stat instead of a bare int/float when you want UI to update automatically on change.
Package strict provides the AssertStrict runtime check for components that demand scene-authored children (via ggd:"strict" struct tags), catching missing-node bugs at startup instead of at use.
Package strict provides the AssertStrict runtime check for components that demand scene-authored children (via ggd:"strict" struct tags), catching missing-node bugs at startup instead of at use.
Package timing provides owner-bound delays and recurring timers, plus the OnMainThread bridge for cross-thread node work.
Package timing provides owner-bound delays and recurring timers, plus the OnMainThread bridge for cross-thread node work.
Package tree provides type-filtered scene-tree lookups: walk a parent's children, descendants, or ancestors and return only nodes that cast to a specific type.
Package tree provides type-filtered scene-tree lookups: walk a parent's children, descendants, or ancestors and return only nodes that cast to a specific type.
Package ui provides a modal screen stack, transient toasts, and a focus helper.
Package ui provides a modal screen stack, transient toasts, and a focus helper.
AABB
Package AABB provides a 3D axis-aligned bounding box.
Package AABB provides a 3D axis-aligned bounding box.
Array
Package Array provides a data structure that holds a sequence of elements.
Package Array provides a data structure that holds a sequence of elements.
Basis
Package Basis is a 3×3 matrix for representing 3D rotation and scale.
Package Basis is a 3×3 matrix for representing 3D rotation and scale.
Callable
Package Callable provides generic methods for working with callable functions.
Package Callable provides generic methods for working with callable functions.
Color
Package Color provides a color represented in RGBA format.
Package Color provides a color represented in RGBA format.
Dictionary
Package Dictionary provides a data structure that holds key-value pairs.
Package Dictionary provides a data structure that holds key-value pairs.
Enum
Package Enum provides a way to define enums.
Package Enum provides a way to define enums.
Error
Package Error provides generic or codes for use as error return values that do not allocate.
Package Error provides generic or codes for use as error return values that do not allocate.
Euler
Package Euler provides euler angle types for representing 3D rotations.
Package Euler provides euler angle types for representing 3D rotations.
Float
Package Float provides a generic math library for floating-point numbers.
Package Float provides a generic math library for floating-point numbers.
Int
Package Int provides generic methods for working with integers.
Package Int provides generic methods for working with integers.
Object
Package Object provides methods for working with Object instances.
Package Object provides methods for working with Object instances.
Packed
Package Packed contains specific Array types that are more efficient and convenient to work with.
Package Packed contains specific Array types that are more efficient and convenient to work with.
Path
Package path provides methods and a type for working with slash-separated paths with selectors.
Package path provides methods and a type for working with slash-separated paths with selectors.
Plane
Package Plane provides a plane in Hessian normal form.
Package Plane provides a plane in Hessian normal form.
Projection
Package Projection provides a 4×4 matrix for 3D projective transformations.
Package Projection provides a 4×4 matrix for 3D projective transformations.
Quaternion
Package Quaternion provides a unit quaternion used for representing 3D rotations.
Package Quaternion provides a unit quaternion used for representing 3D rotations.
RID
Rect2
Package Rect2 provides a 2D axis-aligned bounding box using floating-point coordinates.
Package Rect2 provides a 2D axis-aligned bounding box using floating-point coordinates.
Rect2i
Package Rect2i provides a 2D axis-aligned bounding box using integer coordinates.
Package Rect2i provides a 2D axis-aligned bounding box using integer coordinates.
Signal
Package Signal provides a type representing an event stream or pub/sub message queue.
Package Signal provides a type representing an event stream or pub/sub message queue.
String
Package String provides a generic string functions.
Package String provides a generic string functions.
StringName
Package StringName provides unique strings.
Package StringName provides unique strings.
Transform2D
Package Transform2D provides a 2×3 matrix representing a 2D transformation.
Package Transform2D provides a 2×3 matrix representing a 2D transformation.
Transform3D
Package Transform3D a 3×4 matrix representing a 3D transformation.
Package Transform3D a 3×4 matrix representing a 3D transformation.
Vector2
Package Vector2 provides a 2D vector using floating-point coordinates.
Package Vector2 provides a 2D vector using floating-point coordinates.
Vector2i
Package Vector2i provides a 2D vector using integer coordinates.
Package Vector2i provides a 2D vector using integer coordinates.
Vector3
Package Vector3 provides a 3D vector using floating-point coordinates.
Package Vector3 provides a 3D vector using floating-point coordinates.
Vector3i
Package Vector3 provides a 3D vector using integer coordinates.
Package Vector3 provides a 3D vector using integer coordinates.
Vector4
Package Vector4 provides a 4D vector using integer coordinates.
Package Vector4 provides a 4D vector using integer coordinates.
Vector4i
Package Vector4i provides a 4D vector using integer coordinates.
Package Vector4i provides a 4D vector using integer coordinates.
Package visual provides prototype-grade attachments: collision shape plus colored rectangle/triangle visuals for runtime-spawned bodies that don't yet have real art.
Package visual provides prototype-grade attachments: collision shape plus colored rectangle/triangle visuals for runtime-spawned bodies that don't yet have real art.
Package window exposes the main-window controls that user settings touch: fullscreen toggle, vsync mode.
Package window exposes the main-window controls that user settings touch: fullscreen toggle, vsync mode.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL