Same interdependency graph as the 3D version — power feeds water pumps, water cools hospital equipment, telecom carries SCADA control traffic — but this 2D engine reformulates the spread as a continuous-time hazard-rate cascade (a Markov jump process, the same mathematical family as the Gillespie algorithm used to simulate chemical reaction networks) instead of discrete fixed-interval Bernoulli trials. Every still-healthy node j downstream of a compromised node i is exposed to an instantaneous infection rate λ, not a one-shot coin flip:
λ_ij = λ₀ · I · w_ij · (1 − S) · (1 − 0.6·R_j) [events / sim-hour]
P(infects within Δt) = 1 − e^(−λ_ij · Δt) [exact Poisson-thinning]
λ₀ base hazard rate
I attack intensity slider (0–1)
w_ij dependency weight of edge i→j
S network segmentation (0–1) — dampens every edge's rate
R_j redundancy at node j — resists infection, also raises
the containment rate μ_j = μ₀ + μ₁·R_j once compromised
Because arrival times under a constant hazard are exponentially distributed and memoryless, the exact per-frame infection probability above is used every animation frame regardless of frame rate — a numerically verified Monte-Carlo check confirms the discretized frequency matches the closed-form formula to within noise, and the simulated mean time-to-infection matches the analytic 1/λ. This is mathematically distinct from the original per-step coin-flip cascade: rates compose continuously rather than resetting at fixed intervals, so containment (μ_j) and infection (λ_ij) race each other in real time exactly as in a real incident-response timeline.
- Attack intensity — scales every outgoing hazard rate from a compromised sector.
- Segmentation — defender's network isolation; multiplies down every edge's rate uniformly.
- Redundancy — resists infection at the target node and shortens its expected containment time once compromised.
- Launch Attack — starts the cascade from the Power Grid node; particles travel the dependency graph on each real infection event.