Insanity

You need to upgrade your Flash Player

This page contains video that requires Flash Player 9 or higher. In order to view the video, please ensure that you have the latest version of Flash installed, and that you have JavaScript enabled within your browser.

Download video: [.mpg] [.mov]

Mix two cups Max Payne (minus the charmingly ludicrous faux-noir voice-over) with just a dash of Hitman and you have the basic premise behind Insanity, a third-person action game in which players assume the role of the world's deadliest assassin as he fights for his life in the Windy City.

Based on Richard Celenza's independent film of the same name, Insanity was created using the entirely homegrown "Onyx" 3D engine. My own contributions included significant portions of the AI, collision, and camera logic. The AI behavior utilizes an asynchronous A* node mesh algorithm for pathfinding, combined with simple finite state machines for decision making. The collision system consists of a broad-phase culling operation based on spatial partition queries, followed by a narrow phase that uses sweep tests and multisampling for highly accurate overlap detection and response between bounding volume hierarchies. The camera, on the other hand, is significantly less fancy - just a slightly modified hard attach view. But hey, it gets the job done.

The video highlights a few of the cooler features we were able to incorporate into the game, including bullet-time (of course), the gravity gun (Half-Life 2, eat your heart out!), and even a paint-and-click special attack that served as an early precursor to a similar mechanic later seen in Red Steel.

One of the features of which I'm personally proud is the near-miss algorithm I implemented for the enemy attacks. If you watch closely, you can see the bullets whizzing by, at times mere inches from the player. I took the basic idea from a fantastic article on ranged weapon combat in AI Game Programming Wisdom. To quote Paul Tozour, the article's author, "hitting is easy; missing without looking stupid is hard." I felt like this behavior helped to heighten the tension just a bit. Thanks, Paul!