This is actually Vogel’s second try. Last year he released DoomQL, which used raycasting, a simpler trick that fires imaginary lines out from the player to find walls. It drew the world with gray text characters and looked more like Wolfenstein 3D than Doom.
What it skipped was the BSP tree, short for binary space partitioning. It’s the clever map structure the original Doom engine uses to work out quickly which walls are in front of which. Doing it properly was the reason for a second version.
Walls turned out to be the easy bit. When a map loads, SQLDoom works out a sort key for each wall section, so a single ordering instruction tells the database what to draw first.
Floors and ceilings were much tougher. The original game paints them using visplanes, patches of flat surface tracked as the screen is drawn, along with lots of changes in state. Neither idea fits a system that renders one column of pixels at a time. Vogel’s fix, which he cheerfully calls “pretty hacky,” loops through a list of sorted panels to fill in those surfaces.