Don’t code today what you can’t debug tomorrow.

Moving To The Country, Gonna Eat A Lot Of Lemons

Posted: April 17th, 2017 | Author: | Filed under: Hermit, Projects, Soapbox | 3 Comments »

What is the most resilient parasite? Bacteria? A virus? An intestinal worm? An idea. Resilient… highly contagious. Once an idea has taken hold of the brain it’s almost impossible to eradicate. An idea that is fully formed – fully understood – that sticks; right in there somewhere.

– Cobb (Inception, 2010)

That idea for me was to drop everything, move out into the middle of nowhere, and make games out of nothing. It’s not a new idea. It’s been stewing around in there for a long long time. When Gameloft Auckland closed its doors, that provided the impetus to move it along. I spent a good year tossing it over, discussing it with peers and (former) colleagues. The general sentiment was, “If I could, I would.” The catch was, of course, that we are never really truly prepared. Sometimes you have just got to take the plunge. So I jumped. What’s the worst that could happen?

A few were tempted to jump with me. There were quite a few late night discussions on where to go, what to do, how to set up a community of indies so that we can feed off each other’s creative juices. We even had a big road trip down to Taranaki just to scope out the place and see how comfortable we would be there. Reality has a way of crashing down on dreams, and that happened for many of my compatriots. They are still keen to come down in a couple of years when their earthly affairs are sorted, but for now, I am the pioneer.

So… the idea of moving out here is of course for the cheap rent, fresh air and uninterrupted coding time. I scoped out the cheapest places I could find, and spent a few days down in Hawera to look at places. Some were downright nasty, while the good ones were snatched from under my nose mere hours before I was due to inspect them. The very last place that I was scheduled to look at, however, wasn’t too shabby. It was a spacious three-room house with a reasonably large garden and yard. It was old, and needed some cleaning up, but certainly serviceable. The other catch was that it’s out in the farmlands 20 minutes drive from the city. It also came with a very bountiful lemon tree. That was the sign. Life literally gave me lemons. I took the deal—$150 a week… eat your heart out Auckland!

The move itself went fairly smoothly, but there was a lot to take care. It appears rural folk take great pride in their ruralness (rurality?). I had to sign up at the post office for Rural delivery. Internet is not through fibre or even copper lines, but via Rural Broadband (which is really just glorified 4G with a dedicated cell tower). If it tickled your fancy, you could even fill your car up with Rural Petrol. Then there was the war on the creepy crawlies. With my trusty spray can and dustbuster, I expanded my territory from room to room, eventually claiming the entire house. There are still guerilla insurgents every now and then, but nothing that can’t be shocked and awed. The garden is still wild territory though, but I have a good excuse…

In the two weeks that I’ve been here so far, not one, but two cyclones (or as they like to call it in the news, cyclone remnants) have rolled lengthwise through New Zealand, causing flooding and closing highways across the country. My choice in lodging was validated, given that the house was in no danger of flooding, and I didn’t need to get evacuated. How traumatic that would have been! So while it wasn’t the most auspicious of signs, there was plenty of silver fresnel.

One other thing that killed a lot of momentum in my personal efforts, was some contract work I’ve taken up. Before I left Auckland, I made arrangements with a few choice game companies to take up contract work from time to time, with the stipulation that the work either be lightweight (~2 days a week) or short (~2 weeks). As it turned out, one of them wanted me to start on something right away. So for the first two weeks I’ve been here, that has been the main focus. Looking on the brighter side of things, at least it gives me spending money to cover the cost of the move and settling in.

Nevertheless, having committed to my course, I’ve started a dev blog to track my progress which you can access by clicking here. Unlike this one, that will be focused on the project itself, with daily updates and weekly thoughts, which is why I have not been talking much about it here. Right now, it’s mostly full of excuses for my lack of progress, but hopefully things will kick into high gear once I’m settled in.


Job Interviews for Game Programmers

Posted: January 24th, 2016 | Author: | Filed under: Soapbox, Tutorials | No Comments »

Wow, 2 years without a post. Time sure flies when you’re having fun! Since I happen to know that a lot of my friends and former students are currently partaking in the great job hunt, I figured I’d write on this, given the large number of interviews I’ve ended up conducting over the years.

The most important thing to realize in interviews is that time is precious. During this time, the interviewer has to find out as much about you as possible and figure out where you might best serve the company. There is an objective behind every single question asked, no matter how trivial or complex. They do not expect you to be able to answer every question flawlessly, but instead seek a better understanding of your personality, aptitude and experience based on how you tackle the problem. So do not panic if it seems you are drowning in the unknown. Just breathe in and embrace the liquid mayhem.

There are 4 basic qualities that I personally look out for in interviewees. They are not the guidelines dictated by any specific company, but have slowly evolved in my head over time. These are them in order of importance.

Communication

It is vitally important that you are able to express your ideas clearly, and understand what is being conveyed to you. If you do not speak the native language of the company well enough to be understood, that is a blocker.

More than that, the way you speak reflects upon the way you think, regardless of any language impediments you might have. A good interviewee would speak clearly, concisely and to the point. A bad one will ramble on, beating around the bush before eventually (or sometimes not at all) getting there. This is not a high school test where if you hit the right keyword, you get the marks because it is in the marking scheme.

Often, I will ask a deliberately vague question to see if the interviewee will clarify the problem parameters, and if not, which direction they go in and what assumptions they make.

Seniority

One of the main tasks of the interviewer is to figure out what level you are at, how valuable you would be as an employee (i.e. how much they should pay you), and whether you would be suitable for a lead role. From simply talking with many people, I’ve come to recognize that there are certain basic qualities that allow easy categorization regardless of discipline (i.e. this works for artists, producers, etc. as well). As much as people try to over-represent themselves during interviews (from either ego or deceit), these are aspects that simply cannot be falsified. Job experience and academic achievements do not factor into this assessment.

Non-starters are people with basically zero aptitude. They fail due-diligence questions like “What is a dot product?” or “Describe inheritance in OOP.” I have encountered Masters graduates who could not write a single coherent line of code. Sad day.

Juniors have a good grasp of the concepts and are eventually able to solve problems. They will often fail to consider edge-cases and do not necessarily grasp the implications of the smallest of their decisions, at least until it is pointed out to them. However, good juniors are humble, eager to learn and are reasonably good at solving puzzles.

Mid-level engineers are insufferable because they know just enough to be dangerous. Their hallmark is over-thinking and over-engineering. They will often have elaborate and complicated designs to circumvent pitfalls they encountered in the past while opening up a dozen more. They look for “tricks” in the interview questions and try to pre-empt them, often fouling up the basic answer in the process. They almost always think they are much better than they actually are, not necessarily through hubris, but because they haven’t yet developed an appreciation of the breadth of things they are unaware they don’t know. They write know-it-all articles, much like this one.

Seniors are hard to find. They have developed a consistent internal framework through which they can solve the majority of problems they have not encountered before. They have a holistic sense of the game development process and are empathetic to how their choices affect the project, and how solutions and/or compromises can come from other disciplines. Their solutions may seem magical or out-of-the-box to others when in fact, they simply have a bigger and better organized box. When they encounter problems they have no immediate answer for, they get excited because it is a learning opportunity and a chance to expand their box even more.

