CS314 Project 3 Kevin Grant Marble Mayhem ----------------------------------------- Game Objective ----------------------------------------- Roll your marble from the start of the level to the end as fast as possible. Avoid obstacles and falling off the edge of the world, as this will slow you down. There is only one level, when you finish it hit any key to play again and try to beat your time. ----------------------------------------- Controls ----------------------------------------- Mouse movement w/ right button down - rolls your marble Mouse movement w/ left button down - controls camera tilt and rotation Mouse movement w/ both buttons down - controls camera zoom Esc - Quit game 'e' - Returns to title screen at any time 'r' - During gameplay, restarts the level 'f' - Toggle frames per second display on/off ----------------------------------------- Compiling and Running ----------------------------------------- make p3 ----------------------------------------- Standard Features ----------------------------------------- - 3D viewing and objects, with a camera that follows your marble - Multiple lights, smooth shading. All objects have normals calculated - User Input w/ mouse and keyboard - Texture mapping for all objects in the world - Picking in a 3D scene, to select which marble you want to use ----------------------------------------- Advanced Features ----------------------------------------- - Camera viewpoint smoothly follows your marble, and also lets the user control the camera's rotation, tilt, and zoom using spherical coordinates - Collision Detection and response between your marble and all the objects in the world - Simulated physics. The marble reacts realistically to collisions, and is always experiencing the force of gravity pulling it down. The texture on the marble 'rolls' correctly as the ball rolls - Particle Systems for some nice fire. Billboarding used to make the polygons face the camera - On screen display of your time to finish the level - Planar Reflections and soft shadows in the marble selection screen - Multi pass sphere mapping on the marble to add a highlight - Texture mapped skybox - AI for the bad marbles that try to knock you off the edge - Frustum culling, only draws objects in the camera's view ----------------------------------------- References ----------------------------------------- Game Idea - Marble Madness, http://www.kinetic-arts.co.uk/jamma/system1/marblemadness/marblemadness.htm Textures - http://lemog.club.fr/index.html# - http://www.planethalflife.com/wadfather/ Collision Detection - http://www.flipcode.com/articles/article_basiccollisions.shtml - http://www.gamasutra.com/features/19991018/Gomez_4.htm - http://www.acm.org/tog/GraphicsGems/gems/BoxSphere.c Frustum Culling, how to extract frustum from the OpenGL matrices - http://www.racer.nl/reference/vfc.htm - http://www.flipcode.com/articles/article_frustumculling.shtml Billboarding for particle systems - OpenGL Game Programming, by Astle and Hawkins Creating shadow matrix for planar shadows - OpenGL Game Programming, by Astle and Hawkins Color coded picking - http://www.lighthouse3d.com/opengl/picking/index.php3?color1 Various other minor stuff - http://nehe.gamedev.net/ - http://fly.cc.fer.hr/~unreal/theredbook/