I grew up in the north of England, I was child of the 1970’s and a teenager in the 80’s, and was part of the awesome home computer scene that thrived in the UK at that time. I always liked the Commodore machines, and later I would get an Amiga, but my first computer was the legendary BBC Micro. I really have to thank my parents because they must have sold a kidney as the BBC was really expensive, compared to say a ZX Spectrum, without the BBC I might have not learned to program.
Learning to program back then was fun and the feedback was immediate, something that is missing today. I started with BBC BASIC and then 6502 machine code. I didn’t have a floppy disk drive for many years, it was all slow tape and our house didn’t have the most reliable power! Lots of code was lost and lots was redone. I learned from the school of hard knocks that the second time you do something its usually better. This was the 1980’s and there was no internet, you had to figure things out for yoursel, everything was done through friends, peers and local computer clubs. I wish we still had the same thing; you would find books, magazines and people who knew more than you. Everybody had their own plans as to what they were going to do with these new home computers, exploration was encouraged, there were no wrong answers. I was fascinated with graphics and audio which generally pointed to making games and the demo scene. It wasn’t long before I was abusing the hardware, racing the beam down the screen and writing software to the bare metal - something that has stuck with me to this day.
Around 1987, while still in school, I got access to an Acorn Archimedes, with the then revolutionary, ARM processor. The archimedes, being a BBC machine, had BBC BASIC and a built in assembler. The Basic on the archimedes was pretty fast but I jumped right in to learn ARM assembly, it was so logical and easy to learn but it was hard to master. In machine code the 8Mhz ARM2 was plenty fast enough to software render 2D and 3D graphics. I ported whole games, wrote interrupt and DMA driven audio systems and tracker players, 2D sprite renderers and 3D triangle renderers - all in fixed point because the early ARM processors didn’t have floating point. Around this time I also bought myself an Amiga which was probably the best programmers machine ever made, to this day I have fond memories of programming the Amiga. There was lots of debate as to which machine was better, was it the hardware in the Amiga or the fast processor in the Archimedes? I still don’t know the answer. Most game programmers from this period were also pretty good at cracking them, I was no different, I got pretty good at cracking games on both the Archimedes and the Amiga. Being a teenager you don’t think about the implications, it was all punk rock and anarchy, but it was educational. Reverse engineering the disk protection of a competitors game, just to see what they did so you could do it better, was better than any college course.
I made it all the way through college without ever owning a PC, I could do everything I needed on the Archimedes. After college I ended up at Krisalis software in Rotherham, England. Most of the really good Archimedes games came out of Krisalis and a lot of those games were Amiga ports and written in assembler, I fit right in. It was these years while at Krisalis that I first got a PC, it was a shiny new 90Mhz Pentium.
In 1996, after I had been at Krisalis for a number of years, I moved to Los Angeles. Moving from a northern England mining town to Hollywood was quite a culture shock. I worked on Trespasser at Dreamworks which was another big change for me. It was C++ and Windows and it was really the first time I had worked on a bigger team developing a completely new game. Even more crazy was to randomly bump in to Steven Spielberg around the office! Trespasser never lived up to the hype, the game play was legendary for all the wrong reasons, but the tech we developed was ground breaking. We had bump maps and per pixel diffuse and specular lighting, we had tools that would encode surface curvature from high resolution meshes in to the bump maps of low resolution meshes. The rendering had perspective correction, sub pixel correction, bilinear filtering, per pixel fog, a semi volumetric sky. We had real time audio foley so as different physics materials collided it would make physically correct sounds, I won a game developer award in 1998 for this! It had rigid body physics and water, we encoded the ripples in the water as bump maps so it looked awesome. The terrain utilized wavelets to produce dynamic resolution. To render the forests we had an image cache system that would render groups of trees as imposters to 2D textures and then simply warp the texture back to the scene - all stuff that is fairly high end today and this was 25 years ago and software!
When I first got there the game was in quite a sorry state as far as performance and memory consumption went, my job was to optimize it and optimize it I did! The original renderer was a templated C++ monster - this exact piece of code is where my hatred for C++ comes from, one day I’ll write an article about it. I rewrote the entire thing in assembler and optimized it for Pentium, Pentium MMX, Pentium Pro and at some point AMD became a launch partner and I had to last minute optimize it for the AMD K6 and the ‘3D Now!’ instruction set.
Unfortunately the game was a victim of circumstance along with some bad management. After being delayed multiple times just as the PC graphics scene was rapidly adopting hardware, we had no choice but to support hardware rendering. It was an unholy mix. The hardware at the time was much faster than our software renderer and could support higher resolutions but couldn’t do anything similar to the features we were doing in software. Trespasser was probably the last software rendered PC game and it would have been a technological masterpiece if it had been released 2 years earlier. The sad part is it could have been a great game if it had been a Turok style dino shooter from day one.
It was a cool game to work on and the technology was impressive enough to get the attention of Microsoft who at the time was making Talisman, a hardware tile rendering system, that predates Direct3D, very similar to our imposter/image caching system, but our system was much better. It was faster, even in software and it was perspective correct.
Dreamworks is where I first met Seamus Blackley and he and I both went to Microsoft where we worked on the original XBox. The Xbox is a well known story, there isn’t much that hasn’t been said. I worked on the general architecture but mostly the graphics. I was involved in the revolt against Gigapixel and got a nVidia GPU in there and probably saved Xbox from the same fate as other Microsoft consumer products - remember WebTV??. We were called crazy at the time for making a console out of PC parts, its kinda funny how things work out. Another thing I did at Xbox was to form the ATG group, to this day the ATG group still exists and still does awesome work.
After Xbox I started a consulting company, it was my first time working for my own company. My play was to help developers with XBox games and in doing this I got exposed to the Playstation 2. I liked the PS2 and programming it reminded me of the Amiga, it was a programmers machine and it was esoteric, in the right hands was more powerful than Xbox. The esoteric nature of the PS2 along with lots of assembler made porting code to Xbox quite difficult, I was there to help.
The initial consulting company didn’t last too long, in the process of helping developers with their PS2 to Xbox conversions, I ended up working at Insomniac Games, and I don’t really remember how it happened because Insomniac had nothing to do with the Xbox. At this point Insomniac was about 20 people and needed an engine programmer. Funnily enough my apartment and Insomniac were about 1/4 mile apart, we were both on Barham Blvd in North Hollywood.
Insomniac was, and still is, an absolutely amazing place to work - it’s one of the few places I’ve worked where I would go back in a heartbeat. That says a lot because its been 20+ years since I first started there. Working on the PS2 engine for the Ratchet and Clank games was one of the things I enjoyed most in my career. This era was the pinnacle of traditional console development. While working at Insomniac is where I first met PJ who is my partner in Tricky Bits, he also lives in Colorado.
Sony at this point were making the PS3 and Insomniac was invited very early on to be part of it. Mark Cerny formed a group called the Sony ICE team, it was kinda like the ATG group at Microsoft. The ICE team was located at the Naughty Dogs offices in Santa Monica, I was there full time. We had great access to the PS3, we’d go to Japan and get special access to development hardware and we’d to get use the cycle level simulators and emulators. This was long before the PS3 resembled anything similar to what was finally released. At this moment in time the PS3 still had a Sony GPU, the RSX wasn’t even a pipedream - there is a whole story here that needs to be told.
I was technically on loan to the ICE team, I was still employed by Insomniac and I went back to them fulltime when they started developing plans for their first PS3 game, this game would need a new engine. The PS2 engine was very specific to the PS2, it had quite terrible tooling and while the game code was C, the engine was more or less straight MIPS assembler. For the new engine it was decided that it would be more extendable and it all be C/C++ and we’d optimize from there, as needed. I was architect of this new PS3 engine, at this point I probably knew more about the PS3 than anybody alive. I had a secret office at insomniac that was locked to the outside world and in it was one of the first development kits in the United States.
I worked on all of the Insomniac PS3 games, modifying the engine for the various Ratchet and Resistance games. There was a surprising amount of work to support two very different games with a dedicated engine, especially from the launch version of Resistance running at 30hz to Ratchet and Clank at 60hz. In about 2008 I moved to Boulder Colorado and restarted my consulting company, I still did a lot of remote work for Insomniac and this lasted for many years. I worked on what became their PS4 engine which was also their cross platform engine when they made the only Xbox game.
While consulting I worked for lots of companies big and small. Ratchet and Clank still played a big roll because I did the HD collection, remaking the original PS2 games on the PS3. It was fun project, probably only possible because I wrote the original, some random third party would have had nightmares. Another that stands out is OToy. At this time they were doing lots of early work in path tracing on GPUs, manipulating and extracting data from images, recording VR video, even custom cameras. They also did a lot of work with movies and operated the original LightStage. It was at this point that I really got in to physically correct lighting, photorealistic rendering and integrating rendered graphics with real footage.
I was never really interested in VR but AR is fascinating, Integrating realistic 3D graphics in to the real world is just like the movies but in ultra real time. My path in to AR was through Magic Leap, they wanted wanted what OToy was doing but in real time. It was a challenge to see what was possible, both visually and technically but the hardest part was managing expectations of management who would release videos of things that were entirely impossible. I worked on the platform architecture, software architecture, custom display hardware and the core graphics - I also kicked out Qualcomm and put the Nvidia X1 in there. I briefly worked on AR graphics and holographic displays at Daqri and I got to work with Seamus again.
I finally closed my consulting company for good when I went to Apple where I stayed in the world of AR working on the platform architecture of VisonPro - it’ll be interesting to see if Apple can make a dent in the consumer AR space after so many have tried and failed. The vertical integration aspect of Apple is amazing, the fact you can silicon made to fix a user interface problem is unique to them. But, Apple is a hard place to work, the way they do things is weird and foreign to anybody who has worked anywhere else. I wouldn’t work there again, you feel like a cog in a big machine and I’m not cut out for it. Consulting, small game studios and startups are more my pace.
This is my story of 40 years of hands on development, I’ve seen a lot of change but have never stopped programming or learning. To this day you’ll find me on the front lines of development and optimization. The frontline is where I belong and I have never been interested in management. I am interested in mentoring the next generation of developers who are interested in peaking behind the curtain to see how things work.
I still live in Boulder Colorado and when I’m not doing tech related stuff you’ll find me teaching skydiving or flying planes at Longmont airport.
Hit me up if you’re interested in any of this, need help with a project or just want to chat