Fit

Most companies are looking to fill a gap. We need somebody to do X and X and X. The larger the company, the more specialized this would be. This is because the added depth adds a lot more value to the company than just another generic programmer would. If interviewing a graphics programmer, I would expect him/her to write better shaders than I can, and maybe I can pick up a thing or two from them during the interview if I am lucky.

Smaller companies prefer general programmers because they can tackle many different tasks and generally solve the problem with a satisfactory result. They are the most cost-efficient way to get the game out of the door. This is what results in the difference in quality (and budget) between indie games and those coming out of the mega-corps.

Sometimes during the course of the interview, it will become apparent that your current skills do not match the niche they are trying to fill. At this point, it is a good idea to point this out and declare yourself unsuitable for this particular role. It would spare the interviewer the awkwardness of figuring out how to break it to you gently, and displays a maturity and clarity that will bear you in good stead when a position that does fit you opens up.

Passion

Cynics define passion as a direct measure of how little a company can get away with paying you to do the most amount of work. This is not incorrect. In the end, it all comes down to business. In a creative industry like game development, a heavily-self-motivated employee will be a thousand times more productive than somebody who’s just doing a job. Also, they would be less likely to leave at the first sign of green pastures, particularly in the middle of a project.

However, passion is much more than that. Why do you want that particular job in that particular company as opposed to anywhere else? What should the company do to keep you happy? What can the company do to make you deliriously ecstatic? If your answer is “More Money!”, I would recommend a job in the financial sector. Game development is not for you. Otherwise, being clear and truthful about what the company wants out of you, and what you want out of the company will make the relationship infinitely simpler and easier to manage.

Conclusion

The interview process is a two-way street. Both parties are trying to find out if there is a way for them to reasonably work together. Over-representing yourself is a common mistake as it murkifies the communication. (Besides, we know when you’re naughty!) I believe that for interviews at least, being honest and upfront (within the constraints of any NDAs) is the best policy. You don’t just want a job. You want a job that will make you happy, and will make your future employer happy to have you.

Here are some common interview questions. Can you tell which qualities they are trying to measure? (hint: it’s often more than one)

  • Why do you want to join our company?
  • Describe your proudest achievement to date.
  • What’s the biggest challenge you’ve encountered so far in your career? How did you overcome it?
  • What games do you play? What do you like about them?
  • What is your opinion of overtime work?
  • Please write some code that does this ridiculously simple task. What trade-offs did you make? How can you improve it?
  • What’s the difference between a vertex shader and a pixel shader?
  • You need to transport a dog, a cat and a mouse across a river. You can only carry one animal with you in your kayak at a time. You can’t leave the dog alone with the cat. You can’t leave the cat alone with the mouse. If you put the cat in the kayak more than twice, it will scratch your eyes out. What’s the minimum number of trips you need to make to get everybody over to the other side?
  • How would you deal with an unreasonable supervisor making stupid (in your opinion) decisions?
  • Have you any experience with Shaders? How about multithreading? Pathfinding? Networking? Physics? UI? Anything? Anything at all?
  • On a scale of 0 to 9, rate your C++

C vs C++ for Game Engine Code

Posted: May 12th, 2013 | Author: | Filed under: Soapbox, Tutorials | 2 Comments »

Until a year or so ago, I was a C++ purist. This was fair, because as a game programmer, generally you would want your code in C++ 99% of the time. The object-oriented style it promotes helps a lot in scalability and code management. Any super-time-critical code would mostly be handled by the engine anyway. Also, as a superset of C, there’s technically no reason why it can’t do everything that C can do. However, coming across game engine code written in C, most notably in HGE, Orx and RK, was an eye opener. There is a poetic simplicity and succinctness to the code. Just reading the code alone makes you instinctively feel that it should be faster, even if just by a smidgen. Much of this past year was spent ping-ponging between the two concepts, trying to figure out which one I like better.

Why C++ instead of C

Readbility

Namespaces are wonderful to have. Ultimately all you want to do is prevent naming collisions. C gets around this by generally having absurdly long function names like  BlahBlahEngine_GetIrritatingObject() which ultimately makes the code harder to read. In C++ GetIrritatingObject() is simple and to the point.

Operator overrides are also very nice when used sensibly. Case in point: which is easier to read?

//C Code
Vector a, b, c, d;
Vector_Set(a, 1, 2, 3);
Vector_Set(b, 3, 4, 5);
Vector_Set(c, Vector_Add(a, b));
Vector_Set(d, Vector_Mul(c, 3));

// C++ Code
Vector a(1, 2, 3);
Vector b(3, 4, 5);
Vector d = (a + b) * 3;

This readability can also be a detriment if badly used, because the programmer is not made aware of the cost of each operation. This, however, can be circumvented by simply having more alert programmers! 😀

RAII

Resource acquisition is initialization. This is one of the little tricks used by smart pointer classes to ensure that memory is cleaned up after them. In general, I don’t like smart pointers. Sure, they are a convenient way to manage memory, but abuse of them tends to lead to bad architecture (more on this later). However, I do like to write almost all my classes using the RAII paradigm. While it has the side-benefit of making your code exception-safe, it also encourages what I consider to be good architecture—in that everything is allocated at once (and therefore most likely in the same area of memory), and no strange allocation happens through different code paths.

C generally uses Init and Deinit functions. These are not exception-safe (i use the term liberally), so if your application gets shut down unexpectedly half-way, it will most likely leak memory. Some OS’s might sandbox you, but not all do.

Templates

Love or hate them, they are still useful for all sorts of things, most notably container classes. Their shortcomings are well documented—hard to debug, inconsistency between compiler implementations, etc. I equate them to C macros, but with more use cases and potential problems. Overall, they are a net gain, but I would still shy away from STL/Boost unless I know their exact implementation. I tend to use these more for my own custom classes, but the moment ugly template magic starts happening, I take pretty much any other alternative I can.

Why C instead of C++

Object vs Data Orientation

We all know object oriented code. After all, it is what was promoted when we were in school, even though at the time, we all secretly wanted to write everything in one big function and be done with it. The structure it enforces produces very scalable and flexible code. It also had the benefit of localizing all data for an object in the same spot of memory, which was and still generally is a good thing.

Data oriented code is the new (relatively speaking) paradigm of envisioning code modules as data manipulation. You take in an input and produce an output. By cleverly organizing your data in a somewhat unobject-like way, you can have the same operation acting on mass amounts of data that happen to be all located sequentially next to each other. As a wise man once summarized, you organize your data as a struct of arrays, rather than an array of structs. The benefit of this is that your data is more cache-optimized, and also lends itself more easily to parallel processing.

Now, it should be noted that both C and C++ are capable of implementing both paradigms, even at the same time (they are not mutually exclusive). However, by its nature, C++ nudges you to think in a more object-oriented way. C doesn’t nudge you at all, and has absolutely no qualms to letting you chop off your own foot if you so desire. It is, however, somewhat easier to head down the data-oriented route without the uneasy feeling that you are doing something naughty. I found the best way to not feel guilty is simply to stop feeling guilty.

The Singleton Problem

