3D Space Invaders Creators: Michelle Cheng and Victor Cheng Platform: SGI To run our game executable: For 1-player mode, type 'game' or './game'. For 2-player mode, type 'game 2' or './game 2'. To play our game: To play: type 'game' or 'game 2' for 2 players Options: nosounds = turns off sounds (default: sounds on) notextures = turns off textures (default: textures on) e.g. - game nosounds - plays a 1 player game with no sounds Controls: Player 1 - Player 2 - Q W E U I O A D J L Z X C M , . fire missile: S fire missile: k shield: 1 shield: 7 ion cannon: 2 ion cannon: 8 halo cannon: 3 halo cannon: 9 razor cannon: 4 razor cannon: 0 Game play: The goal is to clear the level of aliens (not including mad bombers) by shooting them. Protect yourself by enabling shields. Shields drain your energy but can absorb damage from bombs at the expense of more energy. You cannot move or fire weapons when your shields are up. Watch out for mad bombers! If you destroy one, you can equip your tank with one of the three special cannons that can only fire once. The more energy you have when you fire the cannons, the more destructive their force. The board can also be rotated for better viewing at times: 'g' rotates the board 90 degrees clockwise about the y-axis. 'h' rotates the board 90 degrees counter-clockwise about the y-axis. 't' rotates the board 20 degrees upwards about the x-axis. 'y' rotates the board 20 degrees downwards about the x-axis. 'b' rotates the board 20 degrees left about the z-axis. 'n' rotates the board 20 degrees right about the z-axis. The movement keys and the x- and z- axis rotation keys will still map correctly (e.g. 'a' will still move Shooter 1 left relative to the viewer) after any rotation about the y-axis. Game level Editor: For each level, the terrain can be built from an associated text file named "terrainX" where X denotes the level (0, 1, etc.). This file contains a 11x11 floating point numbers that represent the heights of evenly spaced points on an 11x11 grid. The numbers are not restricted to certain bounds in the file, but will be truncated to fall between 0 and 2 in the game. If no such "terrainX" file exists, the game defaults to using "terrain." Otherwise, the terrain will be completely flat. Enjoy! Optional Project Additions 1). On-screen control panel We implemented a text display using glutBitmapCharacter to display scores, statistics per player, and relevant messages (e.g. - the level, "Game Over"). For statistics we invert the viewing camera's rotations (to maintain a billboard effect) and use simple geometry to indicate the health, the energy, and the number of lives per player. 2). Collision detection We employ extensive use of collision detection in our game. There is detections between: aliens and missiles shooters and bombs shooter1 and shooter2 shooters and grid boundaries bombs and terrain mad bombers and terrain add-on equipment and terrain The implementation was based mostly on bounding boxes for the aliens, point sources for the missiles, bounding spheres for bombs, shooters, and mad bombers, and interpolated heights for the terrain. 3). Simulated Dynamics For dynamics in the game, we applied gravity and forward momentum to bombs dropped by aliens and bombs dropped by mad bombers. You may also notice that the velocity of shooters on the terrain varies based on the gradient of the surface. Thus, steeper hills are more difficult to climb (i.e. - slower to climb). Shadows moving across the terrain are also consistent with the angle the shadow makes on the surface of the terrain. 4). Paramteric curved surfaces The terrain is a parametrical curved surface rendered using NURBS and is capable of changing each level. 5). Sound Sound effects were applied to explosions and messages (such as "Incoming" to alert players of mad bombers; "Game Over" to signify the end of a game). These were implemented using system calls to SoundPlayer. 6). AI There is limited AI in the mad bombers in that they attempt to predict a player's location before dive bombing him/her. This prediction is based on the current location and the player's facing. It is particularly effective simply because players tend to continue to move in the same direction when they notice a mad bomber diving at them. The mad bomber also times his bomb drops based on his current velocity, angle of descent, distance to target, and number of bombs. These were implemented using run time calls to determine current locations, headings, and velocities. 7). Game level editor There is a simple game level editor that is a text file representing the heights of an 11x11 grid. The heights can range from 0 to 2 and have no constraints as to dependency of neighboring height values. For each level, there can be a terrain file named "terrainX" where X is the level number (0, 1, etc.). If no terrainX is found for level X, the default file "terrain" is used. Models: We modeled the shooters and aliens from scratch. Inspiration for the aliens came from the real video game of Space Invaders by Activision. (http://www.activision.com/games/spaceinvaders/index.html) Check out http://download.activision.com/activision/sicon/si_web.avi for a short demo of the real game, which we viewed for ideas. Textures: We obtained our textures from the web. We used the class file Texload to load RGB images as texture data. This file was from the web ("Way cool, way fast OpenGL Techniques"). Sounds: We obtained most of our sounds from http://www.wavcentral.com Other: We are using the GlutMaster.* and GlutWindow.* classes from http://www.duke.edu/~stetten/GlutMaster/GlutMaster.html Paragraph Description of game: 3D Space Invaders - Welcome to the next generation of space invaders! Aliens swarm down from above as you and a friend tackle them with your shooters, now armed with some advanced technology like shields and three powerful cannons. Take on some advanced aliens like the mad bomber in new worlds where the terrain affects your every movement.