e y 6 e s : home interface panel : fugue
Fugue is an aborted project--a first person shooter modeled loosely after
This applet will take some time to load, especially if you are viewing it through a
slow Internet connection. Please be patient. Once it has loaded, click the applet
window to give Fugue keyboard focus. Then, use the arrow keys (or 'I,' 'J,' 'K,'
and 'L') to maneuver through the maze and press the space bar (or the control key) to
fire. Tap the 'F' key to toggle the frames-per-second display.
Technically, Fugue owes much--unsurprisingly--to Id Software's Doom. Like Doom, Fugue
uses a 2D binary space partition (BSP) tree to perform an efficient (the amount of
time used is a linear function of the number of wall segments) front-to-back depth
sort for each frame rendered. I united this functionality with a span tree data type
that rapidly clips each wall segment against the segments already rendered, and halts
the rendering task when the segments cover the full width of the window. The
equivalent of a 1D Z buffer is filled during this process, and Fugue uses its contents
to perform depth checking when it draws the projectiles, which are simply sprites,
and the enemies, which are rendered as texture-mapped cylinders using a ray casting