This is one of my biggest peeves with object-oriented languages. Let’s say you want to write an audio module, with functions like PlaySound(soundid) that everybody and their grandmother wants to call at some point. OO logic dictates that there should be some kind of SoundManager class, and since there should be only one of them, the Singleton pattern is followed. Thus every time you want to play a sound, you would do something like SoundManager::GetSingletonPtr()->PlaySound(soundid). Depending on your implementation, GetSingletonPtr could contain a branch to check if the singleton exists. Also, managing when your singleton object gets allocated, intiated, etc. is a pain. Of course, there are at least two dozen singleton variants that get around this in various ways. But that’s a lot of reading…

C, on the other hand, is made for modules. By embracing the “evilness” of a globally defined function, one can simply call SoundManager_PlaySound(soundid). Firstly, it’s as simple as just calling a function.  In fact, it is just calling a function! Secondly, your module would have already been inited and deinited at startup and shutdown giving you unequivocal control over the lifespan of the SoundManager.

I get around this by embracing the “evilness” of global objects. All these objects’ lifetimes are managed by a single RAII manager class, but pointers to them are available in the global scope. SOUNDMANAGER->PlaySound(soundid) is not bad, though still not as “clean” as the C way.

Convolution in the Name of Safety

C/C++ was generally regarded as one step up from assembly. When you want finer-grain control over what happens where, without explicitly dictating each opcode, they would be your languages of choice. Lately, C++ has been moving away from that shaky ground. The additional functionality like smart pointers, dynamic casts, templatized algorithms and libraries, are all there in essence to prevent you from screwing yourself over. The cost to that is that you are removed further from implementation details. When I malloc() something, I get a chunk of memory, When I new() something, I get an object, with it’s constructor called, and whatever happens in there. This is not a bad thing, and probably improves the quality of life for C++ programmers in general. The thing is, if you are going in this direction, why not use a language like Java or C# which was designed for this role in the first place?

Instead of writing code to prevent programmers from doing stupid things, why not have smart programmers that won’t do stupid things in the first place? Game programmers, especially engine programmers, are control freaks when it comes to what their code does. Sometimes, we do want to shoot our own foot off (because it’s amusing?), so let us and stop asking questions!

I get around this by simply not using the C++ features I don’t like. Yes, I use new and delete, since I know what they do (as long as they are my own classes). I use sprintf instead of stringstreams which are just clunky. I use arrays instead of vectors. I use the C string manipulation functions or simply roll my own instead of std::string. I use C casts instead because it is briefer, and architect so I won’t be in a position to cast the wrong pointer. That last one is particular poignant. With all the convenience tools taken out, you are forced to look at your architecture, design it sensibly, and generally be more aware of the different interactions. (The same can be said for avoiding VisualAssist, but that’s a rant for another day!)

 


The Move to Sheepland

Posted: June 18th, 2011 | Author: | Filed under: Soapbox | 2 Comments »

So e-Goh, the carefree freelance game developer is no more, having crossed over to the dark side of corporate game development with Gameloft, Auckland. Why would I want to make such a move? First, adventure (i.e. get into trouble). Second, to get out of Singapore. Lastly and mostly, it sounded like fun!

The Application

How does one get a job with a large game development studio that is located overseas? Quite simply, you apply. I sent out my resume to anybody with an email address. Most useful were the contacts I gained through LinkedIn and Facebook. Pretty much none of them replied. Big studio, small studio, it didn’t matter, and it was expected. That is the way the world is, you can’t just send out your resume and hope for the best. Instead, you have to relocate first, get to know the companies there, and then apply!

Well, apparently Gameloft didn’t get the memo. They replied! They sent me a test to do, which I apparently aced (of course), and then we had a quick interview over the telephone. Just like that, “Wham! Bam! Thank you Ma’am!”, I was in!

The Process

Just getting the job wasn’t enough. There’s still the process of actually getting into New Zealand. In order to work in New Zealand, you need a work visa, and they are pretty strict about it. Depending on the length of your stay, you may be required to go for a full medical checkup, get the CID to issue a police report to vouch for the goodness of your soul, and who knows what else? Fortunately, the length of my initial contract was only one year, so it wasn’t too much of a hassle.

On the employer’s side, they had to prove that they actively tried to look for talent in New Zealand and couldn’t find it. Luckily for me, they had already been searching since January last year and we had plenty of documentary proof. They also had to furnish documents like the offer letter, employment contract, etc. for the perusal of the immigration office (which is located in Ngee Ann City, if you’re curious).

After about 10 days, approval was obtained, and all that was left to do is procure tickets, hop on a plane and pray it wouldn’t crash.

The FUD

It’s amazing what horror stories people tell you when you are about to move. The income tax is 30%! The public transport sucks! The streets are barren and empty, with nothing but sheep grazing around! The natives are racist and will murder you in your sleep!

All of the above, of course, is not true. But even the great man in the sky had his two cents. A month before I left, Christchurch (a major city on the south island of New Zealand) was hit by an earthquake. Barely a day after I arrived, he whacked it again. He also sent a giant volcanic ash cloud all the way across the Pacific Ocean, that had Qantas, Jetstar and other airlines grounding their planes. Luckily, I was travelling on Singapore Air, which isn’t put off by a little dirt in the air.

The Flight

No sign of an ash cloud!

As I stepped through the gates at Changi Airport, leaving my family behind, the enormity of what I was doing hit me. I had left on fairly long business trips before, but what I was doing now was starting a new life in an unknown country where I don’t know a single soul. (which was kind of the point of it all) Not being the religious type, I didn’t ask for a divine sign. However, I got it anyway. As I stepped into the departure lounge, I was greeted by oodles and oodles of japanese school girls! Surely this boded well for the trip ahead. Unfortunately, they were put in a separate part of the plane.

The flight from Singapore to New Zealand takes 9.5 hours. That’s a lot of time to spend cooped up on a plane. Fortunately, I was on a night flight, so I slept through most of it. The in-flight entertainment movies were meh. I only watched the Green Hornet. I really loved my Shure e2c earphones as they managed to block out a great deal of the engine noise, as well as all of the chatter and baby sounds.

When I arrived at Auckland International Airport, the first thing I did was grab a pre-paid SIM card from Vodaphone, complete with 50 MB of 3G data. I figured that as long as I have Google Maps, there should be no problem! After that was the trip to what I now affectionally call…

The Housing Debacle

WTF?

I arrived at Lantana Lodge, to be greeted by a very cheerful Japanese guy. He looked up my reservation and exclaimed, “Wow, you have the luxury room!” Sounds good right?

Well it turns out that Lantana Lodge is a hostel, with about 30 people (at the time) living together. My “luxury room”, was a double bed and a mini fridge in a room. That was all. No bathroom, no wardrobe. The toilet facilities were communal, as was a general rec lounge and kitchen. Too tired to complain, I crashed to bed (which was incidentally very high quality, especially compared to everything else) and slept till about 7 when I snuck out for a kebab dinner before getting myself organized.

It was lucky that I slept in the afternoon, because at 3am, band practice was in full swing, replete with drums, guitar and singing. Unfortunately, they weren’t very good.

