How much of a genius-level move was binary space partitioning in Doom? (2019)

Binary space partitioning in Doom is held up as a clever use of existing computer-graphics research to make true 3D-style gameplay run on early‑1990s PCs that lacked dedicated gaming hardware. Commenters argue that BSP trees were already well known in graphics circles, and that the real breakthrough was choosing, adapting, and relentlessly optimizing the right algorithms under severe hardware and tooling constraints—something seen in contemporary engines and games like Wolfenstein, Quake, Duke Nukem 3D, Unreal, and Crash Bandicoot. The exchange broadens into a critique of modern software’s ahistorical habits, emphasizing the value of reading old papers, reusing “forgotten” techniques, and understanding trade‑offs between different spatial partitioning and visibility systems.

BSP in Doom: Genius vs. Solid Application

  • Many commenters note BSP trees were already standard in computer graphics and SIGGRAPH literature.
  • The “genius” is framed less as invention and more as choosing the right known technique and making it work on very weak early‑90s PCs.
  • Some recall BSP and related structures (octrees, sector/portal systems) being common knowledge among graphics programmers, but acknowledge implementing BSP robustly was non‑trivial and relatively rare in games.

Alternative Visibility / Partitioning Techniques

  • Other engines of the era (e.g., Jedi, Build, Unreal) used sectors and portals rather than BSP, trading preprocessing cost for runtime flexibility.
  • Discussion covers tradeoffs:
    • BSP: elegant, good visibility culling, but expensive preprocessing, numeric fragility, tree-walks with poor cache/branch behavior on modern CPUs/GPUs, and modding pain.
    • Portals/sectors: simpler, map‑structure‑aligned, batch‑friendly, but cause sudden visibility step-changes and can blow triangle budgets.
    • Grids/voxels and quad/octrees are mentioned as alternatives; memory/perf tradeoffs on 386‑class hardware are described as unclear.

Hardware Constraints and PC Gaming History

  • Debate over whether early PCs were “meant” for games or primarily for business:
    • One side says games were common and drove home PC purchases by the early 90s.
    • The other emphasizes that PCs lacked dedicated gaming hardware (sprites, scrolling, audio) that contemporaneous home computers and consoles had.
  • Doom is portrayed as a software‑driven workaround for missing graphics hardware: VGA framebuffers vs. sprite/scrolling chips.
  • Discussion traces a rough transition: early 90s “multimedia” era (sound cards, SVGA, CD‑ROM), then mid‑late 90s 3D accelerators as the real turning point.

Research, Old Papers, and Not‑Invented‑Here

  • Strong theme: reading older literature is a “superpower”; many breakthroughs in practice come from rediscovering 1960s–1980s work made practical by modern RAM/cache/CPUs.
  • Examples include old “impossible” algorithms becoming trivial on contemporary hardware and classic routing/vision/ML methods outperforming newer ideas.
  • Several complain about:
    • Paywalled ACM/IEEE papers.
    • “Write‑once‑read‑never” preprint flood, especially in ML.
    • Industry’s ahistorical tendency and NIH syndrome leading to repeated reinvention.
  • Others point out that in some domains (graphics, cryptography) deep literature use is normal and modern papers add necessary formalism.

Paper Readability and Jargon

  • Mixed views on whether research should use “plain English” vs. dense formalism and domain jargon.
  • Older CS papers are remembered as shorter and more readable but often underspecified; newer ones are longer, more precise, and proof‑heavy but harder for non‑experts.

Tools, Books, and Learning Culture

  • Commenters reminisce about foundational graphics texts (e.g., major graphics textbooks, gem collections), early compilers, and learning from books and magazines before ubiquitous open source and Stack Overflow.
  • One thread laments that modern agile/SaaS environments and dopamine‑driven open source make it harder to justify days spent just reading.

Other Game‑Engine Anecdotes

  • Crash Bandicoot is highlighted as an example of “inelegant but better” engineering:
    • Precomputed per‑position visibility instead of runtime VSD.
    • Per‑vertex animation with custom compression.
    • Heavy CD streaming pushing hardware beyond its nominal seek lifetime.
  • There are notes on vertex animation and streaming in other 90s engines, and on early VR projects also using BSP trees.