120 likes | 227 Vues
Dive into an exhilarating arcade racing game set on a mysterious alien planet, where captured beings face off in high-speed battles for their freedom. Experience futuristic vehicles, each intricately designed with detailed 3D models, racing through diverse terrains and stunning sci-fi scenery. Players will navigate with responsive controls, featuring physics-based jumps and AI opponents who provide a challenging experience. Customize soundtracks, replay races to improve your skills, and engage in a rich storyline that keeps the adrenaline pumping until the last lap.
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