Nothing carries the load on a slope but the ribs: each belt step every
rib moves one face cell and pushes the grains in its way, the layer on
the belt is only dragged by friction that gravity beats on 45 degrees,
and heaped grains roll back. Ribs never pass through grains or into
machines; a run that can't push stalls. The foot of an uphill run
scoops the feed into pockets. Ribs drawn as rubber bars in both looks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The magic grip is gone: cleats every 8 face cells, 6 grains tall, carry
pockets uphill (about 71 grains/s against 90 flat) and overflow rolls
back. Sloped filters always run downhill; grains travel by gravity and
a shake, and sorting stays exact. Drawing needs another pass.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Player text says Screw conveyor; code uses screw (BP_SCREW, piece id
screw, screwIntake...). No compatibility code for old saves or
blueprints. Suite outputs match before and after apart from names.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Silos show a wide fill window in the material's colour in both looks,
and the cursor label names the contents anywhere over the outline.
Aiming the drill beyond its reach keeps normal colours, marks where the
pulse stops, and drops the red circle and the out-of-reach toast.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Tubes run in eight directions: a drag at about 45° lays a diagonal run, R cycles all eight.
- Diagonal runs carry grains at the straight rate (120 grains/s), join straight tubes and belts,
keep grains in at the corners, pass water, and carry bars level.
- New part ids 11-14 (saved ids are never renumbered); tube checks use an IS_TUBE table.
- New test/t_diag_tubes.js (85 checks).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- New Sloped wall piece: a half-block triangle in any wall material, at half a wall's cost.
Dragging walls or slopes at about 45° lays a diagonal line; the drag picks the slope's
orientation and T flips or turns it.
- Each slope fills one cell past its corner, so a diagonal run is sealed against grains and water.
- New test/t_slopes.js: a slope funnel passes 400/400 sand (square steps 379/400).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Smooth look: natural ground gets a soft seam where loose grains meet it; packed grains keep a
pebble texture and are slightly lighter. Pixel look and thermal lens: the same idea per pixel.
- play.py: the F-on-a-mold toast check records toasts the key press makes instead of counting
the ones on screen, which failed when an older toast expired at the same moment.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
carryColumn stops at the first blocked grain on a belt, so a heap whose front
is backed up (a screw tube taking less than the belt brings, or a wall) no
longer shears. New t_conveyors checks and a belt-heap screenshot scene.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The game as of artifact version 24, ready for local development with
coding agents.
- Source split from three large files into 52 small ones under src/sim,
src/render and src/ui, joined in the order in src/manifest.json by
build.py. The joined code is unchanged apart from comments; every
headless suite gives the same output, and screenshots in both looks
are pixel-identical to before.
- Light tidying with no change in behaviour: one movement scan loop,
shared hazard-stripe and belt shader helpers, unused code removed, a
shared check helper for the test suites.
- World files can be exported as an ordinary download outside claude.ai.
- Tests: broken old scripts removed, experiments moved to tools/,
test/run_all.py added. Tools: shot.py (repeatable screenshots),
where.py, map.py.
- Docs: AGENTS.md, CLAUDE.md, NOTES.md (the owner's to-do inbox),
docs/PROJECT_MAP.md, DESIGN.md, TESTING.md, systems notes, the
owner's requests and an agent log.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K9kLmYADKSEjuwUN3rFxDA