No description
Parley's review: dither full of green spots, baked rooms don't match the nav graph (doors painted on closed walls, real openings off-center). Both root-caused: - pixelate.py: the nearest-color LUT was spaced in LINEAR RGB, cramming the whole shadow range into ~4 cells — dark picks were effectively arbitrary (green/teal confetti in warm near-blacks). LUT is now sRGB-spaced, diffusion error is gamut-clamped (no more blue blobs at torch highlights), and a new --overshoot penalty forbids choosing a color more saturated than the source. Green-dominant dark pixels on the test frame: 5.2% -> 0.02%, while palette usage went UP (107 -> 135 colors). Recipe rev 2: append --overshoot 6. - fpv.js: new directedVantage(env, region, dir) — per-(room,facing) camera instead of one room-wide vantage. Open ahead: stand in a cell whose straight-ahead ray escapes through the actual gap (the passage you walk is centered, 2-7 cells deep). Closed ahead: stand ~2 cells from the wall, deliberately OFF the room's axis — a symmetric stage begs the model to paint a centered focal door; an off-axis dead-end corner doesn't. Walls also render under their own fixed seed and an emphatic sealed-masonry prompt clause (cfg 1.0 negatives are inert). Validated on seed 7 room 1: the closed-N phantom door is gone; the open-S passage is dead-center. Full campaign re-bake follows as its own commit. Also: rest-overlay no longer sticks without a keyup, in-combat drink message, feathered sprite mask, no monster packs on floor 1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .dev | ||
| combat | ||
| game-wasm | ||
| game-web | ||
| reikhelm-core | ||
| reikhelm-viz | ||
| reikhelm-wasm | ||
| reikhelm-web | ||
| tools | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
reikhelm
A sandbox for game-system experiments. No single end goal — each idea is its own self-contained system, built to learn and to see something cool run. The best ones might get blended into an actual game someday; until then it's just shipping for fun.
How this repo works
- One experiment per top-level folder. Each is meant to stand on its own.
- Mix and match freely. When two systems are worth mashing up, write glue code between them. It doesn't have to be pretty.
- Rust or Python, whatever fits the idea. Rust experiments can be standalone Cargo projects or join the workspace below for easy path-dependency glue.
What's here so far
Procedural dungeon generator (Rust)
A deterministic 2D map generator built from small composable passes over a shared context (BSP → rooms → caves → connect → corridors → doors → pools → pillars → entities). Towns/dungeons are different recipes drawn from one primitive vocabulary (Partitioner / Shaper / Connector / Placer / Decorator).
reikhelm-core/— pure generation library, no rendering deps (theMapstruct is the contract; renderers own all art).reikhelm-wasm/—wasm-bindgenbridge that compiles core to wasm32.reikhelm-viz/— original macroquad renderer (frozen — kept, not maintained).
Browser playground & first-person explorer (JS + Canvas)
reikhelm-web/— live procgen playground (reroll / seed / config sliders / per-pass scrubber) in an atmospheric torch-lit style, plus a top-down and a first-person (Eye-of-the-Beholder style) renderer and a walkable explorer.
AI-render → pixel-art pipeline (Python)
tools/— depth map → local diffusion render (Z-Image on the LAN workstation) → Floyd–Steinberg dither through a 256-color palette → signature pixel art. Seetools/README.md.
Combined-pool combat system (Rust + Python)
combat/— a deterministic, headless combat engine built on one combinedVigorpool (HP + mana + stamina merged), so offense literally spends your survival. Sim-first: a pure Rust core (combat-core) + a batch sweep harness (combat-sim) that runs tens of thousands of fights and exports metrics, plus a Python analysis layer that measures "feel" (difficulty curve, fight duration) instead of eyeballing it. Its own Cargo workspace. Seecombat/README.md.
Building
# Rust workspace (host-native crates)
cargo build # builds reikhelm-core + reikhelm-viz
cargo test
# Browser playground (wasm)
wasm-pack build reikhelm-wasm --dev --target web \
--out-dir ../reikhelm-web/pkg --out-name reikhelm_wasm
python3 -m http.server 8011 --directory reikhelm-web
~/.cargo/bin may not be on the non-interactive shell PATH — prepend
export PATH="$HOME/.cargo/bin:$PATH" to cargo commands if they're not found.