After one night there, and much complaining, I was transferred to Quality Hotel Barrycourt, which was the polar opposite from Lantana Lodge. This was a full-fledged hotel. So from communal toilets, I progressed to a private bathtub with full toiletries provided. I also got a kettle with free coffee, a 32″ flatscreen TV, and an ironing board. The food at the restaurant was also pretty good.

This weekend, I have been shifted once more, this time to 45A, St Georges Bay Road. This is a small 2-bedroom townhouse which I am sharing with a young English couple who are also here for work (but for a different company). So now I have a full kitchen, living room with TV and comfy leather sofas, and pretty much everything you would expect to have in a house. I may opt to continue staying here (at my own expense this time), but on Monday, I will be viewing a studio apartment in town which I may move into.

Much better accommodations!

Culture Shock

I was expecting things to be different in New Zealand, but it’s a bit hard to predict exactly how that manifests. The big shot to the liver of any game developer is that the Internet is rationed! All the internet plans have a set amount of  data which you are allowed, after which you must either top it up or proceed at excruciatingly slow speeds. That puts a severe cramp on how many games you can purchase of Steam. Bit Torrent and the likes is of course, completely out of the question, not that I ever indulged!

Kiwis don’t carry much cash in their wallets. Almost every transaction, even ones as small as a couple of dollars, are done with the swipe of an Eftpos card, which is something like a debit card. The only time when you use actual physical cash is for bus rides, and even then, there are stored value cards much like what we have in Singapore. New Zealand is well on the way to becoming a paper-cashless society.

Another peculiarity is that we don’t like color here. Indeed, on the streets, all you see is blacks, greys, dark blues and the occasional olive drab. Perhaps this is in support of the All Blacks? Whatever the case, it made my bright cyan ski jacket stick out like a sore thumb. So one of the first few things I bought here was a nice black leather jacket. The leather’s so soft and keeps me very warm, occasionally too much so when the sun is shining. I’ll probably look for a hoodie as well, because that’s what all the Starcraft pros wear!

The weather is decidedly mild, with temperatures between 12 and 17 degrees Celsius. It is winter now, and that means rain. When I say rain, it’s not the torrents like we have in Singapore, but very mild drizzles. One night, I made the fatal error of carrying an umbrella. While the raindrops themselves are very light, the wind is crazy! It was a major task just getting the brolly to behave. No wonder everybody else would rather walk in the rain!

The Workplace

The Gameloft office is pretty big, spanning two floors. It follows the japanese layout, i.e. everybody in an open space, no cubicles and no rooms. I’ve been given a pretty sweet rig, i7 processor, double monitors, etc. My programming lead a pretty cool fellow. We had the following conversation:

“So, have you done game programming before?”

“Yes, for about seven years.”

“OH YES!!! Thank you!!!”

They are evidently facing the same labour problems we have in Singapore, possibly more acutely. The only major gaming companies here in Auckland are Gameloft and Sidhe, so the industry still has a ways to develop. I searched for a local IGDA chapter. I ended up finding NZGDA, where I read the following forum post, “New Zealand is a bit slow. Things will pick up in 10-15 years”. Oh my!

That being said, I managed to find the “underground indie game developer” group that meets up monthly. Maybe I can get some good networking action there! Some guy from Zynga is supposed to be coming to give a talk on the 26th.

Where to go from here?

Well, first I need to find permanent accommodations, and get my sleep cycle sorted. After that, and my initial 360° exploration of the surroundings, I can finally settle down and perhaps get some work done on Darwena, which as been languishing in the sidelines for way too long. I’ll also be looking around for new activities. I found a quaint little coffee shop on Parnell Road (an old part of town) which would be excellent for an afternoon of coding. Things are looking up indeed!

Baaah!


Job-Seeking In The Game Industry

Posted: April 10th, 2011 | Author: | Filed under: Soapbox | No Comments »
Interested in a Job?

Interested in a Job?

With my recent foray into realm of job-seeking, it seems I have come full-circle and experienced all sides of the interviewing table. I have been an educator, a contractor / freelancer, recruiter  and now a job-seeker. Yes, the table is indeed rectangular as all good and proper tables should be. (Don’t believe any of that round table nonsense!) I figured I might as well write on each of these perspectives to provide you a more holistic picture. Happiness and satisfaction, however, are not guaranteed.

The Educator

Teachers

How many game industry veterans do we have in Singapore that are willing to lend their wisdom? The answer is zero. So who are teaching these game courses? There are three main types. The first is the educator that is not from the games industry. They basically read a lot of books, try to get the gist of what it’s all about, and do their best to pass it on to the students. This group was especially prevalent six years back when these game courses were just starting to emerge.

The second group is your imported talent. Experts you bring in from overseas to train the local younglings. I am guessing that they are pretty expensive, and you would tend to see them more in degree courses than diploma ones. I do not know the mettle of these foreign talents, never having the chance to be under the tutelage of one. I would expect them to be above average given the credentials I have been seeing.

Lastly, you have the half-baked potatoes. This is the group I belong to. Sure, we have some experience, but wouldn’t call ourselves experts by any measure of the word. We are simply the only locally available alternative. There are a bunch of us roaming about between the institutions, and most teach on a part-time basis to supplement our other work. Oh, wouldn’t it be wonderful if we had retirees like say, Miyamoto, to spread their wisdom.

Students

Right, teachers are a problem. The next problem is students. Unfortunately, the words “game development” are so interesting that we attract quite a crowd, most of whom are more interested in the “game” part than the “development” part. The other sad thing is that these students are under the impression that once they graduate and have their fancy piece of paper, they are industry-ready. The sad truth is that you are only really ready if you are self-motivated enough to pick up skills on your own. An optimistic approximation would label about 20% of the cohort of a typical diploma program as industry-worthy.

If I could fail the other 80% and save future employers needless pain and frustration, I would. Luckily for them (the students, not the employers), I was told I cannot. The almighty bell-curve has to be respected. So what happens? Curriculum gets watered down, so that these students can “pass”. Life becomes easier. 3D graphics too hard? Let’s just stick to 2D, shall we? Maybe you don’t really have to learn A* when a turn-left algorithm will do? The end result is  a lot of complaints from students and industry alike that the courses are not providing enough foundation. *sigh*

If you are a student and wondering why it’s so damn hard to get into say – Digipen, this is the reason why. They are weeding out the 80% who really have no place in a games development course. Harsh, but you have to respect them for it. At least they have standards.

Course Management

We already know the curriculum woes that result from a weak student body. There are also other pressures, like pressure from industry. These well-meaning institutions decide to take the sensible approach and go out to ask game development companies what they need. What do they get in response? Everything under the sky! We need Unity3D, C++, C#, Java, Flash, Objective C, Torque (RIP), console devkits, UDK, etc. Every company has different requirements, all of which evolve mutate with time, and given that most course managers don’t have a grounding in the game development process, what are they to do? Who are they to turn to? Hell if I know.

The Employer

I have helped a few of my clients to interview potential employees in the past. Bear in mind that these are all SMC’s (small-medium companies), so it might not apply to the big boys. Recruiting in Singapore is hard. Why is it hard? Because there is nobody out there! You can put out an ad in the papers or any number of job recruitment sites. What do you end up with? A ton of resumes from generic people who have no game industry experience, no game-related academic qualifications, and likely don’t even play games themselves. This is even so if you highlight and boldface these as requirements. Oh, and you also get a healthy number of applications from India and China.

