e y 6 e s : home interface panel : fugue

Fugue is an aborted project--a first person shooter modeled loosely after Faceball 2000.

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 algorithm.
Questions? Comments?