Skip to content
Dan Riddell edited this page Aug 7, 2026 · 3 revisions

crucible

crucible — the vessel the family is forged in.

The shared engine behind the family's Ebitengine apps and games. One package per engine concern, flat at the module root, generic over each app's own types.

The API reference lives on pkg.go.dev — this wiki carries what godoc cannot.

Documentation

Page Description
Provenance Where each package came from, and what deliberately stayed app-side

Packages

App-specific vocabularies — messages, events, cues, tiles, textures — stay in each app; packages that carry them are generic.

Package What it is
geom Vectors, grid coords, rects, clamps
hud Timed status-line overlay
canvas Software RGBA text/menu surface
menu Title/pause/settings menu model + input polling
keymap Display-free control-hint bar layout
window Shared Ebiten window setup and resizing policy
store JSON settings/records under the user config dir
status Cue → timed HUD line pipeline
narrate narrata-backed rewording of status lines
telemetry Generic observer bus with bounded recent feed
synth Procedural PCM sound effects, panning, cue shapes
record Frame capture to GIF, MP4 and PNG
demo Headless documentation-media toolkit — clips, montages, palette ramps
hub Multi-window leader/child coordination
worldgen BSP dungeon generation, corridors, flood-fill, weighted choice
level Shared world model + generation pipeline
raycast Raycasting camera, DDA, billboards, height-aware column walker
view Display-free 2D pan/zoom camera
camera Ebiten draw transform layered over a 2D view
rng Deterministic seeded sub-streams (PCG)
ring Fixed-capacity rolling-history buffer
paint Colour brightness scaling and full-frame framebuffer blend

Only menu, camera and window import Ebiten; everything else is plain Go and runs headless. That is what lets each app generate its whole docs/demos set with no display — see demo and record.

Install

go get github.com/danielriddell21/crucible

Links

Clone this wiki locally