A large part of my career has been spent doing things like physics, collision detection, animation and gameplay. One of the reasons that I ended up doing these tasks is because traditionally, these are not parts of a game that most people don’t want to touch. This is particularly true for physics and collision detection.
Graphics Programmers as far as the eye can see….
The real hot potato in games programming is graphics. Every bugger wants to work on this. Because everybody notices pretty graphics. It’s the first thing people see when there are screenshots of a game in a magazine or on a website. It’s what they see in a video. Everybody talks about the graphics. When the graphics are great, people keep on talking about them. They pick screenshots apart to see what sort of tech is being used for the rendering.
People love pretty pictures. Especially when they move.
Because of this, there are a lot of graphics programmers who are quite happy in their jobs. They don’t want to change because they have one of the most prized programming positions you can imagine when it comes to video games. Because these talented, bright, hard working programmers like their jobs, it makes it very difficult to break into graphics programming when you’re a new guy unless they retire, leave or are hit by a bus. There is simply no room for you.No vacant positions for you to fill – and when there are, it’s typically a newly hired experienced graphics guy who slots in.
So as a young, inexperienced programmer, you fill in the cracks. You try to bide your, waiting for a chance (assuming you want to do graphics) to get that slot. But for me, as much as I liked graphics, there were other things that held my interest. I love movement as much as I love pretty pictures. I love finding out why things move the way they do and having that in video games.
As such, when I was given the chance to work on animation, physics or collision; I jumped at the chance. There was very little competition for these roles, so breaking into them, even if you had no real experience was relatively easy.
No sane person wants to work on physics…
So why is that? Why are these such specialised roles? Why are they not as appealing as graphics?
For a variety of reasons, these programming tasks tend to be quite difficult. There’s the mathematics involved (not that tough if I’m honest) and then there’s the fact that, especially in physics; it’s not really a linear system like graphics or audio where you give it your inputs and get an output. With physics, especially when creating physics behaviours, you put in lots of inputs which can interact with each other in strange ways and they then produce a number of outputs.
I feel I should add; the mathematics in graphics these days can be quite complex too. I’m not saying that graphics programmers are stupid or lacking in skill. Quite the opposite is the case. It’s just that things like Physics, require a different kind of set of skills and mindset.
Then there’s the fact that, from my view, no bugger seems to notice when the physics is good or great. When the physics is bad, you’ll hear about it to no end. But when it all works as it should, it typically gets a passing comment and then nobody really seems to give a damn. Not because Physics and collision detection are unimportant; it’s just one of those things that people EXPECT to work well.
So there tends to be a lack of glamour or recognition when working on physics and collision detection. And I think if there’s one thing that all game developers love above all else, it’s the praise that the public gives their efforts. Why else would your typical game developer put up with the low pay, long hours, bad treatment, terrible food and lack of proper compensation? And why would they put up with all that, if the public isn’t going to really recognise of praise their efforts on a regular basis?
Buy that wasn’t so important to me. I just wanted ti work on video games. And if I got to merge that desire with stuff I was interested in outside of games? So much the better. When the chance came along to do animation, physics and collision detection – I jumped at the chance.
But wait a minute…
There’s a double irony in all of this. The first is that I didn’t just flunk mathematics at school. I pretty much flunked school as a whole. I was a terrible student. So the idea of tacking something that relies so heavily on mathematics should have seemed absurd. But you see, I love real-life. I love finding out about the world around me. I love finding out what makes machines work, and what makes the Universe tick. To me, rigid-body physics is part of that interest – adding realistic movement into games and giving a firm base to start looking into other things such as how cars or aircraft work.
The second is that I really started out doing graphics. Hardware acceleration on PC’s was in its infancy before I got into the industry, but 3D games were coming into their own. As such, if you wanted to make a 3D game, you had to know all about rendering triangles at a very low-level so you could raw whatever it was you wanted in your game. I spent a lot of time writing a very fast, efficient software rasteriser which was part of my demo when I went for my first job interview.
I had spent many a long evening and weekend after my day job working in construction, teaching myself about 3D graphics from as many books on the subject that I could get a hold of. The end result was that, not only was I really experienced at making a CPU do things fast and was well versed in matrix and vector algebra; I had a fairly good understanding of 3D graphics.
But even though I didn’t get to work on graphics for a long time, all of that experience prepared me for my career. I understood the value of doing difficult tasks and knew not to be afraid of them.
In short, I came to do physics, animation and collision detection because nobody would let me do graphics and I’m quite possibly insane.