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.
17 lines
361 B
JSON
17 lines
361 B
JSON
{
|
|
"mode": "graphics",
|
|
"ticks": 600,
|
|
"total_time_ms": 3437.1,
|
|
"avg_fps": 174.6,
|
|
"avg_frame_time_ms": 5.70,
|
|
"p99_frame_time_ms": 13.96,
|
|
"min_frame_time_ms": 4.45,
|
|
"subsystems": {
|
|
"ca_step_avg_us": 1259,
|
|
"ca_step_p99_us": 8885,
|
|
"ca_step_min_us": 670,
|
|
"render_avg_us": 3737,
|
|
"render_p99_us": 5483,
|
|
"render_min_us": 3221
|
|
}
|
|
} |