SIGBOOM is a 3D racing game/shooter written as a class project for John Reppy's spring 2008 Game Construction class at the University of Chicago. It was developed in C++ using OpenGL for graphics, SDL for the user interface/input, and the Open Dynamics Engine for rigid body physics.
This course was designed to allow students who had taken classes in a variety of disciplines (Graphics, AI, Networking, Physics, and Software Architecture) to pull together that experience to work in teams for an entire quarter on a single complex program written mostly from scratch. The prompt was to build a realtime 3D racing game. The starting code was limited to a track format and small library to read track files.
The SIGBOOM team decided to go with a floating, low friction, podracer style physics. This allows the racing craft to spin in place and allows their facing and velocity vectors to diverge for long periods of time. Full gravity is implemented (yes we know it is in space) and ships are held up and stabilized by a pack of four AI controlled thrusters on the bottom. Combined with the full rigid body physics simulation this allows many interesting strategies for careening off of obstacles (and other players) in physically satisfying ways.
The usual gamut of racing game features are present: speedometer, timers, laps, lap timers, record time, multiple tracks. It has full support for multiple AI racers that use the same control system and physics as the player. The AI is good enough to be challenging but tuned to not be inhumanly powerful. There is also a LAN mode that allows multiple human players to play each other. Not content with mere racing, the team also implemented a health system, powerups (shields, health potions), and an arsenal of weaponry (laser cannon, missile launcher, timed mines) to provide alternative strategies to winning races.
SIGBOOM authors Peter Thorson and Patrick Lange were interviewed for an article in the University of Chicago Computer Science Departmental Newsletter: Fun and Games, University of Chicago Style.
The SIGBOOM lobby screen. The blue ship represents the local Human player. Red ships represent AI vehicles.
A SIGBOOM race just starting!
A SIGBOOM racer cruising along the course
A SIGBOOM game that has devolved into wanton destruction (As is quite common).
Responsible for game physics. Ansel implemented an interface between the game core and an abstract physics engine that allowed the game to swap between using simple "Asteroid style" physics and more advanced systems. Using the Open Dynamics Engine library he added advanced physics features to the game including collision detection with full rigid body dynamics and vehicle movement based on a thruster system controlled both by the player (forward motion and turning) and the vehicle's autocorrecting stabilization system (altitude/pitch/roll).
Responsible for advanced graphics. Robert implemented most of the advanced graphical features of SIGBOOM including all texturing, skyboxes, text rendering, and spherical planet doodads. He also implemented the scoring/lap timing/calculation features and mini map.
Responsible for AI. Patrick implemented a host of AI commands and behaviors including seek, flee, dodge, and evade. AI controllers control their vehicles in the same way human players do (via firing thrusters) and can make solid time around the track that is tough for humans to beat.
Responsible for networking. In addition to local Human and AI players, SIGBOOM allows other human players to join a game over the local TCP/IP network. Rob implemented this functionality and all related functionality (network protocol, serialization/unserialization for all objects and game state, game client synchronization).
Responsible for game core and basic graphics. Peter designed the modular application core (main event loop / object system / vehicle controllers) that allowed the AI/Networking/Physics systems to be built in parallel without conflicts and implemented the core game features (track loading, explosions, weapon systems/powerups, and game balance). He also implemented graphics for the track, vehicles, and weapons.