Chase Albert A Physics Engine Objective: To write a physics engine for a 3D space-based first-person shooter. Also, once that is in working order, to help write an adaptive AI framework for the game. Justification: A physics engine is a necessary component for any game, at least any game in which things must interact. Description: I will be making a large-scale rigid body physics engine. Basic requirements include collision detection, gravity between arbitrary objects, and maintaining all vector quantities, including orientation. The physics engine will be tightly coupled with the game engine. The basic structure is a Universe in which all game objects are represented. During each "step", all objects are tested for collisions. Then gravity is calculated, along with all other accelerations. At the end, velocities are calculated and objects moved. The collision detection algorithm functions in several steps. First, an N**2 sphere-based filter. This filter assumes that every object is a sphere. Next, any two objects close enough to collide are examined for any colliding polygons. Each polygon is assumed a plane, intersecting planes are examined to detect intersecting edges of the polygon that describes them. Once all is said and done, new velocities are calculated for the objects and they are notified of the collision. There are several NlogN gravity algorithms, which apply the fact that far enough away objects may be treated as one object. Since, however, there are few gravitationally significant bodies out there, my engine will only consider these bodies to be pulling. It is therefore an order N solution to the problem, because of this knowledge. The AI structure as the design stands right now is as follows: Ships are organized into fleets. Fleets are simply groups of some "commandable" objects, which may be other fleets. Fleets take orders from their super-fleets, and allocate their own fleets by means of an evaluable heuristic used on the ships involved. If a fleet gets an order, it allocates the order down the tree to its commandable units. If an AI ship gets an order, it executes that order. Players may be placed along the tree at any place -- it is fully acceptable for a player to control a group of ships or a single ship, in fact they will be encouraged to. The AI's themselves will be created from a seed population on the main server. When the game is over, the seed population will be updated. During the game, different AI's will keep their score. On a given interval, the highest scoring AI's will be allowed to reproduce. The actual parameters that control the AI's' have not yet been decided on, though they are being considered. This is a product-oriented project. It's successful if, at the end of the year, people play the game over the internet and have fun. Limitation: C. ~Cheers