It’s been kind of strange getting paid to make videogames everyday. Even after six months it still doesn’t really feel like work. By work I’m referring to something you go to everyday wishing you were off doing something else, counting down the clock until you can go home. Granted, I’ve not had a huge amount of jobs like that, but I’ve done enough to know I never want to do something I hate just for the pay-check ever again. And it’s looking increasingly like I won’t have to; an awesome prospect at the age of 25. So yeah being a game developer is pretty great…
Of course it’s great! Don’t you just play all day?
This is the most common thing people say to me when I tell them what I do. My response to this is mixed. Firstly, as a typical self-deprecating British person who feels the need to instinctively defend “How hard I’ve got it” compared to everyone else, it’s actively difficult to admit that I actually enjoy my job and it isn’t that much of a grind. Eventually I’ll typically end up agreeing with whoever’s said this as it’s easier than explaining what I actually do every day…
Because the truth is actually yes, I do play all day.
What I spend most of my time doing
When I say “play” I don’t mean it in the sense everyone assumes. For a lot of people the concept of games development is identical to that of playing games. At this point in my career I can hardly condescend to people who think like that. After all, I didn’t know much better a couple of years ago. The main thing to note here is that just because you like playing games doesn’t mean you’ll like making them; there’s a reason this is pretty much page one in every games development textbook. The kind of playing I get to do everyday is abstract problem solving. If you don’t find problem solving fun, or if you just straight up suck at it, then games development is not fun at all.
I’m a programmer so my typical day contains a reasonable amount of the following…
1. Lovely, glorious Maths
Maths. It’s the most important skill I have but I completely understand if you don’t care.
- Trigonometry – Angles! Triangles! Everything in games is made of triangles so this is kinda key. Sine waves are also used for literally everything so you need to know all about those.
- Vectors – Want to move something in 3D? You’ll need to know all about these bad boys
- Coordinate systems – Do you know what spherical coordinates are? You need to.
2. Coordinating with artists
Maths is great and everything but every now then it’s nice to have some graphics. Who’s good at graphics? Artists! There’s a lot of communication needed between coders and artists in order to incorporate all their characters, animations, effects and whatnot into the functioning game. These kinds of tasks are typically not that tricky but artists are pretty great at throwing you weird problems to solve too (see the below giraffe analogy). They’re typically the first people to test all of the buggy code I’ve written and subsequently act as convenient scapegoats for having broken something.
I mean, this definitely wasn’t my fault
3. A cheeky bit of PR
As a small company, we do a lot of our own advertising through twitter. I don’t spend a huge amount of time doing this but there are some great moments which need to be made into vines immediately. E.g. when anyone does anything in VR (sound is key)
It also helps that I see Twitter as a fun game I play on my phone rather than a marketing tool. We’ve genuinely got a really good amount of interest in our current game Late Night Shop by tweeting just a few times a day so it’s well worth the effort.
4. Some occasional programming
This is a main area in which small indie companies like mine differ from the big guys. In bigger studios you have far too specific job roles like “AI Programmer” or “Graphics Programmer”. I’ve got to say, I’m so glad that I ended up with an indie job where you get to do a bit of everything. It’s kinda difficult to get bored when one day you’re working on some code to govern patrol routes for AI, and the next you’re writing an interactable radio tuner for a virtual car stereo that allows you to flick between Inspector Gadget and Scooby Doo theme songs.
It’s actually quite tricky, you know.
Game development is fun job but it’s still challenging. We have deadlines just like everyone else on the planet. Naturally, the existence of deadlines means things are going to go wrong and stress everyone out at some point. For me, my only source of stress in this job are impending deadlines. In terms of actual coding tasks I’m relatively confident that I can find a solution to most problems. Now that may sound awfully arrogant but most programmers can find a solution to a given problem, it just might be absolutely horrible (e.g. my woeful “shotgun raycasting method”). The stress comes from trying to find a solution that fulfils these criteria
- Solves the problem (obviously)
- Doesn’t take too long to do it
- Works in every practical scenario it’s likely to be used in
- Bonus – Make it as generic as possible so you can reuse it for similar problems
Point (1) is the easiest. Everyone can think of a solution to a problem. If someone asks you to gift wrap a live giraffe there are better or worse ways of going about it. You, a keen problem solver who rushes into something head on without much thought would, under pressure, probably start at the feet and wrap all the way around until you’ve covered each leg, the torso, then all the way up the neck from the top of step ladder. Great. You’ve gift wrapped a live giraffe. It’s taken you three days but job done, right…?
Well let’s have a think about points (2) and (3) for a second. To start with it’s taken ages. Also what if it moves before you deliver the gift to the lucky recipient? Paper and cellotape would go everywhere and the surprise would be ruined, not to mention it’s December the 27th and Little Jimmy isn’t getting his giraffe on time. This is the point where a seasoned safari animal gift wrapping specialist (a lead programmer in this analogy) comes in. Very quickly and asks you why the hell you didn’t put the thing in some kind of box first, then wrap it. You, the keen but naive junior safari animal gift wrapper sheepishly wonders why they didn’t think of that and completes the same job in 10 minutes (best estimate based on careful calculations) and you could reuse the same system for delivering another safari animal next year. Boom. Little Jimmy is getting a pretty sweet Christmas present this year.
I think we can all agree that my flawless analogy illustrates that the most obvious solution is often the worst in my day to day work. I’m getting better at not just rushing into the first solution I think of but it’s often tricky not to when you’ve got to get something done urgently. This is the kind of thing that comes with experience I guess!
Being a game developer is great fun but it’s hard work (sometimes). I’d highly recommend it to anyone who likes fixing things, maths and perhaps even the occasional videogame.
This post is intentionally kind of abstract. In future I’ll go into stuff like getting used to the job, shipping my first game, and how bringing my own game to the company worked out for me.