Floodline is a California flood-defense simulation built on real water-system physics — levees, weirs, pump stations, and reservoir releases. Six historical scenarios span the 1986 Yuba flood to the 2017 Oroville spillway crisis. $2 indie release on itch.io and Steam.
Each scenario starts with an inflow forecast and current system state. Choose levee inspections, pump activation, gate operations, and (in some scenarios) controlled-flooding releases. Score points for protected area, lose for inundation. Real CA water hydrology.
Yes — the six scenarios reproduce real events: 1986 Yuba, 1997 New Year's, 2006 Sacramento, 2017 Oroville spillway, plus two synthetic ARkStorm scenarios from the USGS multi-hazard project.
Water is routed with the local-inertial shallow-water scheme used by LISFLOOD-FP (Bates et al. 2010) on a 40 m grid with Manning roughness per land cover, so flood waves, backwater and levee overtopping behave like the real thing. Pump and gate response curves are simplified. Scenarios are calibrated against published post-event reports from USGS, DWR and USACE.
2017 Oroville. Three independent failure modes (auxiliary spillway erosion, main spillway erosion, downstream evacuation logistics) all in 72 hours of game time.
itch.io and Steam — search "Floodline". Single $2 purchase; free in-browser demo at boardgaminghub.com/Floodline.html.
Floodline routes water with the local-inertial shallow-water scheme of Bates, Horritt & Fewtrell (2010) — the solver inside LISFLOOD-FP and most modern 2D flood-inundation models — on a 40 m grid, in SI units, with Manning's roughness per land cover. It is not a full Saint-Venant / HEC-RAS 2D solver (the convective acceleration term is dropped, so it does not resolve supercritical shocks), but momentum, depth-dependent conveyance, backwater and wave propagation are all real. Everything below is exactly what the code does.
Each cell holds a water depth h above its bed z (terrain plus any structure). Between every pair of neighbouring cells the solver carries a unit discharge q (m²/s) that persists from step to step — this is the momentum. Each sub-step it is updated with
q⁺ = [ θ·q + ½(1−θ)(q₋ + q₊) − g·hf·Δt·∂η/∂x ] / [ 1 + g·Δt·n²·|q| / hf7/3 ]
Depths update from the face discharges: Δh = Δt/Δx · (Σ qin − Σ qout). Before that, a donor limiter scales every outgoing face of any cell whose scheduled export exceeds what it holds, so depths never go negative and total volume is conserved to floating-point precision — water enters only as rain, inflow or surge and leaves only through infiltration, pumps and the outlet. The time step obeys the CFL condition Δt ≤ 0.7·Δx / √(g·hmax) by sub-stepping whenever the deepest water demands it.
Levees do not fail on a simple height check — they accumulate stress while overtopped. When any neighbour's water surface exceeds the levee crest, stress builds as stress += dt · rate · (1 + 3·overtopping depth), where rate = 1.0 (0.5 if reinforced), so deeper overtopping fails a levee faster. A breach fires when stress crosses 5 (10 if reinforced); the crest drops 0.5 m and the solver's momentum equation produces the resulting breach wave. When not overtopped, stress relaxes at −0.5·dt. Sandbags erode under real flow velocity (> 1 m/s), not static head. Damage follows HAZUS-style depth–damage curves.
Scenarios are calibrated against published USGS, DWR and USACE post-event reports, but the model stays first-order: treat it as an intuition-builder for routing, storage and levee risk, not as a certified flood forecast.
Built by a practicing water-resources engineer. For the professional versions of this math, see the free open-channel & hydrology calculators at pe-calc.com, or HydroComplete for stormwater design software.
Sign in with GitHub to share strategies, ask questions, or report a bug.