01a350aebd4f0e9c9d1d514a4e2ea498cb7f9853
Root cause: when update_fire ignited a neighbor via grid.set(), the new Fire cell had updated_this_tick=false. If the dirty rect iteration hadn't reached that cell yet, it was processed in the same tick, igniting ITS neighbors, creating exponential spread within a single tick. Fix: set updated_this_tick=true on all newly created Fire cells so they wait until the next tick before spreading. Applied to: - update_fire: igniting flammable neighbors - lava_interact: lava igniting wood/grass/flesh - update_flesh: flesh turning to fire from heat - update_grass: grass turning to fire from heat - update_water: water turning to steam from heat - projectile.rs: fireball impact igniting cells Result: fire spreads 1 cell per tick (linear, not exponential). 171 FPS avg, p99 14ms — no lag when spamming fireballs.
Description
ASCII physical game
1.9 MiB
Languages
Rust
98.6%
GLSL
1%
Python
0.4%