So after you weed through the mountain of resumes and find the handful of people who might have some inkling about what the job is about, you call them in for an interview. There are many points of failure in this process. The first hurdle is confidence. We get interviewees that are so nervous and/or quiet that we feel sorry for them. Do we hire them because we feel pity? No.

Then there’s the portfolio. There is no excuse not to have a portfolio. If you are a programmer, write some code. If you are an artist, draw something. We don’t really care if you have a degree or a diploma with 3.8 GPA. We want to see what you have done and how you think. That is all that matters. If you don’t have it, you don’t matter.

After that, there’s the test. I designed a practical programming test for one of my previous clients. I thought it was fairly straight forward – programming 2D behavior with the rendering, input and general framework already written for them. Sadly, very few even got past the first step of the test, which was to call a function which I wrote for them, in response to an input event. Do I really want to hire anybody who can’t even figure that out in an hour?

I recently went through the experience from the other side. A potential employer (quite a large company) gave me a written test. It was basically on optimization (by optimization we mean bitwise operators), C++ and OpenGL. It was a two and a half hour test, and was fairly challenging. I shudder to think of the applicants who went through my test sitting for this one. Maybe most people don’t make it through this test? Apparently so. I have an interview on Tuesday.

While the employee market is sparse, the intern market seems to be thriving. Almost everywhere I go, I run into interns. Oftentimes, they are my former students. You would think that it would be a simple matter to hire interns, train them up, and hire them as full time employees when they graduate. Not so easy! There’s this thing called the Army which sucks up all these interns right after they graduate and holds them in stasis for two years, possibly with brain decay. It turns out that females are immune to this monstrosity, but they are so rare in this line of work. So if you are a game developer of the fairer sex, know that everybody loves you, and not just for your stunning good looks.

Job Seekers

I entered the job market with two objectives in mind. First, I want to move overseas. Second, I want to move into game design. Any job that fulfills either criteria and opens the possibility of later expansion into the other, I will happily entertain. With that plan in mind, I jumped.

The Game Design Path

There are precious few companies in Singapore that are hiring game designers AND have some sort of way to get me deployed overseas in the future. Most of these are the bigger boys. Out of these large wealthy companies, I only fancied a couple. This is largely because I went for interviews with a lot of these companies in the past and the culture did not appeal. Why did I go for these interviews, you might ask? Headhunters called, and as long as somebody calls, I’m always happy to talk and gather intelligence. Well, out of the two that I kind of liked, neither were hiring designers. I sent my resume in anyway, and received no response. They are probably snickering away at this crazy programmer who thinks he’s a designer.

The only other company I approached was one whose culture would allow me to travel. The nice people there did respond, and helpfully suggested I look for Tech Director positions or something more befitting my experience. After I explained the whole game design spiel, they probably felt I smell too funny to hire. What they did tell me is that they felt I would probably find myself dissatisfied with entry-level game designer salary as compared to what I can draw freelance, and end up leaving. I have to admit that it’s a very good rational reason, given that I’m Singaporean, and all Singaporeans love their $$$.

The Overseas Path

I discovered that there are international recruiting agencies that cater specifically to the game industry. That certainly wasn’t there the last time I went job hunting. So I signed myself up and a nice British bloke called me after a day or two to clarify some details and lay some expectations. “Very professional!” I thought, much impressed. I never heard from him again, ever.

After similar experiences from a couple others, I can unscientifically conclude that recruitment agencies do not work. Well, not in this way anyway. The only recruiters that have managed to get me job interviews fall into two categories. The first is the kind that come and look for you (i.e. the headhunters). The second are those that have a vacancies that they are looking to fill and post ads everywhere.

Recruiters aside, where do I find job vacancies? Typically they are places like the Gamasutra job section, the game development group in Linkedin, personal referrals (God bless their souls), etc. One thing about these vacancies is that most of them are looking for people specifically in the States, or specifically in Europe. Why? Because immigration is hard. There’s a limit on the number of green cards issued, so overseas labor is unnecessarily complex to hire, not to mention the risk. In many cases, especially the smaller companies (which I love so much), I offered to offset some of that risk by relocating at my own expense. Gotta give some to get some!

This is not the end of my master plan. After my current project is wrapped up, if I still haven’t found a job that I like (never settle for a job you don’t like), I will travel myself to these Mecca’s of game development and see what I can find on the ground. This is the correct way to do it, or so I’ve found out. You can’t simply send out your resume and expect to land something worthwhile. Until I have freedom to fly, I’ll test that theory and get back to you if I disprove it. Not like I have anything to lose.

Freelance/Contract

This is so easy to do that I am wondering why there are not more people doing it. Everybody wants to go “indie” and set up their own company, or they want to enroll in the rat race and be a cog in some big corporation. Freelancing provides a great lifestyle, pays pretty well, and supposedly gives you no sense of security whatsoever. So why on earth would I want to move away from it? I’m bored, and I want change. Me and stability don’t see eye to eye. Me and challenge – best buddies!

So if you want to be a successful freelancer, what should you do? The first step is to find a full-time job. “What?!” I hear you cry. Freelancing is easy but it’s not thaaat easy. First you have to have the skill. You also need some sort of credible portfolio that includes published works. The place to get both is in a full-time job. Having had the fortune of starting out when the game industry in Singapore just came out of the womb, my first full-time job was a nearly unpaid full-time job. I simply treated it as school, without the school fees. Self-rationalization is a skill.

The next thing is hooking up with clients. How do you do this? Networking. What is networking? It’s basically talking to everybody and anybody you meet. Go to IGDA chapter meetings, drinking sessions, networking sessions, product launches. Dish your namecard around, let everybody know what you are doing but don’t solicit business unless a “mutually-beneficial opportunity” happens to surface. Just get to know people, preferably personally as well as professionally. Chances are, nobody will throw themselves at your feet begging for you to work for them. But wait two to five years, and suddenly you get this call or referral, and you know your efforts have paid off.

You will also need a website, like this one. From this website, you can see a good sample of the projects I’ve done in the past, learn more about what I do, and even what sort of person I am. To top it off, I have all sorts of useful essays on things that help in game development such as this, the article you are reading now. Do your search engine optimization and make sure you can get Googled. Link it to Facebook, LinkedIn, and whatever other social networking thing you have. Be active and keep it current but do not spam useless stuff. You have no idea how many people have contacted me simply because of this website. Sure, some of them are weirdos, but most have some form of legitimate business to conduct.

Now that you have the clients, you have to manage them. The secret to freelancing successfully is to always have 2-3 projects ongoing at any one time. If you desire some measure of stability, one of those projects can be teaching at an educational institution. Why multiple projects? If you have been doing your homework and developed your skill, you should now be able to work many times faster than the average grunt. A lot of the time, however, will be spent waiting. Waiting for art, waiting for approval, waiting for design decisions, etc. So while you are waiting, why not do another project? If I work full-tilt, 3 projects are not a problem, and I don’t even have to work weekends (most of the time). Sometimes (like now), I drop down to one, just to have breather and smell the roses. Quality of life vs quantity of money – you decide.

