Skip to content
3D maze
C C++
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
demo
res
src
.gitignore
README
makefile

README

Oriadnos
========

Can you escape this maze before your torches run out?

Playing
-------

Run `make` and then `./oriadnos` in the main directory. SDL must be installed.
Use the arrow keys or the mouse to rotate the camera, and WASD to move the
player.

Goals
-----

Most of the main goals of the project were achieved, including full perspective
texture rendering, z-buffering, and simple lighting. The game is "playable" but
it does not test for win conditions. We did not have time to implement a
dynamically generated maze, so wall and floor positions are hard-coded.

Note that SDL is only used to display the array of pixels onto the screen in
real-time, and to get user input. All rendering, including loading the image
files (as PPMs) and UV texture mapping, is our own code.

Project Layout
--------------

src/    C source code
res/    textures
demo/   game screenshots
build/  temporary object files

Work Distribution
-----------------

Ben: z-buffering, shading, PPM loading, collisions, speedups

Victor: matrix manipulation/rendering, movement, UV texture mapping, maze data

Known Issues
------------

Walls often disappear when getting too close to them. We know what's causing
this, but we couldn't figure out the math to fix it by the deadline.

Additionally, the game is very slow, often going below 10 FPS on a fairly
decent computer. Steps were taken to reduce rendering time in various
situations, and it is much faster than before, but additional work should be
done. Since a large amount of work that is normally done in the GPU is being
done in the CPU, it is unlikely that the game will ever run as fast as we would
like it to. To mitigate some speed issues, we use delta timing to ensure a
relatively smooth movement speed.
You can’t perform that action at this time.