-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Dan Riddell edited this page Aug 11, 2026
·
3 revisions
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.
| Page | Description |
|---|---|
| Provenance | Where each package came from, and what deliberately stayed app-side |
App-specific vocabularies — messages, events, cues, tiles, textures — stay in each app; packages that carry them are generic.
| Package | What it is |
|---|---|
geom |
2D/3D vectors, grid coords, rects, clamps, angle folding, easing |
hud |
Timed status-line overlay |
canvas |
Software RGBA text/menu surface |
menu |
Title/pause/settings menu model, display-free |
menu/ebiteninput |
The conventional menu bindings, read from Ebiten |
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 dungeons, corridors, flood-fill, weighted choice, and seeded grid lattices |
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 |
spatial |
Uniform grid for radius queries, open-plane or toroidal |
netplay |
Two-player host/join sessions over gob, with a lobby-facing session |
pinhole |
Perspective camera: world→image projection and ground ranging |
Only menu/ebiteninput, camera and window import Ebiten; everything else is plain Go and runs headless. menu itself is display-free, which is how a raylib front-end shares the family's menus. That is what lets each app generate its whole docs/demos set with no display — see demo and record.
go get github.com/danielriddell21/crucible