Free Radical
click for larger versions.
< < < Note: This game was made in Panda3D, and I can't capture it at a decent framerate on my four-year-old laptop. Eventually I will post a video, when I get access to a better computer and install python, panda3d, and camtasia... > > >
Free Radical was a two week 3D project, created with python and Panda3D. In the game, you play the role of a rogue robot, who has broken his programming and escaped the hive mind. Imprisoned in a cell in a robot jail, he must break out and put a stop to the other killbots. Guard bots, security cameras, and switch-activated gates stand in the way of your escape, but your independent processing is enough to keep you out of sight and safe.
This page will be expanded more when the video is uploaded.
Tech:
This game featured a lot of interesting tech. One feature was a fully zooming camera (from third-person far away, to first person up close), that even collided with the level and made sure you could always see your surroundings. It even had a smooth transition from collided zoom in to uncollided zoom out, so that the camera never snapped back and disoriented the player.
Another feature was a runtime level editor, which provided an advanced set of level creation tools, and could load new textures specified by text files. Combined with a ten-line code file specifying active object positions, players could add new levels to the game (with their own art assets!) quickly and easily.
All world geometry was generated at runtime, via low-level OpenGL vertex lists. Collision objects were bound to the four sides of the generated blocks, and then the objects were placed in the world. To avoid collision stuttering at the corner seams, we used capsules, stretched to the dimensions of the wall and slightly into the center of the block. This meant that two adjacent walls had curved collision at the connecting corner, which was tangentially aligned and removed all stuttering.
The world was stored as a two-dimensional hash table, due to the requirements of user-generated content. This gave the player the illusion of an infinite worldspace (cells extended into negative values, and there were no invisible walls). The built-in level editor also allowed a binary file format, which significantly reduced file size. Typical levels were 1-2kb, and loaded much faster than text! (xml is dumb...)
There was also a large variety of active objects implemented, which included: pushable blocks, enemies (with patrol, search, and charge AIs), floor switches (triggered by blocks, enemies, and the player), gates, security cameras (which alerted enemies of your location), and line-of-sight routines. A lot of components went into this project, and most of it came together nicely in a very short amount of time.
Team:
Greg Lane (Me) - Level Editor, World Construction/Loading, AI, Level Design, Music.
Eric Li - Camera, Collision, AI, Object Functionality.
Dan Dela Rosa - Menu Interface, Object Functionality.
Darren Domingos - All Art, including textures and 3D models.
Jake Newell - AI, Enemy Pathing.