Now the biggest secret behind freelance success? There are no other freelance game programmers in Singapore! There used to be a couple of others around, so we could chuck excess work back and forth, but the others have since found other pursuits and now I am exiting as well. OMG!!! Can you say power vacuum?! That said, there are companies that offer contract services, but people often reason that freelancers will be cheaper than hiring these companies. Partially true. We don’t have overheads. Office rental is – $10 a day for a venti vanilla latte plus a snack at Starbucks. Don’t have to pay snooty employees. Nothing!

At the same time though, don’t undercharge. A student once asked me how much I charge per project. I said it depends on the project and it’s a trade secret anyway. The real answer is that it depends on demand. If you are getting more jobs than you can handle, charge more because you are obviously too damn cheap for the value you provide! It has less to do with how much you think your time with worth than how much they think your services are worth. I also like to charge per feature rather than per hour. This lets the client pull things in and out of the project as it progresses, as they are wont to do anyway, and you get to quote them on every single change. I also charge less for games that I think will be particularly portfolio friendly (here’s looking at you, giant robot with guns game – you heartbreaker!), or that I simply find more fun to work on. My business, my rates!


The Meaning of Life

Posted: March 6th, 2011 | Author: | Filed under: Soapbox | 3 Comments »

Where do I begin? I am not a religious person. While I do not believe in God(s) per se, I do not deny that there could well be something out there. I also recognize that it is beyond my ability to determine what is what in the great beyond, so I choose to simply put that question to the side. Perhaps one day, when I recline comfortably in my grave, I will be able to shine some light on that issue. Today is not that day, or so I hope.

So what do I believe in? Some people believe that they are put on this Earth for a purpose. More power to them because it makes life or any other endeavour so much easier when there is at least a vague direction to follow. I do not entertain such a luxury. I believe that it is up to me to find my own way, purposeful or not, and live through life with no regrets but my own. I refuse to live at another’s whim, and would not expect another to live at mine. True, I do owe a great deal to a lot of people – family, friends and other people in my life. However, as much as I am indebted to them, I claim this life for my own and reserve messing it up as my own privilege.

I began my working life in a small company called Coaster Computer Services. My boss, Victor, was a shrewd small-time businessman who had me creating software solutions for other small businesses. He is also the man who had the ability (which he often exercised) to use the word “fuck” in the most gentle, non-vulgar and non-offensive way possible. I learnt a lot under his wing including how to deal with clients and how to develop software from design to delivery and beyond. As pleasant as working there was, I had far more ambition (in other words, I wanted more money, more fame and more glamour) than that job could offer and through a series of events moved on to the next phase in my career.

From a small-time software house, I spread my wings and starting working on multi-million dollar projects as an employee of IBM. I was part of the business consulting group, working in a large team spanning four continents creating and deploying backends for the largest banks in the world. I was part of the working class, with my formal (by today’s standards) shirt and pants, walking down the street to work with millions of other people just like me. The hours were gruelling, with team members turning up for work at the office at practically any time of the day or night. I was having the time of my life.

The group I was in worked under the absolute best project manager I’ve ever had the pleasure to work for to this day. His name was David, a former techie turned manager turned director. He was our guardian angel, protecting us from office politics, enforcing food and rest when we overstretched our limits and basically steamrolling through anything that got in the way of us doing our jobs. He is well-respected, probably filthy rich and obviously enjoyed his job. One day, I had a good look at him, where he was in life and the lifestyle he was living. Was this the role-model I could aspire to emulate ten or twenty years down the road? I looked deep into myself and realize that the answer was no.

It is at this point that I really started to understand myself, life and the world in general. Money, I realized, was only a means to an end. What is that end? Personal satisfaction. Many people go through their lives slogging through work mindlessly so that they may raise enough money to “buy” happiness in the form of material creature comforts and a better quality of life. While I am all in support of material luxuries (yes, I’m no Gandhi), what disagreed with me was the slogging part. Why spend a majority of your life doing an activity that you do not enjoy just for the sake of being happy during whatever time is left over? I decided to cut to the chase. I’d be happy first and worry about the money later.

I was always fascinated by video games, both playing as well as creating them. (though admittedly mostly playing them) In my university days, I had three main priorities. My top priority was… competitive Scrabble. Yes, I am and have always been nerd, thank you! We had a great team that trained hard together. The camaraderie was so great that I felt I was a significant part of a bigger whole. We played, we conquered, we celebrated. My second priority was the Leviathan. The Leviathan is an online text-based roleplaying game. Think of World of Warcraft but without the graphics. While I played that for a while, I soon went into development, becoming a Wizard (i.e. a coder) and created new areas and mechanics for the players. It was set up so that the development environment was part of the live environment. It is a coder’s paradise with the instant gratification of player comments and complaints as they explore your new creations and their moans of anguish when you inadvertently crash the whole game. My third priority was scraping through on studies so that I actually got my degree. I hardly attended any lectures or tutorials but studied on my own as well as in a study group. I admit this was mostly done so that I could devote more time to my first two priorities.

Alright, back to the career bit. During my days in IBM, I did somehow manage to eke out some personal R&R time. I played my first ever MMO which was Dark Age of Camelot. In this game, I had the pleasure of making the acquaintence of a fine fellow called Alvin. Alvin himself, was in the fledgling game industry in Singapore. He set up his own company, Nexgen Studio, and just simply went for it. With a mish-mash of interns and recent graduates, he managed to produce an FPS demo. It sucked (sorry Alvin!), but it was a good start for a business still in its infancy. Like all other fresh-faced developers with delusions of grandeur, he wanted to create an MMORPG. (admit it, everybody goes through that stage) He had a business plan, a design, and even a comprehensive background story. He showed me what he had, and I promptly quit my job and turned up at his doorstep to work for next to nothing (not that he could afford to pay anybody at that point). He expressed amazement at encountering somebody as insane as he was.

We worked hard for the next year and a half. Though the going was tough, it was also a lot of fun. I got free reign to do just about anything ranging from project management to marketing to meeting VC’s to programming. It was a blast. I gave the company a year to make or bust. Much to my chagrin, neither happened. Instead, we merely survived – somehow managing to subsist without going anywhere. It was a hard thing to do, but I informed Alvin that I was leaving the company. By then, we were good friends, almost brothers-in-arms. As I mentioned at the begining of this whole tirade, I live this life for nobody, good friend or no. So we parted ways and I went into the glorious world of freelancing. I am happy to say that after I departed, the company has done quite well for itself – a happy ending afterall.

Why did I become a freelancer? The honest truth is that I wanted to set up a company of my own but was too chickenshit. Instead, I would do the market research and find out how other companies operate from the inside, examine their challenges and mistakes, and learn from them while they footed the bill. Yes, I do not deny that I am an evil genius. You would think that making a living as a freelancer is difficult. In truth, it is disgustingly easy. All you need is the will to work hard and some semblence of discipline to maintain professionalism. You do your networking; shameless self-promotion. You make sure you do a good job and that your clients are satisfied, and word will spread. Business will flourish.

