In this interview, we speak with Adrian Tung who is based in Kuala Lumpur, Malaysia. Adrian is one of the earliest Zappers on the coding team. He joined Boomzap in late 2006 as a Game Programmer and now he helps the team out by writing code that makes the games run well and builds tools that the Designers and Artists use to be able to work efficiently.
Can you tell us a bit about the game industry in Kuala Lumpur? What kind of history does your hometown have in game development?
Frankly, there isn’t much of an “industry” overhere. There are a few small indies, some art or porting studios, but no realfull-fledged game development workhouse. A few years ago we had a bigger industry — Gamebrains, Phoenix Games Studio — but the rules of engagement were very different then.
What course/degree did you take in college? While you were studying, was there an option for you to take any classes regarding game programming or video game development?
I studied Computer Science. That was way back in 1997, when a course for game development was unheard of and multimedia was just beginning to kick off. By that time I already had computer programming and some game design and programming knowledge; I just took the course for the formal education aspects.
The only remotely game-related course showed up during my fourth semester when a new and upcoming lecturer introduced OpenGL programmingin his Computer Graphics course. I obviously snapped that up as soon as it was available. But besides that one course, it was all fairly bog standard as far as Computer Science goes.
How long have you worked in the game industry? How did you learn about Boomzap?
I began my career in games shortly after I graduated. My first job wasn’t game-related but due to the location of the office, I found out that there was a game development company nearby, called WebWorksInteractive. They were working on a Chinese Wuxia-based MMORPG and it was the best chance that I had to get into games, so in late 2000 I joined WebWorks as a game programmer. This was also where I met Allan Simonsen, who was the tech director in charge of the game there.
Later WebWorks folded for reasons I will choose not to indulge here, but most of the people working on the project moved over to and started a new company named Phoenix Games Studio, where we eventually completed and released Fung Wan Online. During the game’s development period we had invited Christopher Natsuume, who was already an established game designer and producer, to have a look at the game and give his advice to the team.
So that’s the story of how I got into the game industry, and how I met Allan and Chris. And since they are the founders of Boomzap, that’show I got into Boomzap.
What does a day at Boomzap look like for you? How do you spend your time?
My typical day is a mix of family and work. It is fairly routine and predictable depending on whether it is a school day for my daughter, a public holiday or a school holiday, but typically I will spend the morning working outside while my daughter is at kindergarten, then return home and continue to work after lunch until the end of the workday.
As for work itself, on normal days it will be a mix of checking emails, having discussions with colleagues over chat software (we usedto use MSN Messenger but are now on HipChat), think about new features and solve problems. Of course, as a game programmer the bulk of it all involves coding – whether actually writing it, or formulating plans, strategies and approaches to implement a feature or solve a bug.
At the end of the day, it’s time to make the daily builds for the projects that I am involved in and upload them for colleagues and thepublisher to download and test.
Boomzap works in a virtual environment – how do you take the most advantage of the flexible schedule and work at home environment? Does it pose any special challenges?
I try not to diverge too much from the typical office workday – i.e. start in the morning, finish in the evening with a lunch breakin the middle – so I don’t really take as much advantage of the flexible schedule as some others do.
But it’s the small things that count. I can go for a longer lunch if I have something to do, like pay certain bills that can’t be paid online or make a stop during lunch time to buy groceries when supplies at homeare low. If the weather and timing is good, I also take my daughter out for awalk in the evening.
What is the most challenging aspect with being a Game programmer?
For me, I guess it all amounts to what I call “keeping itall together”.
In the Boomzap team structure, although every team member i sequally important regardless of the role, it is the game programmer that technically keeps the physical project (i.e. the build) together. The code actsas a hub that supports the game assets and the game script/data/logic; the programmer implements the features needed by the designers and artists to get certainthings to behave the way they want it; and the programmer is the one to investigate problems and find solutions for situations faced by the designers.
Keeping it all together is the greatest challenge of being a game programmer. While you’re juggling with implementing features and fixing bugs, you must also be aware of what everyone (especially the designers) are trying to do (as opposed to what they say they want to do).
So being a game programmer means being a programmer, a designer, a tester, a tech support guy, a troubleshooter and a problem solverall at the same time.
What do you think are the key traits someone needs to have in order to be a great Game Programmer?
Besides the obvious programmer traits that every great programmer needs to have, a Game Programmer must also be a good Game Designer.This means experience in game theory and game mechanics, game balancing and so forth.
This is because the Game Programmer must be able to understand the game he is building and how to best build it with the necessary tools and features for the rest of the team, especially the game designers, to work with.
It is all too easy to just mindlessly do as told, e.g. “Iwant you to make it so that when I do X, Y happens” but often that just leadsto shoddy designs, buggy code and over complicated implementations. A good Game Programmer must be able to think like a Game Designer as well, and should be asking “why do you want Y to happen when you do X?” He needs to analyze the situation from both technical and design point of views, to see if the implementation jives with the intent or not. Strategy vs Tactics. Macro vs Micro. Big Picture stuff.
Which games have most influenced you as a game developer?
I’m an “old skool” gamer, and have been brought up on old classics like the Ultima series, Star Control, Baldur’s Gate, Fallout (and Wasteland), UFO: Enemy Unknown, even old text-based adventure games where you actually type what you are doing (“go left”, “open chest”, “get vial”, etc).
One specific game that I fondly remember is Omega, a futuristic cybertank warfare game by Origin Systems. In that game, you actually had to write code in order to program the AI of your cybertanks and have them compete against rival tanks. The game even had an advanced multi-tank scenario where you needed to have up to four tanks coordinate with each other. And it was alot of fun, because if you could write kick-ass code that could intelligently maneuver your tanks around the battlefield, you’d rule the game.
What advice do you have for people who want to work in games as a programmer? What have you learned from your experiences when you were applying for game industry jobs?
The most important thing is to have passion in making games.Not just computer games, mind you, but games in general. This passion, as wellas having a broad knowledge in game mechanics and game design, is the mostimportant thing that sets you apart from all the other average Joe programmersout there.
Why would a prospective employer hire you over some other highly-regarded graduate with 1st class honors who aced all his programming classes? If you played D&D and tried to make your own homebrew games you understand RPG mechanics and the game-balancing aspects of RPG design. If you play sim and tycoon games you’ve understood game-level economics and what worksor doesn’t work in such games. If you play adventure games you’ll know how these games generally flow, what makes them likeable and what expects doplayers expect or hate. In short, you have more practical experience in the game industry than someone else who’s primarily studied theoretical things like relational databases and project management which, while are important, are no match for pure enthusiasm and actual field knowledge.
In short, if you want to succeed as a game programmer youmust also be a good game designer who loves to play games and understands whatmakes them tick.
I heard your nickname is ‘Bags’ – where did that come from?
Outside of work, one of my hobbies is photography and as amateur photographers will surely know, one cannot have enough bags. And I dohave quite the collection.
So once upon a time on a photography forum that is no longer active, my forum avatar was the Batman but with his bat symbol replaced with thelogo of a renowned photography bag company, and I called myself The Bagman.
When I joined Boomzap that was my MSN Messenger handle and eventually people shortened it to Bags.