Installation
golem-engine has two parts to install: the golem-bake CLI that generates code from your schemas, and the runtime packages your project imports. Server projects need the CLI plus the Go runtime; client projects add the runtime for whichever language or engine they target.
Prerequisites
Section titled “Prerequisites”- Go 1.25.4 or newer for the CLI and any Go server or client.
- Node.js (current LTS) and npm if you are building a browser client with the JavaScript runtime.
- A working
gotoolchain on yourPATH.go installbinaries land in$(go env GOBIN)(or$(go env GOPATH)/bin), so make sure that directory is on yourPATHtoo.
Source and releases
Section titled “Source and releases”golem-engine is open source. The code, issue tracker, and tagged releases live on GitHub:
- Repository: github.com/demiurgos-hub/golem-engine
- Releases: github.com/demiurgos-hub/golem-engine/releases
Install the golem-bake binary with Go’s toolchain. Run this once and it lands on your PATH:
go install github.com/demiurgos-hub/golem-engine/cmd/golem-bake@latestVerify it’s available:
golem-bake# usage: golem-bakeThe only command is golem-bake. Run it from your project root whenever schemas change.
Go runtime (server)
Section titled “Go runtime (server)”Add the runtime as a module dependency in your game server:
go get github.com/demiurgos-hub/golem-engineYour server imports the golem package:
import "github.com/demiurgos-hub/golem-engine/golem"Generated go-server code imports the same package internally; the golem_import key in golem.yaml tells generated files where to find it (defaults to github.com/demiurgos-hub/golem-engine/golem, so no change is needed unless you re-export it).
JavaScript client (optional)
Section titled “JavaScript client (optional)”If you’re building a browser client, add the JS runtime package:
npm install golem-engineGenerated js-client code imports from this package. The golem_import key under js-client in golem.yaml controls the specifier (defaults to golem-engine).
Native Go clients (optional)
Section titled “Native Go clients (optional)”If you’re building a Go client or an Ebiten game, add the Go client runtime:
go get github.com/demiurgos-hub/golem-engine/golem-go-clientGenerated go-client code imports from this package by default. Ebiten games also use the Ebiten helper package and Ebiten itself:
go get github.com/demiurgos-hub/golem-engine/golem-ebitengo get github.com/hajimehoshi/ebiten/v2Physics and navigation backends (optional)
Section titled “Physics and navigation backends (optional)”Physics and navigation are pluggable, and their backends ship as separate modules you add only when you need them. For example, the grid pathfinders are pulled in on demand:
go get github.com/demiurgos-hub/golem-engine/golem/nav/pathing# orgo get github.com/demiurgos-hub/golem-engine/golem/nav/kelindarYou wire these into the server through SetNavBackend and the physics world API. See Navigation backends and the Physics overview for which module to pick and how to connect it.
Next steps
Section titled “Next steps”With the CLI and runtime in place:
- Create
golem.yamland at least one entity schema, then rungolem-bake. Typical workflow walks through that loop and a sample project layout; thegolem.yamlreference lists every key. - Wire
golem.Serverthrough the generated integration and callRun. See Minimal server wiring.