Other Projects

About Me

Contact Me

Back to games

Turbo Trolley Racers

In the near future government space agencies are forced out of business by the rise of cheap commercial spaceflight. This leads to many rocket engineers losing their jobs. One daring unemployed engineer decides to live out his childhood dream of attaching a rocket engine to a shopping trolley. Nobody could have predicted that this would spawn the worldwide phenomenon that is "Turbo Trolley Racing".

This is a 3D racing game in which players race against each other and/or against A.I. opponents in rocket propelled shopping trolleys. I exhibited this game at the Cannes Games Festival 2012, along with my teammate Ronan Farrell with great success.


Turbo Trolley Racers.rar (Right click, then select "save link as")





I developed Turbo Trolley Racers in 3rd year with my teammate Ronan Farrell. The game is coded in C++ using the Ogre3D rendering engine, Nvidia's PhysX physics engine and the IrrKlang sound library. My two largest accomplishments on the project were getting PhysX up and running with Ogre and implementing effective artificial intelligence.

The major issue with implementing PhysX with Ogre was that the most recent version of the Ogre wrapper was poorly documented as the developer had abandoned the project. This was the only version which would work with the newest version of Ogre and Visual Studio 2010.

For the AI I decided to use a waypoint based system. The AI players do not follow the waypoint set strictly. They use it as an optimum line which they loosely adhere to, dependent upon their speed and their position relative to other vehicles. The AI tracks an ideal target position, which is interpolated between waypoints based on the vehicle's distance to its next waypoint. The ideal speed of the AI is based on the distance between waypoints and is also interpolated. To create the waypoint set for each track I created a waypoint logging system which, when activated, logs player one's position to a list every 1.5 seconds and then writes the list to a file with the track's name. The level handler then loads the waypoint file with the selected track's name and provides the list to the AI vehicles.

Other tasks I completed during this project included implementing a dynamic camera system, implementing split screen play, implementing the rocket physics, implementing the vehicle, material & particle scripting, gameplay programming and bug fixing.