The lifestyle is great. I spend my days coding or meeting interesting people. I am seldom confined to an office for more than a couple days a week. I can truthfully claim to do game development in various branches of Starbucks Coffee and Burger King around the island. If I need a breather, I can simply take on less jobs. So it seems I have attained game developer nirvana. That is a bad thing.

If there is something that I have learnt about myself, it is that I dislike being comfortable. The freelancing job fits me quite well because I can flit from place to place, project to project, and it is always different. I learn new technologies and techniques along the way and all is good in the world. However, lately, I have been finding it increasingly difficult to sit in front of the screen and do actual work. If I were the typical Singaporean, I would grit my teeth, force it through with sheer willpower and get the job done. Obviously, having just said that, I did exactly the opposite. I have been spending a fair amount of time in introspection (i.e. sitting around and doing nothing). There is a reason for my failing drive and that reason is not laziness. I have always been lazy and that has never gotten in the way before simply because I love my job too damn much. So what do I want out of life and why does it feel like my current direction is off-kilter?

I definitely still want to make games. The original plan was to set up a company so that I can make the games I want to make. After all, I have already learnt so many lessons from all my previous suc… clients. Why not put them to their intended use? Have I not suffered through all manner of brain-dead or ludicrous “designs” and “concepts” that I have earned the right to make something on my own? To be honest with myself, I don’t even care if it sells or is profitable. I am past caring too much about money other than the occasional need to eat. Yes, there is a flaw in the master plan that I failed to perceive when I set out on this whole venture. As Steve Jobs has said, this changes everything… again.

If I were to set up a company, I would be too embroiled in administration to be usefully engaged in the development process. Sure, I would have the privilege of being the boss and well… bossing people around. “Yes, you should do this. No, don’t do that. This is the way to do it… Where’s your company spirit? Worship me because I pay your salary!” The truth is, as has been blatantly demonstrated to me, management messing around with the development process too much is a bad thing. Bad for the project, bad for the team. I would never have the fine-grained control over the project that I cherish.

To add to that, I want to do other things as well. I would love to learn how to draw/paint, play beautiful music, engage in creative writing. I have no illusions of being “good” at any of them, but these are indulgences rather than core skills. I want to experience life to the fullest and take in all that it offers me and then some. I want to always keep moving and never stop till day I cannot move anymore. For all this, I would be willing to be the serf instead of the ruler. Who in their left mind would not?

With all that said and done, where do I go from here? I have decided on two long term objectives. First, I want to make the shift to game design. Second, I want to get out of Singapore and move to somewhere completely different. Make no mistake, Singapore is a great place. It has low crime, good infrastructure, excellent quality of life and is probably one of the easiest places to make money in. However, with 6 million people crammed on a little red dot, all chattering and yammering as they go through their lives like automatons… I need a change.

Ultimately, is that not what life is all about? I pride myself on following through on arbitrary decisions made after a period of daydreaming and being non-productive. You cannot chase dreams if you do not have any and one dream is as good any other, no?


Taking Music Seriously

Posted: January 26th, 2011 | Author: | Filed under: Soapbox | No Comments »
Music

Music

Just the other day, the original Die Hard was shown on TV… and it was good!  There was one little niggle that bothered me though. During the action scenes, these weird orchestral swells would play in the background, supposedly to build up tension.  I supposed back in the 80’s, that was the norm and we never gave it a second thought.  Today, however, it just seems so out of place.

So I went through my video library and looked at two films that I really liked for their style and soundtrack… Requiem for a Dream and Lola Rentt.  In each of these, the movements on screen, be they full screen transitions or simple movements were carefully choreographed with the music. The music itself complemented the atmosphere in each of those films – dark and foreboding in the case of Requiem, speedy and action-packed for Lola.  There was a phrase to describe this sort of cinematography. It took a little while to wrack my brains before I got my “Ah hah!”… MTV style.

So for more inspiration, I flipped over to the MTV channel which I haven’t watched for years… decades even. And lo behold! MTV is no longer like that. All it seems to be now is music playing with general “stuff” happening on screen. There’s no oomph to it like I remembered from the 90’s. Youtube to the rescue… I found curiously enough that the Korean music videos actually do feature this style, as well as a lot of imagination put into it. Videos from SNSD, Wonder Girls, JYP… all had that cutting edge and were enthralling (and not just because of my inner perv). I also realize that this was something I was pretty conscious of in the making of my Oversight video, even without formal video editing training.

So how do we bring this over to game development? Other than rhythm games, we seldom see music tightly linked with the action on screen. This is partly because it is really hard to predict the player inputs. But it is also largely because we, as game developers, tend to treat it as an afterthought. Yeah, with my huge army horde marching in, I know I should play something majestic to add atmosphere. But do I ever go so far as to have them marching in step with the music? Not really.

Part of the reason why we don’t really think that way is because of the tools we use. Traditionally, we at most tie the playing of music pieces to certain events. We don’t have tools that, for example, generate an event with every bass beat in the music score.  Why? Because nobody ever thinks that way. We are stuck in a rut.

When I get around to the audio portion of Darwena, I would like to incorporate these ideas, and see if they have an impact on the type of games that get produced from it. Would it even go so far as to produce a signature style? “That must be a Darwena game because it has that rhythmic feel!” That’ll be cool to hear.


Top 5 Game Development Lessons of 2010

Posted: December 30th, 2010 | Author: | Filed under: Soapbox, Tutorials | No Comments »

As we come to the end of a new year, it is good to look back and observe what we have learned in the hopes that we can all become better game developers. Here, we refrain from looking at the techie nerdgasm bits that are at best transient, and look at fundamentals that we will want to keep through the years to come.

5. “No Nonsense Game Development” is not always enforceable

I thought that I would never say this, but I have met my match as far as keeping down the “nonsense” in game production goes. Under normal circumstances, this should never happen as it is kept in check by the management, who has a high stake in the success of the project. However, just because it shouldn’t happen has never stopped anybody before. The root cause in this case was so fundamental that it cannot be slapped away by throwing out catchy phrases like “agile development”. Instead it is the decidedly human (yes, somehow it’s always humans at fault isn’t it?) traits of insecurity and conceit. Unlike bad communication or management which can be remedied with proper instruction, the human factor can only be conquered by each individual from within.

4. The importance of technical preproduction increases with team size

I have always been a fan of individual programmer creativity. I generally like to modularize the components of the game, give each one a specification and let the programmer create the black box that handles that task. Landing in a project after pre-production and having barely more a week to create a basic framework is sheer madness. However, the pressure of an idle workforce and the hubris in my ability to consistently produce miracles convinced me to “rise to the challenge”.

Of course, it didn’t help that the team was about 10 people strong with a majority of junior programmers and interns. The correct course of action would have been to bite the bullet and halt production, so I could lend more in the way of structure and guidelines, as well as general team training. This oversight cost the project dearly. Would it have been enough to save it? That’s anybody’s guess. Will I learn from it? You bet!

3. Web presence is well worth the time investment for B2B marketing

This was an interesting year in the sense that I spent zero time on face-to-face big event networking, mainly because I was preoccupied with ongoing projects. However, the information provided on this website, coupled with maintaining a strong presence on networks like LinkedIn and Facebook appeared to keep the job opportunities streaming in at a respectable rate. Even now, less than a week after I stepped away from my prior post, I have not one but two offers from separate parties for my next endeavour.

