Controls: Click applet before pressing keys

u: Strafe Left i: Walk Forward o: Strafe Right
j: Turn Left k: Walk Backward l: Turn Right

Instructions

- Explore the Labyrinth
- Hint: walk forward

Comments / Methodology

- The goal was to create an indoor FPS-style game (or at least some pathetic subset...).
- This required rendering large planes that could go beyond the edge of the screen.
- Many additions to the assigned renderer were required to achieve reasonable performance with such planes, including:
   - Cull Polygons Outside a Range: To render fewer polygons, and thus improve performance, all polygons outside a certain range (bounded by z=0 and z=-100) were not rendered.
   - Fog: The far culling boundary had an unsightly jagged edge, so fog was added to obscure this. It also adds a visual distance cue.
   - Backface Culling: Triangles were not rendered if their normal was perpendicular to or facing away from the line of sight to the Triangle.
   - Culling of Offscreen Triangles: Triangles were not rendered if all their vetices were outside the viewable area.
   - Tiled Planes: By allowing unseen tiles of the large planes to be culled incrementally, large numbers of offscreen pixels were prevented from being rendered.

Source