Home Program Presentations Resources Industry Education Events Contact Us
     
Game Industry Careers

Engine Programmer

William Denniss, Big Ant Studios

William Denniss

I’m a games engine programmer.

We take the assets or the art that is created, like animated models and levels, and get them onto the device as efficiently as we can.

A game has an engine component, which is the code, and the game logic. The engine side handles all of the rendering, the drawing, and the sorting, whereas the characters fighting will be on the game logic side.

"Being persistent definitely helps, but if you’ve got the drive to do it that should come naturally".

Listen to the interview:

What do you do?

In a way what you do day-to-day depends on the stage of development. If you are developing a whole raft of new features, then people will get assigned particular bits to work on. If you are in maintenance mode, then you are generally fixing bugs. As the game programmers discover bugs or as the testers uncover problems then it will be up to you to fix them.

How did you get to where you are today?

I did a university course in Brisbane. Then I worked in the IT industry for a while. I’ve always been interested in games, and I was hacking away and developing my own games in my spare time. Then I moved to Melbourne and saw the Big Ant site and decided to apply. I sent in some of the games I’d made in my spare time and that was my pathway, I guess.

I did a bachelor of Information Technology at the University of Queensland, which had a substantial component of coding. It had other general IT things like databases as well, but I was much more interested in the coding side. That’s why I ended up in this sort of thing.

What skills are necessary for you to do your job?

You need a good foundation in maths. You need to know the hardware quite intimately, and it’s limitations. I’m working on the play station portable at the moment. You need to know how it works and know how to optimize things for that hardware. Different hardware will have different optimizations. Typically the engine will be multi-platform so you have the basic engine, and then the platform specific optimization, and it requires knowledge of those systems.

You definitely need a lot of maths. You need physics as well. A lot of engines will have a physics engine as part of it. It depends how the game is broken down. Sometimes the physics might be handled more on the games side, but if you are using a proper physics simulator then it’s definitely part of the engine requirements. The maths comes into it for the sorting, or to optimize your display, and that sort of thing, These require mathematical principles.

To be an engine programmer, the programming principles you need to know are the same for general programming. The industry is mainly C++ so you need to know C++ ( however, programming experience in any language is useful as fundamentally most are quite similar). Once you’ve got those skills, regardless of where in games, you still need that basic 3D knowledge.

When you work in large teams you need to know how to interact with people, and that’s where having worked on team projects in University comes in handy. It gives you valuable skills.

Writing skills also come into play, as you might need to write a Technical Design Document. It accompanies a GDD (Games Design Document) which is part of the submission to the publishers. The two documents work together. The GDDs are developed by the designers, and the TDD (with all of the technical requirements) are typically designed by the Engine programmers.

How important was your education/training?

To get to this position, you’d definitely have to have some sort of tertiary education. It teaches you some of the basic programming principles. Even if it’s not a games course in particular (mine for example wasn’t), having that foundation is very important. If you are completely self-taught, often there are fundamental things that you don’t quite realize. I’ve always just tried to learn as I go, but having some formal teaching means that you can apply it in a way that meets the standard.

The games industry moves very fast and reading and listening to other people helps you to keep up to date with it. You always need to make sure you understand what’s going on in the industry.

Where do you see your career going?

I’ve been here about a year and half, and this is my first games company.

At the moment I’m just hoping to pump out a few titles and get something under my belt. Then maybe I’ll look at the world-wide market and perhaps work in games overseas one day. But at the moment I’m just focused on getting a few games out.

If I wanted to climb the career ladder, it might be managing a bigger team or bigger project, or going into general studio management. But to be honest, I haven’t really thought too much ahead. I just really want to get a few games out first. I enjoy coding, so that’s all I want to do at the moment.

What advice would you give to someone wanting to enter the games industry?

Having a passion for games is the number one thing – playing and making them. Making games in your spare time or through a course is the biggest thing to do. If you are learning at the same time, say a university course, always be making games and making demos. I guess when we are hiring people, if someone has a bunch of demos that’s a really key factor. We can actually see work that they’ve done. Work on collaborative projects with other people, probably for no money or just a small amount, just to get your name out there and build some contacts.

If you really want to get into engine programming, you’d probably want to hand code an engine, but having experience in any language helps. There are a lot of ways you can build games without getting into the really low level bits. Use pre-existing 3D Scene Graph. That’s a way of finding out how 3D scenes work and how you can make a 3D game. And then later you might be placed in the position where you’re the one that’s actually implementing something similar for a specific game/platform.

I probably wouldn’t recommend diving right into the low level code. You need to know how the high level stuff first, so start with 3D Scene Graph and just make a game using that. Alternatively, a valid (but harder) low level approach is to grab OpenGL and its demos, and start from there.

Being persistent definitely helps, but if you’ve got the drive to do it that should come naturally.