Skip to content

feat: add heat, steam, and temperature-based fire - #6

Merged
chowjiaming merged 10 commits into
mainfrom
feat/heat-steam
Aug 13, 2026
Merged

chowjiaming merged 10 commits into
mainfrom
feat/heat-steam

Conversation

@chowjiaming

@chowjiaming chowjiaming commented Aug 13, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Add a parallel heat: Vec<u8> plane (same SoA pattern as fire TTL) and Cell::Steam.
  • Fire heats cardinal neighbors; wood ignites at heat 80; water boils at 100; steam rises, cools, and condenses below 40.
  • Fire touching water extinguishes and boils that water. Occupied cells tint warmer by heat; Steam is on the palette as material 6.

Test plan

  • just verify (fmt, clippy -D warnings, tests, wasm-pack --target web)
  • Paint fire against wood: wood heats, then ignites (no coin-flip)
  • Paint fire against water: fire dies, steam appears and rises
  • Paint steam: it rises and eventually becomes water
  • Hot wood looks warmer than cold wood; fire still uses the TTL color ramp

Keep design notes and agent config off main, same as DESIGN.md and TASKS.md.
SoA heat follows ttl: paint/swap/ignite/extinguish stay in sync so
later conduction can land on a 1-byte Cell grid.
Keep specified constants and World::heat without failing clippy
-D warnings on this plumbing commit.
Replace the p=0.1 adjacency roll with a threshold on the heat plane
so fire is a temperature source, not a coin flip.
Fire cannot remain a 200 source on a puddle; contact dumps heat into
water so steam has a source besides painted gas.
Give the heat plane a gas that is not fire: inverted gravity plus
hysteresis below boil so cells do not flicker water/steam.
Heat writes must wake neighbors so ignition still works when only
one fire/wood pair is active on a large grid.
Make the new temperature plane visible without a debug overlay or
a second renderer pass.
Expose Cell::Steam as material 6 in the UI so boiling is paintable
and the README matches fire/wood’s heat rules.
Keep cargo fmt --check green in just verify / CI.
@cursor

cursor Bot commented Aug 13, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@chowjiaming
chowjiaming merged commit ddd756e into main Aug 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant