![]() |
| Yellow Man | Navigate | BSP Maze | Glide Missile Command | OpenGL Missile Command |
Source Files
|
INSTALATION: Systems which are known to run the game are: CONTROLS:
SETUP.INI FILE:
COMPILATION: ABOUT YELLOW MAN: The animation was originally motion capture data. Yes, I know the running looks funny, but it is very hard to capture a good running cycle with the magnetic setup I use at Georgia Tech. The capture range for good data is only about eight feet. I still can't believe the subject's run looked that funny. Anyway, there is a standing, a run, and a walk cycle. The joint angles from the motion are blended together to transition smoothly between each cycle. You can find out more about the technique I used from Verbs and Adverbs: Multidimensional Motion Interpolation Charles Rose, Michael Cohen and Bobby Bodenheimer, IEEE CG&A. The physics in Yellow man is very simplified. The Energy Ball, the explosion particles, and yellow man himself are all under the influences of a constant gravitational force field. The collisions that yellow man makes with the wall are modified inelastic collisions, initially there were true inelastic collisions, but once he hit a wall he would not stop; it was like some crazy human pinball game! I added a damper to his motion that could be considered friction, but static friction is not implemented (you can see this if you stand yellow man on a slope and stop his walking; he will begin to slide). The collision detection is what I call 2D portals. Each room knows about the areas surrounding it, and these neighbors can either be walls or entrances to other rooms (portals). If they are walls then there is a collision. If they are other rooms then the control of the player is passed to the neighboring room when his center is within its boundary. There is also a sort of universal law that won't let yellow man fall below the floor. The upside of this collision detection technique is that it is very fast. I can have a thousand objects with varying bounding spheres in the scene at the same time with no slow down at all. However, it is first order collision detection (particles don't hit each other), but it should be trivial to extend the engine to hit certain entities, or make the sparks bounce a few times when they hit. One drawback of this technique is that the collision detection for the ceiling is not automatic. I thought of giving each room a height, but then I could not have that cool vaulted ceiling that I wanted. Anyway, this glitch actually shows off the gravity field quite well. Shoot a bunch of shots directly up into the air and run around a bit; then, look back at where you ran. What goes up must come down. All the rendering is done using OpenGL. I don't have any special algorithms to cull triangles, or clip things outside the viewing frustum; the world geometry is far to simple to need it. Yellow Man supports hardware transformation and lighting, and I highly recommend it; in fact the program was coded and tested mainly with a card that has the hardware. Oh yeah, the textures are from Quake, and I learned a lot from the Quake source code (I can't thank id Software enough for their policy on sharing source code; bless you id Software, bless you). If you want to change the way yellow man looks, then you can edit the TRI files. The TRI files are in a very simple format. First is the number of vertices, then the list of vertices. Following that is the number of triangles, then the list of triangles (each triangle is 3 integers used to index the vertex array, look in geo_shell.cpp for better understanding). A soft restriction on the models is that they be an unbroken manifold mesh (don't worry about triangle orientation, the program takes care of that). You can have handles, but no breaks in the mesh, and each edge may have only two incident triangles. The fire animation is very basic. It was done using 10 fire and 4 smoke textures (the textures really need to be improved), each one with an alpha texture as well. They are stretched across some quads that rotate with the view angle, and then cycle semi-randomly through their frames. Yellow Man is open source, but if you learn from it then give credit where credit is due. I learned a lot from Chris Hargrove's Tutorial over at Loonygames, thanks a bunch Chris. Somewhere in there he recommended some books that were invaluable too. Another thing I almost forgot is that I took the sounds from Quake; thanks again id Software. Making this game was a huge learning experience for me. I don't think I would do anything the same if I did it again, but it sure was fun doing it. KNOWN BUGS: |