This is our very first screenshot ever, taken only 24 hours after I started work on the renderer. At this point we had already spent some time developing techniques and tools, and had some artwork built, but this was the first real code that went into the game itself. Notice how badly the grass texture is strobing: that is because I hadn't yet implemented any mipmapping. There were also some problems with the screenshot code, which caused the dark bar down the left of the image.
Just three days later, the environment is rendering pretty much correctly, although it looks a bit bland because there is only one texture layer. Notice the beer advert, which we had to censor in the final game. We also have a bike driving around, but no textures for it, and no physics. It was hooked up directly to the controller so it just moved at a fixed speed in whatever direction you pushed the stick, which was enough for testing the graphics engine. I can't remember what the "2" in the top right corner meant.
Breakthrough! With the addition of multitexturing support, I can render the detail texture as well as the base layer, and all of a sudden things start to look rather nice. This is by far the most satisfying part of game development: when you've invented a technique that you think might work well, and the artists have built a model using it, and then you finally get to the point where your code can draw their model, and wow! The artists did the hard part, but I can still feel proud of getting this sort of thing up on my screen. Individual blades of grass. Proper lumpy tarmac. Yummy.
This next shot doesn't look so good, though. Nice draw distance, and the two-layer texturing technique looks great close up, but off in the distance the grass goes horribly flat and plain green and boring. Not good at all, but we didn't work out how to improve it until much later on in the project. Notice also that we were having some texture wrapping problems, which caused the line you can see running along the top of the trees.
This shot shows off the addition of three-layer multitexturing, with the third layer being used to add the shadows. The fog was set a bit strangely, though, hence the washed-out colors. We were also starting to add some bits of race logic, as you can see from the debug text that is tracking your position and lap number.
Textured bikes, physics, and AI. No riders yet though. Without shadows, the bikes look as if they are floating at least a few feet above the track.
And here come the shadows (which work up walls as well as on the ground, as I took care to show off here). The colored bar at the top of the screen is a profiler, showing how long it is taking to render. In this case the bar covers exactly two frames, which means we were running at 30 frames a second even for such a simple scene: obviously a lot more optimisation was needed before the final release!
Riders were also implemented by now, but only the bike is casting a shadow (that's probably why I turned off the rider for the previous shot). Nasty jaggy track corner, too: we hadn't yet done any of the smart code that decides how much to tesselate each bend based on how big and how tightly curved it is.
We can do wheelies! The physics is coming along nicely. Horrible flat green grass on the far side of the track, though: we still hadn't solved the "how to make it look interesting in the distance" problem.
Donuts and skidmarks are working, too...
Rider animation is starting to happen, although crashes look pretty silly without any particles!
Eeek! The cockpit camera view was there, but we didn't yet have any proper artwork for it :-)
Back to the shadow renderer, we can now cast shadows from the rider as well as the bike. The shadows are way too dark, though, and there are some aliasing problems like the couple of very bright pixels underneath the top exhaust pipe (I fixed those later on by using a more sophisticated vertex shader).
Bikes can even cast shadows onto other bikes! I was very proud of that, but you hardly ever notice it in the actual game :-) The wheels are picking up dirt when you drive off the road, but we didn't yet have a proper texture for it, so I was using this green "dirt" writing as a test.
Nice environment map! The bike is a bit too shiny, though, and the rider is way too shiny. Later on, the artists controlled the reflections more carefully to make different types of surface use different amounts of the environment map.
This shot represents a huge breakthrough. I had implemented the dynamic level of detail on bikes and riders, which lets us draw large numbers of them with only the closest few using a high polygon count. For the first time, we were now able to put a full 20 bikes in a race without the game crawling to a halt. Shame that we only had one bike model built, so they all look the same, and the AI was still a bit too simplistic, so they are all driving along the exact same line, and the lighting is set wrong, so the bikes look way too dark, but hey: lots of bikes, lots of riders, lots of accurate shadows, cool!
This one looks almost like a finished game, even if it is still a bit rough around the edges.
This shot is from our "first playable" build, which is the first time the game was shown to the press. It featured a fully working race with a pack of AI bikes, but the overlay graphics were very different to the ones we used in the final game (thank God: that position indicator, lap timer, and speedo are all in such different styles, it was horribly inconsistent and messy looking).
This screenshot was used all over the place, and you can still find copies of it on websites today. It's a nice shot, but got kind of frustrating for us when it kept cropping up everywhere despite being so obviously unfinished. For starters, we still only had two bike models, so there are a lot of identical clones driving around! Also, the road and grass are still rather bland, with nowhere near the amount of skids and dirt we got into the final version. Finally, there is a giant beer advert over the top, which we later removed. Ah well.
And there you have it. There were still three months to go before our alpha deadline. Still lots of graphical polish to be added, fine tuning the physics and AI, and new effects such as the sun, particles, raindrops, and wet tarmac reflections. I'm not going to bother finding shots of these, though, because by now it is looking similar enough to the final game that this is no longer interesting.