120 likes | 211 Views
Final Presentation:. Team Barbeque Sauce CS536, Fall 2006. Game Overview. Premise: automobile racing game which takes place on an alien planet People from all across space have been captured by an alien race These “slaves” are made to compete against each other for their freedom.
E N D
Final Presentation: Team Barbeque Sauce CS536, Fall 2006
Game Overview • Premise: automobile racing game which takes place on an alien planet • People from all across space have been captured by an alien race • These “slaves” are made to compete against each other for their freedom. • Look and feel: futuristic – sci-fi • Scenery and automobiles resemble advanced technological crafts • Each vehicle used is a 3D model which includes details such as the engines, wings, texturing, cockpit, etc. • The track and scenery resembles futuristic/fantasy scenery, with racing courses that feature various terrain on the alien planet. • Game play: Arcade racing style • Light degree of real world physics to accommodate the racing environment • Controls are left, right, jump, throttle, breaking, and reverse controls. • Collision detection – player/opponent and player/edge of the track.
Project Specifications • Importing 3D Models • Space ships in Escape Velocity and most other objects are imported from 3D models found on the Internet. • 3D Viewing and Transformations • Viewing transformations are provided for the user. • Based on the current location, direction, roll, and yaw of the space craft, transformations are implemented to make the game realistic to a physics-dependent world. • User Interactions • Keyboard and joystick controls are supported • Actions: accelerate, decelerate/brake, steering, jump • Additional controls for music, pause, and replay. • Lighting and Texture Mapping • All objects in the game are textured. • Lighting from the “sun” is optionally provided by pressing “1” on the keyboard
Project Specifications • Scene Management • Octree used as spatial data structure and implemented from scratch • Stores SceneObject references • Octree has methods to create, draw and destroy the octree, and a method to insert SceneObject references • Shaders • Used to implement the graying of the screen when the game is paused • Written from scratch is GLSL • Sounds • Music – User can add a custom sound track and control play back during game play • Sound Effects – Other sounds include the engine noises of the vehicles • Opponent’s vehicle becomes louder and softer as his vehicle distance changes • The sound of the engine becomes higher pitched as the speed of the vehicle increases • Collision Detection and Response • Play/Track edge – User’s angle of approach is changed to the angle of the track’s edge and the user’s speed is reduced. • Player/Opponent – The user’s speed is also reduced
Advanced Features • Physics Simulation • When the user “jumps”, the space craft follows a physics-defined trajectory (i.e. a parabola). • If the user collides with the edge of the track, the behavior of the craft is also a physics-defined trajectory. • Artificial Intelligence • The opponent’s vehicle is driven through the course with artificial intelligence created for this game. • On-screen Control Panel • A Heads Up Display (HUD) that displays the user’s current speed, time spend on this race so far, time left in the race, and position in the race is provided. • Replay Capability • The user can replay a game that was just played by pressing “r” on the keyboard. • This is handy for the user to learn from his mistakes and to learn the track so he can more effectively navigate it the next time he plays.
Individual Contributions:Boris Rabkin • Sound and Music • The SDL_mixer library is used to play sound files. • Music contains mp3 files • Addition to the sound files simulate engine noise and collision noise • Background music was also added to the menu and introduction screens. • 3D Objects • 3dsloader class is used to load the 3ds files • texture class renders the object with an appropriate skin • We re-use the same object for the user’s and opponent’s vehicles • There are different skins (textures) applied to vehicles to differentiate them. • Artificial Intelligence • Opponents follow a path based on general coordinates store in a text file • Custom functions manipulate the coordinates and induce driving ‘mistakes’ • Example: Taking turns too fast or too slow. • Game Replay • The user can replay a race that was just played by pressing “r” on the keyboard.
Individual Contributions:Jesse Taylor • Main Menu Interface • SDL_image library used to integrate the graphics, game logo, menu choices, and accompanying effects into the menu. • Screen shots have timed the fade in and out • Story Mode – takes the player to each track and then returns the player to the menu system to continue that story. • Each character has a different colored vehicle, unique attributes, and a background story • At the end of the game, a credits screen is shown as part of the menu system. • Logo/Artwork • Designed all story, menu, and in-game graphics • All graphics were designed from scratch using Adobe Photoshop/Illustrator. • Heads Up Display • Speedometer – informs the player of their vehicle’s speed throughout the race • Position flag – notifies the player of their current position in the race (i.e. 1st or 2nd) • Timer – provides the overall time of the race. • Checkpoint Reports • Jesse wrote the two checkpoint reports with contributions from the other group members.
Individual Contributions:Jeremy Stairs • Track Design and Sky Box Images • Implemented a system to draw the track based on a text file • MS Excel spreadsheet used to aid calculations and visualization of the tracks • Track vertex data read into two arrays – inner edge and outer edge • Four tracks created for the game – one for each level/story. • Four skyboxes – a futuristic city, a snow field, an amber colored canyon, and an underwater setting. • Steep learning curve for track design • Scene Population • All scenery consists of textured 3DS models found on the Internet. • Indirectly used to populate the Octree • Added a parser to the to read a scenery text file • Indicates which model to draw, where to draw and the size and position • Collision Detection • Keeping the player’s vehicle on the track • Used “Is a Point in a Polygon?” algorithm • Re-uses track inner and outer track edge arrays • Shader • Wrote Shader class that interfaces with GLSL • Implemented a shader from scratch that converts the color scene of the game to grayscale • Issues with shader • PowerPoint Presentations • Jeremy S. created all the PowerPoint presentations that were presented in class from information in the associated reports.
Individual Contributions:Jeremy Hood • Created Framework • Created a compartmentalized framework in which other group members could work • As part of this effort, classes were created, maintained, and overseen for: • Rac, RaceContainer, Scene, Skybox, Control, Common Utilities, TextureManager, OpenGLManager, SDLManager • Player Controls • Player controls include keyboard and joystick • Player can control yaw and speed • Roll is automatically applied - When the user turns a corner, the craft will tip to the left or right, depending on the direction of the turn, as an airplane would. • Player controls can be tuned using several attributes • maximum speed, acceleration, deceleration, turn sharpness, initial jump speed, and mid-air jumps allowed. • Jumps - follows a parabola, as per the physics model of such an event • If the user is on the way down from a jump, they can initiate another jump to reverse their direction (i.e. jump while jumping). This allows the user to sustain a higher elevation above the track. • Pause controls were added to the game by pressing “p” on the keyboard. This will stop the game and activate the shader to gray the screen
Individual Contributions:Jeremy Hood • Collision Detection • Used the isOnTrack() function provided by Jeremy S. to implement collision detection with the track’s edges. • Implemented the collision detection between the opponent’s and the user’s vehicles. • Octree • Implemented the version of the Octree used in the final version of the game from scratch. • Supported Other Group Members • Helped other group members understand and use the framework he created. • Helped Jesse get started with the HUD • Helped Boris understand and use the Control class he developed in the AI that drives the opponent’s vehicle. • Created and Managed Group Website • Provided the website for the group project and managed it and all the documents contained on it. • Wrote Final Project Report • Wrote this document with contributions from the other group members.
References • SDL Mixer Library: • http://www.libsdl.org/projects/SDL_mixer • Some 3DS and MAX low-polygon models: • http://low-poly.turbosquid.com • ‘Point-in-a-polygon’ algorithm: • http://www.geometryalgorithms.com/Archive/algorithm_0103/algorithm_0103.htm • GLSL Tutorial: • http://www.lighthouse3d.com/opengl/glsl • Sample Octree (from MOGP author): • http://glbook.gamedev.net/moglgp/code.asp • Note: Sky Box Collection created by Grant Clark, 2005. No web reference could be found.
Program Classes • HeadsUpDisplay • Car • Shader • TextureManager • Sound • Utility • Location • Other Design • CommonUtilities • texture.cpp • Startup • RaceContainer • Race • Scene • Octree • SceneObject • House • Skybox • Control