The other advantage of online social networking is that it allows you to gauge the mood, disposition and morale of your staff. They are more likely to vent online, even if they have to do so obliquely lest they incur the wrath of the NDA-toting lawyers. Of course, if they don’t trust you, you will never get to see any of this, Facebook buddies or no. So yes, once again technology is no substitute for the human touch.

2. Time waits for no man

When we doing tests on the iPhone 3GS back in April, we discovered that it had superior graphical capabilities, an order of magnitude more than the previous model. This of course opened the door to a wide range of possibilities and hastened us down the road of ambition and scale. Eight months later, while we still have nothing more than a prototype to show for it, the Unreal Engine has made its way onto our platform, bringing with it the likes of Infinity Blade that while simple in gameplay, takes our breath away in awesomeness. We dragged too long and missed the window.

Perhaps a better strategy would have been to focus more on core gameplay fundamentals rather than technology. While tech is flashy yet fleeting, design is eternal and beautiful.

1. The number one priority for game development companies should be their core development team

Some years back, when Ubisoft was first setting up shop in Singapore, I went in for an interview out of curiosity. What they told me blew away for the totally wrong reasons. They stated that they wished to spend one whole year just training up the team and integrating it with the rest of the Ubisoft family before doing anything serious. At the time I was thinking, “OMG! 1 year without portfolio pieces!”

What I missed was the wisdom of this approach. Your company can only go as far as your team can bring you. If you have a strong team, you can do great things. If you, like many (I hesitate to say all) startup games studios in Singapore, just dive into it hoping to learn as you go along, that team can only accomplish that much. Worst still, if you fail to maintain the team that you have (i.e. high staff turnover), you will forever be stuck at that low but very flat plateau. A company’s crown jewels are not its assets or its vision, but its people.

I don’t know for sure if Ubisoft followed through with their one year program, but from the media I have gathered that they have contributed rather sizable chunks to the Assassin’s Creed franchise. I’ll say it again… you need a strong team to accomplish great things.


Power to the People!

Posted: November 14th, 2010 | Author: | Filed under: Soapbox | No Comments »
Power to the People!

Power to the People!

So, it’s a been a strange week, during which I was given the chance to observe (and occasionally partake) in the manpower issues faced by local development companies. In both cases, the major issue was in tapping the creativity and enthusiasm of the rank-and-file developer. It’s hard to say if this is the result of our uniquely sterile and reticent Singapore culture, or if this affects overseas startups as well.

So in company one, which we shall refer to as the Empire, has a very draconian top-down management style with multiple layers of hierarchy. Employees are not allowed to carry in data storage devices, required to store their personal effects out of the main work area, and are expected to carry out allotted tasks like any standard cog-in-the-machine would. There is a lengthy approval process during which the Emperor will personally appraise every minute aspect of the Death Star design and lay forth to his Stormtroopers what is to be done. This would not be so bad if the Emperor was talented at Death Star design. Unfortunately this is not the case. Every engineer he has knows about the fatal flaw in the design, yet cannot get the message through. As a result, they shuffle listlessly about the deck, engaging in activities like Youtube and Facebook to bury their misery. This in turn leads to a long drawn-out war against the likes of Youtube and Facebook, a battle that sees no signs of ending.

Company two, which we shall call the Alliance, is slightly more “enlightened”. They believe that every soldier should believe in what he is fighting for, and have a say in what that should be exactly. Unfortunately, there are no Leias or Ackbars to champion any causes. Everybody just sort of sits around waiting for somebody else to step up and take the lead. There are long lengthy meetings, where the fate of a planet in distress is discussed in a committee while it gets destroyed. Nobody really knows where the Alliance is going, so everybody treads water, carrying out the necessary actions to ensure survival and little else.

So the question is, is it possible to have a company like the Borg? (yes, I know I’m crossing references) A company where the collective makes decisions, yet they are so finely attuned to each other that there is a strong direction and everything seemingly magically clicks into place. What does it take to make such a company, and is it really for the best? What other sort of business models, sci-fi reference or no, would be suitable for a creative company? While there is plenty of talk about the virtues of Agile methodologies like SCRUM, these are merely processes. What we are interested in is the sort of culture that will give the company the resilience to forge down the rocky game development road, to go where no indie company has gone before…

*Note: Dramatizations have been made for entertainment purposes.


We are being repressed!

Posted: November 5th, 2010 | Author: | Filed under: Soapbox | No Comments »
Darwena

Darwena

When I first came up with Darwena, it was innocuous enough. An engine just like any other engine. Nothing outstanding or out of the ordinary. Altruistic in intent, meant for the education of the masses (or at least the masses that attend my classes). But you should never completely trust a game engine named after a WoW succubus. Tantalizingly, she whispered in my ear ever so softly, until at last I came to see reason. We are going to champion the cause of the game programmer.

It is true. We, as game programmers, are being repressed! Take a look at the bonus videos from God of War III. There’s a video for each of the teams that took part in the making of the game. The artists were showing off their character design and animation. The designers were showing off their levels and game mechanics. Then it came to the programmers. And there you see four guys sitting in front o f a bunch of screens. On the screens are IDEs with code on it only another programmer could find exciting.. The first guy starts talking and the words tumble out of their mouths, “The programmer’s role in the game is to help make everything a reality. We make tools that allow the designers and artists to actually make the game. If the designers the want to do something, or if the artists want to do something… If they are smart, they’ll consult and ask us. Often, we’ll say no, then they’ll say they want to do it, then we’ll have to do it…”

How sad is that? We have collectively gone from being the cool guys who created Spacewars and Pong, to serving as common laborers that create the foundations upon which others build their greatness! Partly to blame is the scale of modern games. Many employ large teams that relegate the programmer to the common rank and file. Even for smaller games like the popular iPhone ornithological physics simulation Angry Birds. Who created it? No. Clickgamer is the publisher. Yes, Rovio is the developing company. If you find the button that shows the credits, and scroll past the Executive Producers, producers and designers, you will finally find the lead programmer, Tuomo Lehtinen (bless his soul), and his motley team. At least he got mentioned before the artists this time.

So yes, how does this affect our darling Darwena? Darwena will be a rapid development framework designed for the programatically inclined. It won’t be a set of APIs like the illustrious Ogre3D or other similar engines. Instead, it will be a full toolset, somewhat like Unity or Unreal, but without the idiot-proof handholding. No flowcharted shaders or drag-and-drop AI. Instead, we expose enough of the system so that it can be exploited mercilessly at the hands of a wiley scripter. Also, we will focus more on procedurally generated content. Sure, we will occasionally have to import a mesh or texture. But if it can be created by a clever algorithm, why not?

Also, Darwena will have style. Something you won’t be ashamed of having floating around the screen when you have completed your hit game and they are shooting the “Behind the Scenes” video. The masses will look upon it and go, “Wow! That’s what I call code!” rather than, “That guy’s Notepad has coloured text…”

So watch out all ye heathens! The return of the programmer is nigh!

* This article contains some dramatization