I joined Red Lemon Studios after bumping into CEO Andy Campbell in a Glasgow supermarket. We’d worked together at Gremlin Interactive and we got chatting.
I started at Red Lemon Studios towards the second half of their debut game, Braveheart.
Although it bore the name of the Hollywood movie and prominently featured Mel Gibson on the box, the game had no other connection to the franchise and went by the name “Tartan Army” internally.
AI, Physics, Gaelic and Fixed Timesteps
I joined the team to develop the AI of siege vehicles and foot soldiers, and the physics for catapults and arrows in flight. While this was a challenge in its own right, the biggest problem I faced was understanding the game engine itself. The source code used Gaelic terms such as Deasil and Widdershins to mean clockwise and counter-clockwise, which took a little mental juggling to understand.
To add to my problems, the engine used a fixed timestep system that was always running one frame ahead and then interpolating the rendering every frame. While this is second nature to me now, I’d never seen it before and nobody had bothered to tell me. In short, it took me a little while to get up to speed on the project and get working on the actual AI.
Laurent Noel had written the original renderer using the 3Dfx Glide API, meaning that it would only run on a PC with a 3Dfx graphics card installed.
Since I’d ported Laurent’s rendering code from Actua Soccer while at Gremlin, I took on the job of writing two new renderers for Braveheart. The 3D graphics card market was still in its infancy and very fragmented, so we decided to support both Direct3D and OpenGL (which was still popular at the time), in addition to the existing 3Dfx, and a software rasteriser that was being developed by a colleague.
I designed and implemented a common API for all four renderers that abstracted each of the individual low-level APIs. On startup, it would detect and initialise the most appropriate renderer, then direct all the low-level state setup and polygon rendering calls to the appropriate API.
Scripting for Take the Bullet, etc
The team wanted a scripting language for managing cut scenes and other triggered events. I had some experience with this in my previous job at Digital Animations, so I implemented a bytecode interpreted language for controlling game entities.
Although Take the Bullet was never released, the scripting system was reused in several titles that were released after I left Red Lemon, including the PC game of the sci-fi TV series Farscape.