Teacher Profile: Mike Cooper
The newest member of AIE Adelaide’s teaching staff, Mike Cooper arrives after years working at some of Australia’s best known games development houses.
And, in addition to his time spent working at RAtbag Games and Krome Studios, he also boasts a Ph.D in Physical Oceanography, of all things.
Mike’s just started his first year teaching game programming to AIE’s second year students in Adelaide. We asked him to tell us all about himself.
When did your interest in games start?
I've been interested in games since I was a kid. Pac Man and Space Invaders started appearing in arcades when I was about 10 years old, and had me hooked from the first time I saw them. Shortly after that we got a BBC Micro and I started writing my own attempts at games. I picked this hobby up again at University when I bought a Commodore Amiga, and got quite serious about making games as a one-man programmer/designer/artist team. What started out as a hobby saw me with a publishing deal lined up, which unfortunately fell through when Commodore itself collapsed. At that point I gave up on game development for a few years, and started playing around with graphics programming and ray-tracing instead.
At what point did you think you might be able to pursue a career in making games?
I was playing around with physics and graphics programming, and teaching myself C++ at home when I heard about Ratbag Games in Adelaide. This was the 20th Century still, so I heard about them via the radio and newspaper! I lined up an interview and took my PC in to show them what I'd been working on. This was the first time I'd considered that game development could be an actual career with a salary, rather than a hobby where a lucky and talented few struck gold. I had a brief career as an applications programmer for a local tech startup before Ratbag were in the position to offer me a job.
How did you end up with a PhD in Physical Oceanography?
I did a Physics degree initially, and I've never regretted it to this day. It was brilliant learning about the secrets of the universe, even if it wasn't necessarily applicable to anything practical. During my final year, Edinburgh University had started up its Computational Physics department, with the radical idea (at the time) that you could substitute actual laboratory work for simulated experiments on a computer. I hadn't done a lot of programming at this point, but this really appealed to me, and I got to do some pretty cool projects with some very early parallel computers.
After graduating, I realised that there weren't a lot of jobs for physicists, and went back to University for second helpings. The two options available to me were more Computational Physics, or Physical Oceanography, using computers to model the world oceans for weather forecasting and climate models. I went with the Oceanography PhD out of a desire to contribute to the scientific community's efforts to save our planet from the threats of climate change.
What’s the through-line from climate research to games programming?
The main link is the programming. Physical Oceanography sounds all very active and "swimming with dolphins" exciting, but in practice it's not very physical and there's minimal contact with the real ocean. You're just sitting in front of a computer, coding, doing differential equations, and looking at graphs.
I became a much more competent and confident programmer during my PhD, and also a proud owner of a Commodore Amiga, and started putting games together in my spare time. Oceanography wasn't grabbing me in the way I thought it would. The overall principles were interesting, but I could never really get excited about slight temperature variations in blobs of water in a simulated Atlantic ocean. Programming games at home, on the other hand, was an absolute blast, right down to the details of debugging and fixing the most mundane problems.
You worked for two of the more notable Australian development studios in the 2000s (Ratbag and Krome). What was the local dev scene like back then and how has it changed since?
The game dev scene has changed massively during my career. I'd say the biggest change is the emergence of casual games and indie developers that occurred during my time at Krome. When I started in 2000, game development had incredibly high barriers around it. Anything that wasn't 3D was considered laughable, with a few exceptions like the hugely popular Diablo II. To develop on the lucrative platforms like PlayStation 2 required renting expensive devkits. Any kind of meaningful game development required a team of 20 and the resources to support them, usually through a publisher who called the shots.
The following generation of machines saw team sizes and budgets increase even further as more artists were required to keep up with the growing graphical power of the Xbox 360 and PS3.
Then suddenly, Farmville burst this bubble and showed that a small 2D game could be hugely successful. The iPhone followed with a distribution platform for smaller casual games that completely bypassed publishers. For years, the industry had been discussing how to make games that appealed beyond the limited demographic of young men, without really making much progress. We'd also been paying lip service to the notion that good game design trumped flashy graphics, without really acting on that belief. The casual games revolution hit both of these targets effortlessly, and suddenly there was a parallel market for games similar in scope and scale to the old Commodore Amiga days, where small teams of enthusiasts had a chance at commercial success.
The casual games scene has evolved since those early days, with phone games now packing the technical power and flash of old PS2 games and beyond. The appeal to a broad demographic and the emphasis on solid design has remained though.
Releasing a game has become a completely different experience too. It used to be the end of a project, and often a huge anticlimax, where you'd ship the final build, send it off to be printed onto discs, and wait for reviews in a few weeks. Now the initial release is just the start of a product's lifetime, as you get immediate feedback from players and can start work on updates straight away.
How did you end up at AIE Adelaide this year?
I'd been involved on and off with the Adelaide campus last year, helping out with interviews, doing a bit of guest lecturing and so on. I was offered the role of second year lecturer, and had to think long and hard about it. I'd really enjoyed the small amounts of teaching I'd done so far, and had been a programmer for 17 years at this point, and decided to make the jump. I've always enjoyed mentoring other programmers, and have supervised a number of undergraduate students and one PhD student as an industry mentor during my time as a games programmer. I've considered teaching as an option for a while now, and an opportunity like this was too good to pass up.
How do you think your career in games development will inform the way you teach?
I'm a self taught programmer, so I've already taught myself the topics covered in the curriculum. This gives me a good grasp of which concepts I found difficult to get my head around, and how I tackled them. My time as a games programmer gives me a context for the topics we cover, and how they apply in a real development environment. I'm a big believer in teaching using concrete examples to anchor abstract concepts. Concrete examples fit into the human head so much easier.
What advice would you give to anyone thinking about getting into coding right now?
Do it! There's never been a better time to be a programmer, and it’s only going to get better. As long as you have an internet connection, all the world class tools like Unity and Visual Studio are available for free. Online tutorials and forums have never been more helpful, and there are plenty of working examples around to pick apart and see how they work. Programming is only going to become more important and relevant in the future, and is starting to be seen as a core skill similar to reading and writing. There's been a lot of mystique around programming in the past, as if it's an incredibly hard thing that only a strange few who talk on ones and zeroes can do. That's not true. Computers are less alien to us that they used to be, as our work and leisure activities are increasingly carried out on computers. Not everyone will be a natural at it, but I believe anyone can learn some basic programming techniques, especially if they have a concrete achievable goal to make something that's useful or fun to them. Make a small game. Write a script to organise your photos on a website. Write a little programme to help you quickly roll lots of dice when you play Dungeons and Dragons.
If anyone tells me they're interested in programming, I tell them to download Unity and play around with it. It’s a great environment for picking up the basics and taking them as far as you want to.