CPSC 314 Assignment 3 Kyle Porter - z0m3 - 52467024 Pedram Tiv - v6c4 - 85105047 We have used the template for assignment one in our code, no other demo code from the course was used. --------------------------------------------------------------------------------------- Object: The object of the game is to steer the dog around the level and collect all 13 bones before the time counts to 0. --------------------------------------------------------------------------------------- Controls: Unfortunately glut registers only one key being pressed at any one time. There are ways to get around this but this issue wasn't realized until coding for the project had progressed and fixing this would have required more time than was available. Movement: e - forward d - backward s - turn left f - turn right r - toggle run on/off Miscellaneous: w - display help h - toggle shadows q - reset game (after win/loss) ESC - quit Camera Numpad: y - toggle blimp view 1 - move left 3 - move right 5 - move into screen 2 - move out of screen 4 - move up 6 - move down 7 - rotate left 9 - rotate right / - rotate up 8 - rotate down - - zoom out + - zoom in Camera Mouse: Left button and drag - move camera Right button and drag - rotate camera Both buttons and drag - zoom --------------------------------------------------------------------------------------- Basic Features: Camera rotation, translation & zoom: This feature works in relation to the direction the viewer is currently facing and can be controlled with either the keyboard or mouse. Camera movement is disabled before the game starts to prevent the user from scouting the level in advance to find the bones. However, zoom and rotation still work. Translation and rotation are also disabled in blimp view. Multiple Lights: There is a light that is centered over the dog and moves as the dog does. In addition, there are a few other lights sprinkled around the level, although only the light above the dog has a specular component. Complex Environment: The environment consists of multiple handmade objects as well as a few imported .obj objects. They all react to the light properly, and the environment was as expansive as time permitted for the project with other coursework. It should be noted that we had difficulty finding .obj files with normals in them so that lighting would work correctly. We found a few but two were around 30mb, so that left us with two practically useable .obj's. We created many of the objects in our environment in lieu of this. Texture Mapping: The ground, stone around the pool, houses, moon and background are all textured from bitmaps loaded into memory. They handle perspective correctly as they use the opengl commands for texture mapping. Mouse Interaction: The mouse is used to control the camera as per the controls outline above. --------------------------------------------------------------------------------------- Advanced Feature: Z-buffer Shadowing: A note about this feature, it is extremely slow when enabled, and as such is toggled off by default. Also, it is only enabled for one light near the dogs initial start position. The shadows are dynamic and cast on other objects. --------------------------------------------------------------------------------------- Other Features: Fogging: When the user pulls the view far enough away, objects will fade out to black (black fog) instead of simply disappearing in a line as happened before fogging. 2D Text: Time and bones remaining, as well as the help menu, game over and congratulations text are displayed through 2D fonts by using and orthographic projection and displaying each character on screen individually. Collision Detection: Collision detection will stop the dog from clipping an object, however it will stop the dog if it detects a collision. It works by bounding boxes around objects, and unfortunately due to time constraints the dog will stop instead of sliding around the box when a collision will happen. As such, it seems the dog gets stuck. If this happens, back up and turn away from the object before attempting to move again.