Phase 3 of the variable floor heights epic #375. Tracking issue - this was the largest phase, now decomposed into shippable sub-issues per its own "split when picked up" note. Each is behavior-neutral on existing (flat-ceiling) levels and merges independently.
Motivation
Phase 1 raises floors but keeps the ceiling fixed at z=1. Real DOOM rooms also vary ceiling height: lowered ceilings, doorframe lintels, and window gaps you can see (and shoot) through but not walk through. A cell with raised fz and lowered cz becomes a window gap.
Sub-issues (order)
Order: 385 -> 386 -> 387 -> 388. Data/cast/render/physics-combat land separately.
Global acceptance
Dependencies
#370 (span painter). Independent of #372/#373.
Phase 3 of the variable floor heights epic #375. Tracking issue - this was the largest phase, now decomposed into shippable sub-issues per its own "split when picked up" note. Each is behavior-neutral on existing (flat-ceiling) levels and merges independently.
Motivation
Phase 1 raises floors but keeps the ceiling fixed at z=1. Real DOOM rooms also vary ceiling height: lowered ceilings, doorframe lintels, and window gaps you can see (and shoot) through but not walk through. A cell with raised
fzand loweredczbecomes a window gap.Sub-issues (order)
cz+:pczhot array (mirror of feat(map): per-cell floor-height data (fz) + :pfz hot array #368)Order: 385 -> 386 -> 387 -> 388. Data/cast/render/physics-combat land separately.
Global acceptance
/perf-benchgate as in feat(render): multi-span column painter — risers, tier tops, row clip #370.docs/raycaster.md,docs/rendering.md,docs/map.md.Dependencies
#370 (span painter). Independent of #372/#373.