Chris Unkel Capture the Dodge Ball / Windows Run process: Run the executable from the directory with the textures (cursor.sgi and cloth5a.sgi)--or run it from inside. Game play: Object: collect more than half of the black balls in close proximity to your home base (indicated by a small green cone) before the computer collects more than half the black balls in close proximity to its base. Defend yourself and attack your opponent with a multitude of dodge balls. Details: Your robots are greenish; the computer's are reddish. The winner's home base cone will become much larger. The cones are not game play objects. If a ball (moving with sufficient speed) strikes a robot carrying a ball, the robot will stop and drop the ball (which maintains position and velocity but starts to fall). If a ball strikes a ball being carried by a robot, the robot continues, but no longer holds the ball, and the balls normally. Robots that are about to collide will halt (somewhat before they actually do.) Controls: Camera: Top/bottom/left/right of screen: pan forward/backward/left/right. Upper right/left corners: rotate camera direction to right/left around the point under the camera. Lower right/left corners: rotate the camera the the right/left around the point on the ground that intersects the central ray. Play control: Left-click on a robot to select it. With a robot that is not carrying a ball, right clicking on a sufficiently close ball picks it up. Right clicking any other object or on the ground makes the robot move to that point. With a robot that is carrying a ball, right clicking on another object (ball or robot) will throw the ball towards the object. A ball may only be thrown so fast, so if the object is far away the ball may bounce and miss, or stop short. The maximum velocity is relative to the robot's motion, so you can throw balls faster in the direction you're moving. Right-clicking the ground will move the robot there. Option keys: 1 to toggle a demonstration of the backbuffer technique used for selection. 2 to toggle a small indicator of the intersection of the central ray and the ground. 3 to toggle computer AI (well--AS) control of your robots (initially off). 4 to toggle computer AI control of its own robots (initially on). Advanced features: The game contains an advanced analytic collision prediction and physics model. The collision detection is dynamic (predicts collision time rather than time stepping) and analytic (predicts collisions of spheres and cylinders, not polygon meshes). The position of all objects in the game is described as a quadratic function of time, although only the y dimension can have a quadratic component, which describes the parabolic motion of a ball in flight. To predict the time of collision, the collision detection engine solves polynomial equations. Although in general detecting intersections between quadric objects, such as spheres and cylinder, that are moving in potentially quatratic paths involves finding the roots of a 4th degree polynomial, the engine makes use of knowledge about the relative motion and structure of the shapes in the game so that it solves mostly 2nd degree polynomials. Only the intersection time of a ball in the air with a sphere at vertical rest need be found with a quartic equation (this is the case for a ball in the air and one on the ground, or a ball in the air and the top of one of the robots. The collision detection only runs when some object's position as a function of time has changed--if no objects collide (and no robot is controlled) the collision detection engine does no work. Having detected a collision, the game models it in a physically accurate fashion. Collisions between balls are modelled as fully elastic collisions between non-deforming objects of equal mass. Collisions between balls and robots are fully elastic and as if the robot had infinte mass. Collisions between the balls and the ground are somewhat inelastic, removing a fraction of the velocity, as well as a fixed amount of velocity, which allows the balls to come to perfect rest. The game also has a control panel in the form of a radar screen. The ground texture came from 3d Total Textures (http://www.3dtotal.com/). The routines for finding the roots of polynomials are from Graphics Gems. Routines for loading textures are from the class directory. The camera control mechanism is patterned that in Bungie Software's Myth II.