Available on:WIN PC


Overhaul is an Arcade Racing Game created to demonstrate the use of advanced AI, physics, HLSL, sound and input with DirectX in realising a functional prototype game application.

A Racing game was chosen because sports games, in general, have a fairly limited and understandable rule set, and are played within a constricted area. Arcade Racing games focus more on delivering enjoyable gameplay than a highly realistic driving simulation. Another reason for choosing a racing game is that I had carried out research into Racing AI for an assignment in the "CS 1130A: Artificial Intelligence for Game" module and wanted to put some of the researched techniques into practice.

The major "special feature" of Overhaul is the Racing AI, opponent cars are created which attempt to race around the track while avoiding collisions with scenery, the player and each other. The AI is mainly based on the approach presented by Gari Biasillo of Electronic Arts [Gari Biasillo - EA. (2002) , AI Game Programming Wisdom, Charles River Media], with further influences coming from Jeff Hannan of Codemasters [Jeff Hannan, CodeMasters. (~2000) ,AI Junkie Interview, http://www.ai-junkie.com/misc/hannan/hannan.html] along with adaptations specific to this implementation which are detailed below.

Another feature of Overhaul is the integration of the PhysX Physics API into the game. PhysX is used to enable collision detection and response with the track collision geometry and various scene objects. PhysX also drives the vehicle simulation used to model the cars within the game. In order to integrate PhysX effectively, a content pipeline was designed to take physics data from the 3D modeling package, through the game and into the physics simulation.

A lot of work went into designing and creating a content pipeline for Overhaul. The aim was to develop a system that was robust, re-usable, quick and user-friendly. It was decided early on that the ability to modify the racing game using a point and click interface would be advantageous over a hard-coded or text-file based data input. Rather than write a bespoke interface or level editor, the decision was made to use an existing 3d modeling package such as 3DS Max to create the level geometry and also to script other properties or behaviors, which were then exported into various .X files, and imported into the games engine. In order to achieve this, a semantic approach was adopted, where keywords in models would trigger the creation of specific objects within the game.

Other lesser features of the game include a number of HLSL effects which are responsible for shading every surface in the game, XACT sound, and XInput which are detailed in the later Effects, XACT and XInput sections respectively.

Overhaul represents my assignment work for the Programming Games For PC and Xbox module which focuses on the use of DirectX. I chose to write a racing game after studying various AI techniques for racing games in my AI for Games Lecture in the first term of my MSc at Abertay. The game utilizes the PhysX physics SDK, XACT sound pipeline and XInput controller interface.