Adam Altman Curtis Laser Walter Luh The Cannonball Run Team (AKA M.A.D.) Platform: SGI, Linux, or Macintosh To build the executable on a Unix-based workstation, simply type make. On some workstations, the makefile must be modified to point to the location of the GL and glut libraries and includes. To build the executable on a Macintosh, create a new project file specifying where the GL and glut libraries are installed. Add all the *.h and *.c files to the project and build it. Run the executable by typing its name on the command-line (Unix) or by double- clicking its icon (Macintosh). On-line help can be accessed by typing the name of the command followed by --help. For example: raptor4:~/> ./M.A.D. --help Usage: ./M.A.D. [-r color] [-l color] [-t floor] [-msp N] [-d EASY|HARD] -m or --matches Number of matches -s or --scissors Number of scissors -p or --players Number of players (0-2) -r or --right Right player color -l or --left Left player color -t or --textured Texture floor -d or --difficulty AI difficulty level Colors: Grape Lemon Azure Cardinal Lime Ice Brass Copper Charcoal Chocolate Gunmetal floor Floor texture file (raw) On the command line, the user can specify the number of matches and scissors in the maze (1 each default), the number of human players (2 default), the color of the right and left players (Cardinal and Azure respectively default), the texturing on the floor (off by default), and the AI difficulty level if the number of human players is less than 2 (hard by default). Player controls: LEFT RIGHT Self-destruct: Q q \ | Forward: W w Back: S s Spin left: A a Spin right: D d The object of the game is to blow your opponent up. This can be done in three ways. The easiest way is to find the detonator in the maze that matches your opponent's color. Another way is to find the match and light your opponent's fuse. Once this is done, your opponent has a two-minute window where he or she can avoid losing. Your opponent can do this by finding the scissors, which cuts off the buring end of its fuse, finding your detonator and blowing you up before the two minutes are up, or by chasing you to ensure that you are within the blast radius of his or her explosion ensuring mutual assured destruction. The final way to blow your opponent up is to find your own detonator. This activates your self-destruct key. Using this key, you can walk up to your opponent and blow up in his or her face. Note that this does not guarantee the death of your opponent as it is still possible to run away from the blast area before he or she is engulfed. Scoring: You score one point each time your opponent dies and you do not. Optional assignment requirements: Collision detection - Collisions are detected between bombs and objects, walls, explosions, and other bombs. Objects, bombs, and explosions are bounded by a sphere. Collisions are detected when bounding spheres intesect or when a bomb's bounding sphere intersects the plane of a wall. Procedurally generated world / items - The maze is randomly generated each round and explosion particle effects are procedurally generated. Maze generation is done by closing all the "rooms" in the maze and then starting in one corner randomly connecting rooms along a path. Since this is all done from a single path the maze is guaranteed to be connected. Explosion particle effects by randomly generating particles that are moved slightly upward and outward from the particles in the previous frame. These particles are combined with randomly perturbed particles from all the previous frames. AI - Both version of the AI use a depth-first search of the maze to find the opposing bomb's detonator. The hard version improves this algorithm by not considering any paths that lead to a dead-end. The AI always searches for the opposing detonator because it is the most effective way to blow the opponent up. Control panel - Scores are displayed in the players' color on each screen's simple control panel. Multiplayer - Two players can play the game on one machine using two separate windows and sets of keyboard commands. Sound - Sound is implemented on Unix workstations by forking off a separate process to play sounds in the background. Level of detail control - One command-line level of detail control is implemented. The user can increase detail on the command line by specifying a texture for the floor of the maze as described above. A within-game level of detail control is also implemented. The user can switch between three different levels of detail using the + and - keys. The lowest level of detail is wireframe mode. The highest level includes Phong shading and, if it has been specified on the command line, texture mapping. Simulated dynamics (realistic walking motion) - When moving, the bomb moves its arms and legs in a cartoonish walking manner. When it is carrying a match, it wields it like a cartoon cudgel as if to bludgeon its opponent. External sources: Sounds were taken from classic Warner Brothers' cartoons. The explosion was inspired by the "Genesis effect" from "The Wrath of Khan" as documented in the class textbook. We could not find any maze generation algorithms that we could leverage directly, but we were inspired by the algorithms that we did find and used the knowledge gained in the search to implement our own maze generator. Textures are courtesy of Apple Computer Corp. Anything else we want you to know: We will gladly take the Raptors off your hands for you when you get rid of them. Game description for web page: Cannonball Run (M.A.D.) is a game of strategy, cunning, and coordination. Two players square-off in a battle of twits. The object is to make your opponent die in a most spectacular manner while keeping yourself alive in the process. Image caption: A match-wielding azure player admires his handywork from afar. Cardinal player wasn't so lucky.