Scheewe, Brian
 

Brian Scheewe

May 2, 2003

 

Project:  To create a 3d ?Battle-Bot Arena? in which I could model and code robots to ?fight?.

 

Description:  Using Alias-Wavefront?s 3d package Maya, it is possible to make a world complete with friction, gravity, mass, turbulence etc. by using rigid body dynamics and collision detection.  With these tools, I created a simple arena in which ?intelligent? robots can be placed.  I applied Maya?s Embedded Language (MEL) to these robots so that they could interact with the world around them and move about.  Each robot was given a specified mass, speed and agility in which they are governed in world space.  The robots? intelligence drive them in real-time to seek and take out any other robot.  The robot that can successfully push all the other robots off of the arena is declared the winner.

 

Methods:  MEL is a C-like language that is capable of control-flow, abstract data types, and memory management.  Most of the calculations for movement and target acquisition were done using the ?vector? data type in Maya.  As may be apparent, this data type simply holds three distinct numerical components representing XYZ coordinates in either relative or world space.  Borrowing some vector addition skills gained from physics, I was able to code each robot to accurately determine in which direction it should travel in order to pursue it?s target.  A rotational impulse is then applied on the wheels in the specified direction and the robot moves.  Once the basics of target acquisition and movement were accomplished, different strategic plans could then be applied to each robot, including wall avoidance, opponent avoidance, and charge-attacks.

 

Limitations:  I ran into many problems in the course of the implementation, some of which I had control over and others I didn?t.  Maintaining high speed during the simulation was one of the main problems encountered during the process.  I was able to overcome most of this by using invisible ?stand-in? mathematical representations of the wheels in order to reduce polygonal calculations needed for collision and friction on the floor.  Maya?s collision detection presented problems of which some I still cannot get under control.  Sometimes during the simulation two rigid bodies will incur interpenetration and Maya will not know how to handle the calculations following this event.  By increasing the collision tolerance the issue occurs much less infrequently, yet it is not totally overcome.

 

Conclusion:  The real-time feedback from the code made this project enjoyable despite the challenges.  I gained a greater knowledge of vector math and of programming in general as well as a better understanding of simple AI.