Real programmers don’t see code, they see trees.

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 »


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

The Art of Daydreaming

Posted: October 20th, 2010 | Author: | Filed under: Tutorials | 1 Comment »

Daydreaming helps!

So for the past week or so, I’ve been feverishly working on Darwena. I got my platform-specific code up for the PC and OSX, got my OpenGL contexts working, integrated FreeImage and FreeType. And then I stopped. For the past day and a half, I have been doing nothing but dreaming and conceptualizing. Professionals would call this design, but no, it’s all in the head. It is something that very few novice programmers engage in.

So what was I daydreaming about? It was how to implement my material system. Give this task to any graphics programming student, and they’d be right at it. How hard can it be? All you need are textures, maybe color and alpha bias. That and throw in some shader support if you’re ambitious enough, right? So why am I sitting here thinking about it instead of going straight to implementation, like I would do for any school assignment?

The reason is that I have hit a critical section. No, I’m not talking about multithreading. What I mean is that any functionality I implement at this point is going to change the whole texture of my entire engine. It is going to affect its capabilities, ease of use, and generally the whole design philosophy. Yes, I have set down the design philosophy ahead of the whole project, but subtle nuances at this stage of development can heavily influence the interpretation of this philosophy. This makes it worth a taking the time to put a little thought into it, no?

So how do you go about this daydreaming process? First thing I do is clarify all the design objectives of this particular subsystem, and how it will affect the texture of the whole engine. What do I want from it both now and in the future? My first milestone is a 2D engine, so it seems rather trivial. But when I want to extend to 3D and beyond later, I had better have a system that can either be extended or is already capable of that, yes? Also, there is a reason why I chose a 2D engine as my first milestone. I want to have a very dynamic fluid organic material system. If we focus on 3D straight away, this is usually glossed over. In a 2D game however, you do pay attention to animated textures, sprite systems and other things that will make your overall material system more robust.

That done, I start of with the most obvious solutions. Step through each one in my head, and weight the advantages, disadvantages and perceived problems. I also envision how this implementation will affect the design of other systems. It can be a bit much, but it is a system of thinking that I have developed over the years. Visualizing the code running in my head and seeing what leads to what. Then you start tweaking. How different are the results from what you can achieve? Can you make subtle changes to make things go the way you want them to?

Finally, after doing all that, it’s time to do some research. Hit the web and the periodicals to see how everybody else tackled these design issues. Note that this is done only after running through things myself. Most fresh programmers would go straight to the altar of the Google God, pick the first feasible solution they come across, and copy-paste the code, massaging it into their own code base. They then end up with the ideal solution for somebody else’s project. At the very worst, they have a piece of code that they do not understand and just seems to work like a magical black box. This is not good. Not good at all. Instead, what I do is see what others have done, and what benefits they get from doing it their way. Then I look at my own original solution, and fit together ingredients from the ideas I gathered from the wild till I am happy with the concept, and how it will fit in with the rest of my codebase.

And then after all that, I finally start writing code. This is actually the easy part because you already know what to do. All you are doing is translating the ideas into a language that the computer understands, like C++. If you have been doing this long enough, it’s a fairly relaxed and enjoyable process. You don’t have weird design bugs popping up because everything was thought of and conceptualized beforehand.

And that my friends, is what the art of programming is all about!

Oversight is now 4.01 compatible

Posted: October 13th, 2010 | Author: | Filed under: Soapbox | No Comments »

Yes, Oversight 1.02 is out with a few changes to keep it compatible with 4.01. I have disabled spec detection for the time being because of the plethora of new spells and buffs that I’ll need to weed through to reliably identify each spec. And anyway, that won’t be very useful until people start arenaing again. Similarly, the default buff list has been made empty as some spells have been taken away, making their spellids invalid. However, if you had an older version of Oversight, whatever buff list you had before will carry over with no problem. If you are new,  just type in the few buffs you want to keep track of for the time being.

As always, you can get Oversight from the usual places, namely right here at e-Goh, as well as at WoWInterface. Enjoy!

Webbifying Darwena

Posted: October 11th, 2010 | Author: | Filed under: Tutorials | 2 Comments »


As posted previously, I am working on a new OpenGL game development framework. Since it is my own personal project (at least for now), I get to decide how to go about documenting it. Like every other programmer out there, I hate documentation. Can there be a greater waste of brain power? However, it is a necessary evil that needs to be done. So since I’m a tech person (or why would I be in this industry?), I decided to go about automating it as much as I can.

The first thing I did was put up the wiki at I just used Mediawiki. The good folks at Dreamhost handily have a one-click install in their control panel. So I fill in a bit of information, click “Go”, and voila! I have a wiki!

I decided to give the wiki a very simple structure. The bulk of the wiki will be tied to the “Project Roadmap”. So as each module is completed, I just click on the link and add a little writeup about what it does. Easy. I imagine that as I begin incorporating more things, the wiki page itself will grow naturally.

For API documentation, I pick my favorite tool… Doxygen. I downloaded the frontend to my PC to generated the doxyfile (i.e. the configuration file). I then sshed to the webserver, downloaded the Doxygen source, and compiled it there. I had a bit of a problem with the language translator, but I found the right place to disable that. Don’t really need documentation in Norwegian anyway, do I?

I then made simple sh script to update my Mercurial repository, run doxygen and copy the contents to my web fol.. directory. (folder is Microsoft-speak!). Put up a cron job to run that every day and perfect! I did mess up a bit on this step though. The first time I did this, I enabled their “File Browser” thing, and all my ugly code got published to the web. OMG! OMG! I quickly fixed that. Hopefully Googlebot didn’t peek in while that was up.

Oh, I mentioned Mercurial didn’t I? Yes, that is indeed how I am managing my source control. Mercurial over ssh. Can I be more secure? What’s better is that I can push it to my portable hard disk for yet another backup copy.

I’m sure any company or organization could easily implement what I have on an internal web server. Not only do you end up spending less time writing documentation (well, it only seems that way), but it also automatically becomes available to the rest of your development team.

One last shout out for those of you who are not aware or who have forgotten about the Darwena Logo Design challenge. Make me a logo and win fifty bucks. What could be more easy? It ends at the end of this week, so hurry with the submissions.

Setting Up Your Macbook Pro For Development

Posted: September 25th, 2010 | Author: | Filed under: Tutorials | 1 Comment »
My new Macbook Pro!

My new Macbook Pro!

Recently (last night in fact), I had my new Macbook Pro delivered. This 15″ beauty was augmented with a matte anti-glare screen and a 7200rp 500GB drive. Boasting a 2.53GHz i5 processor and 4GB worth of RAM, it is truly a worthy development platform. However in order to convert it to that, a fair amount of preparation must be done. Sure, you could just install XCode and say you are good to go, but you can’t really say you are working at maximum productivity, can you?

This first thing I install, as with all Mac machines, is Quicksilver by Blacktree. This allows you to bind a hotkey that calls up quicksilver. Once done, you just type in the first few letters of the application, music, url, xcode project, etc. that you want to open. Autocomplete will find it for you, then you just press enter to launch it straight away. Not only is it tremendously useful, it is also extremely stylish with its bezel interface and all.

The next thing to go in is Visor, also by Blacktree. This provides me with a full-screen Terminal which I can toggle at the touch of a button. I bind this to my F12 key. Since it messes with OSX internals, it needs a bit of setup. You have to install SIMBL, and then copy the Visor Bundle in to a specified location. Once that is done, run Terminal and set up the preferences to whatever you like. At this point, I would create my .bash_profile and .vimrc files. The .bash_profile is mainly to customize my prompt. The .vimrc file of course, is for Vim, my text editor of choice.

Once the basics are in, everything else follows. I grab the latest version of Xcode from Apple’s Developer Site. In my case, I grab the one with the iPhone SDK. For source control, I install Mercurial. Subversion and CVS already come bundled with OSX. I prefer Mercurial as my primary source control for a few reasons. Firstly, it’s dead easy to set up. No weird config files or hooking up through Apache. Merging is also much better supported. Second, I can sync via SSH. Quite a few times, I failed to sync with SVN over http because of messed up proxy-servers on whatever ISP I’m connected to. Lastly and most importantly, I can sync to multiple locations. So I can have master copies on my server, as well as on my portable hard drive, and sync with either one of them. Of course, being a freelancer, you work with whatever your client uses. So having all three is good.

For my productivity suite (I wonder why they call it that), I use iWork. It’s cheap, compared to Microsoft Office. It is also simpler and easier to use, and more impressive to look at. There’s really no reason why I would want to use the travesty called MS Office because simple developers like myself have no need for mail merge or the other 1001 esoteric features that nobody uses anyway. Also, it means that for presentations, I get to use my cool apple remote (that came with my previous Macbook but is not included with this one).

Communications. For mail, I install Postbox Express. It is hands-down, the best free IMAP mail program out there. There’s both Windows and Mac versions, so I have it installed on my desktop as well as my Macbook. If you’re stuck with POP, default Apple mail works. For messaging, I use Adium. Why Adium and not the tonne of other messaging clients out there? Because it looks cooler. It’s not good enough to be awesome. You’ve got to be awesome with style!

The only thing left is a decent image editing program. The best, of course, would be Photoshop. However, given that I have the artistic talent of a gerbil, I can’t really justify the price. A free alternative is the Gimp. It looks as ugly as sin, but it gets the job done. My preferred choice would be Pixelmator. It’s just barely affordable, looks great, and has everything you need for programmer art and more. Alternatively, if you are expecting to get a Wacom for any reason anytime soon, Photoshop Elements and Corel Painter Sketchpad would probably fill whatever gaps you have.

System tweaks. Dump all your music into iTunes. Can’t code without good music, can you? Surf DeviantArt to look for nice-looking wallpaper. Open up your system preferences. Under Account settings, go to startup items and remove iTunes Helper. This prevents iTunes from annoyingly popping up everytime you hook up an iPod/iPhone/iPad. Disable Time Machine. Set up Expose and Spaces to work the way you want it to. Modify power settings to be less annoying. Require a password on login and when you exit a screensaver. Got to do your dues for those NDAs!

Now that you’re done with OSX, it’s time to look at Windows. You didn’t really think you could get away from that, did you? I bought VMWare Fusion for $10 (an upgrade since I seem to have been suckered into buying an early version long time ago). Set up a virtual machine with 100GB disk space 1GB RAM and 1 core, and installed an old copy of XP on it. Why XP? Fusion doesn’t support anything above DirectX 9 anyway, so why spend money on another Windows 7 license when XP will do fine? If you are into hardcore Windows development, a better approach would be to set up a BootCamp partition and install Windows 7. It means you have to reboot to get into windows, but the performance is better. Either way, after windows is installed, I install Microsoft Visual C++ 2010 Express. That’s probably the only reason why I need Windows, so I leave it at that.

And with that done, you are all set to dive into the code and do a few laps. If you get bored while waiting for things to install, why not blog about it? I did.

Introducing… Darwena

Posted: September 21st, 2010 | Author: | Filed under: Projects | 2 Comments »
Darwena was named after a friend's succubus in WoW. It's pleasing to the ear and all the good names were taken.

Darwena was named after a friend's succubus in WoW. It's pleasing to the ear and all the other good names were taken.

New pet project! Given that I’ve been most mercenary and haven’t really had many projects of my own, that’s a big deal! So what is Darwena? Darwena is going to be a new game engine. “Blasphemy!”, I hear you mutter under your breath. Indeed, we put indie developers who want to develop their own engine in the same class as those who want to make an MMO. Stupid stupid waste of time when there are excellent free engines like Ogre3D, HGE and many others.

And you would be right. But nevertheless, I’m pursuing this for a few reasons. First, for education. Think of the kids! This will be my new platform on which to teach OpenGL. Modern engines are either too complicated to dissect easily, or miss the boat when it comes to practical game development. Secondly, this will be a lightweight platform for development of Casual downloadable games for the desktop and iPhone platforms. Ogre is great for 3D, but it’s pretty heavyweight, especially for the smaller apps. Last but not least, it gives me a playground to experiment with procedural techniques designed to make artists redundant in a totally malleable framework.

So, what’s the plan for the engine? These will be the guiding philosophies:

  • It will be based on OpenGL soley, with provisions made to extend to DirectX at a much later date.
  • It will run on Windows, OSX, and IOS. It might run on Linux too, if I have the time.
  • It will be lightweight. Specialised utility libraries like libpng, zzip and freetype may be employed, but we will strive to avoid the bloat of bigger, more congested APIs.

Phase I will be a pure 2D framework where we take advantage of GLSL shaders and scripting to provide a fluid 2D gaming experience. Heaps of attention will be poured onto the material and GUI.

Phase II will be the shift to 3D, with mesh imports, terrain and animation. High hopes of having procedurally generated meshes, but we will have to see.

Phase III incorporates networking for multiplayer play as well as social networking aspects like Facebook postage, high scores, achievements, etc.

So will this take to the sky and make me as rich as the folks over at Epic? Or will it crash and burn like the thousands of hopeful projects we politely snicker about? Only time will tell.

It breathes! It breathes!

A Fistful of Interns

Posted: September 13th, 2010 | Author: | Filed under: Soapbox | 1 Comment »

There is a strange phenomenon among the newer small game development studios in Singapore that I have worked with. This is the employment of interns in their development team. While this is nothing out of the ordinary, these companies take it to such extremes that the intern force outnumbers the full-time staff. In some cases, the intern force is the entirety of the development team.

Why does this happen?

There are a number of advantages to hiring interns. First and foremost, they are dirt-cheap. For S$400 – S$500 a month, you can get a warm body working for you full time. The allure of this is irresistible for smaller setups with tight purse strings. This means that for every entry-level permanent staff you hire, you could have gotten 3-4 interns.

The other major factor is that it is very difficult to find competent programmers, artists and designers in Singapore. Though the local polytechnics are churning out batch after batch every year, supply is still extremely scarce. Why is this? A significant portion of the students come to the realization that making games is hard work, and not the dream job they once saw it to be, resulting in them switching to other lines of work, such as selling insurance. Of the remainder, the big boys (i.e. EA, Ubisoft, Koei, Lucas, etc.) suck up the majority. This leaves for thin pickings for the smaller companies with more modest employment budgets.

Why is this bad?

The first bad thing is turnover. Internships typically last 1, 3 or 6 months. If you are lucky and on very good terms with the institution you got them from, you might extend this by another 3 months by setting your company project as their final year project. It typically takes about 2 months to train and fully integrate the said intern into your workflow. This does not leave much in the way of “productive time”. Also, given that the vast majority of the game development students are male and local, they will be gone for National Service after they graduate, killing prospects of hiring them full time.

Then there is quality. Hiring interns is like dipping into a box of chocolates, you never know what you are going to get. Of each cohort, roughly 10% is self-motivated and competent enough to jump right into the job and get things done in a timely fashion. 30% are your worst nightmare. At best they take up space and not much else. At worst, they impede production and demoralize the rest of your workforce. Fortunately, most institutes recognize these people and do not send them out for internships. Some however, occasionally slip through the cracks. The remainder require constant training and supervision, and even so, the quality of their work will remain sub-par and unimaginative.

Efficiency. After a few months of finding out that their interns cannot produce the quality of work they desire, many employers look to hire a senior staff to nurture their intern force. Quite often, that ends up as me or one of the other handful of freelancers operating in Singapore. However, little do they realize that if we were to handle the task solo, the project would most likely be delivered faster, and at higher quality, than managing all these interns.

Operational costs. If we were to assume that 3 interns = 1 junior developer, the company would have to provide three times the space and equipment for an equal amount for productivity. The higher maintenance cost may outweigh whatever savings you get from hiring interns in the first place.

What should companies know about interns?

Interns are a useful asset to have, but their usefulness depends on how you employ them. Know that your interns are going to sap time from your employed staff. If they outnumber your permanent staff, you may find productivity dipping significantly, especially within the first month or so of the internship.

When allocating tasks to interns, ensure that they have very specific and clear instructions on what has to be accomplished, and how it is to be done. It is also incredibly useful if you can define easy-to-measure KPIs to assess the level of their work. They will also require constant supervision, and somebody should be assigned to check in on them on a daily basis. Most interns are shy and hesitant to ask for help.

When deciding to hire an intern, plan out the tasks they will do during the course of an internship. Do have contingency plans as the intern may take an extended amount of time to finish their task, or if you are extremely lucky, may finish it well ahead of schedule.

Most interns will need to prepare reports and presentations for their schools. They will typically spend the last week of their internship doing this. These may also need to be vetted for reasons of confidentiality.

Pretty much all interns I’ve seen end up surfing YouTube and play web-based Flash games during office hours. Be aware, and strike a balance.

What the government and educational institutions can do to help

The major stick in the mud as far as internships go is national service. Ideally, you would want to use the internship as a testing ground for possible future employment. However, they are bundled off to the army for two years right after they graduate, breaking any continuity. If polytechnic education came after their time in the army rather than before, this would be much less of an issue. In Korea, outstanding students are allowed to serve their national service in game companies. That would be an excellent way to promote the growth of the game industry in Singapore.

Three-month internships are too short. Internships should be at least 5-6 months long for the companies to recoup the cost of training the students, particularly in highly technical industries like game development. The ability to extend this further by incorporating their final year project into the attachment time is an outstanding initiative done by quite a few institutions.

Interviews with students or at least some informal introduction to the students prior to taking them on as interns would be extremely useful. This would aid in getting the students with the right skills and interests to the right jobs. It may also open their eyes as to what is out there. Right now, the process feels too much like a lucky draw, especially from the perspective of the hiring company.

So where does that leave us?

Internships are useful, no doubt, partly as a means of accomplishing simpler tasks and partly as one of the company’s recruitment strategies. However, overdoing it can result in loss of productivity because interns are raw, need to be trained and won’t stick around long enough. Build up your core team first, and supplement them with interns rather than the other way round.

From 2600 to 3

Posted: August 19th, 2010 | Author: | Filed under: Soapbox | No Comments »
PS3 Slim

PS3 Slim

So after years of not owning a console since the Atari 2600, I finally went out and got myself a PS3. Actually, this happened 3 weeks ago, but I’ve been to busy to write about it! So why a PS and not an XBox? Well, like any other good consumer, I looked at the exclusive titles Most of the exclusives on the XBox are FPSes, and I don’t really think that FPS’s have a legitimate place on consoles. The controls are so obviously clunky, as opposed to the simple point and click action of the mouse. So FPS, RTS, and even some kinds of RPGs… those are for the PC.

Naturally, I bought a bunch of games together with it. Unfortunately, God of War III, which was one of the most compelling reasons to go for the PS3, was out of stock. But I’ve had plenty of others to keep me occupied till I can lay my grubby hands on a copy. So let’s see what I learned from my $700 investment.

Heavy Rain

Heavy Rain

Heavy Rain

This game by Quantic Dreams is definitely one of a kind, totally unlike anything I’ve played before. The closest I can think of is those adventure games like Phantasmagoria or Longest Journey. But this is so much more emotive. The writing was definitely top notch, and the game flowed very well, much like an interactive movie. The UI, I thought was spectacular. It was discreet enough not to be in your face, but distinct enough to hint you on as to what you are supposed to do next. It was also not quite 2D, but embedded into the 3D world.

Another interesting thing is that there are no game saves to return to. Every choice or action you make is final. The story is quite linear, but has enough branches to accommodate for your occasional failures. In my play-through, almost every one of my main characters died in some way or other, and not all of them intentional! I would definitely replay through this again to see what would happen if I did things differently.

Final Fantasy XIII

Final Fantasy XIII

Final Fantasy XIII

This was the next game I played. To tell the truth, I have never, ever, ever, completed a Final Fantasy game before. And this was no exception. Make no mistake, it is an incredibly pretty game, with all the colourful effects and striking attacks. The combat system was decent, giving you enough things to do, but not outstanding. Eventually, just like all the others, it became to repetitive. Soon, the only thing motivating you to complete the game is the storyline. The story, while cohesive, is not riveting. This is probably due to the large amount of repetitive combat you go through in between each scene, leaving little attachment for the characters, unlike Heavy Rain.

While I can say I like this more than VII and VIII as far as gameplay goes, that’s about all I can give it. There are much more interesting RPGs out there like DragonAge and Fallout 3 (both of which I played on PC ).

Dante’s Inferno

Dante's Inferno

Dante's Inferno

I was looking forward to playing this for two reasons. First, it’s probably the closest thing I can find to God of War till I can get that. Second, it’s toted as the game with the most amount of gratuitous nudity, which is never a bad thing.

It started out remarkably well. Full props on presentation and the depiction of hell. The 2D western-style-anime-panel-art thing was pretty dramatic, and the story made pretty clear. Combat was just like I saw on Youtube, running around crazily smacking things all over the place. The controller is indeed very well suited for this sort of game, especially with the dual analog sticks.

After a while though, it did start getting repetitive. It’s the same sequence of buttons you mash, wading through hordes and hordes of enemies. The atmosphere, while suitably oppressive, had no breaks or changes. As such, it ended up rather dreary, the combat becoming more a chore than enjoyment. I waded through Lust and partway into Gluttony before I set it aside for the next game.

Metal Gear Solid 4

Metal Gear Solid 4

Metal Gear Solid 4

This is one solid game. At the beginning, the controls were rather complicated and unintuitive. However, as I got used to it, it grew on me and I started appreciating the way they make use of every single button. The sheer amount of things you can do is pretty  amazing. More than that, the cutscenes all look amazing, even if they are played out using in-game graphics. This allows a smooth blend from cutscene to action without any pause or hiccups, resulting in a very slick and smooth flow.

The story behind the game is also one of the strong points. Not only is it suitably complex, but the characters are fleshed out enough that you can get attached to them and emphathise with what they are going through. I particularly liked the scenes where the small girl is frying eggs, for some strange reason. It’s just odd and is always there, much like the “Enchantment!” boy in Dragonage.

Sneaking around and getting the drop on the goons is definitely fun, somewhat like a hi-definition puzzle game. When I mess up and end up in full-fledged combat though, my feeling that FPSes have no place on a console only gets reinforced as I struggle to position my crosshairs accurately without the camera flying all over the place. Fortunately, the  game designers took that into account, making the goons stand still for suitable periods of time so you may get off a proper shot. How multiplayer console FPSes work is hard to fathom.




I can’t describe this game as anything but pure unadulterated fun. The presentation is highly stylized, reflected not only in the impossible dimensions of the lead character, but also in the choice of music. Never would I have imagined slaying hordes of angels to the tune of  “Fly me to the Moon”.

The heart and soul of the game is the combat system. Almost all the combos are there for you right off the bat, with a few special ones available for purchase. Every time a scene is loading you get to practise your combos in  a sort of test room. Boss fights feel like boss fights, with their distinct and sometimes whacky mechanics. They even return later as regular mobs in twos or even threes. The “witch time” system slows down time everytime you dodge something at the last second, giving you some sense of control in all the mayhem, as well as the illusion that you actually are skilled enough to pull it off.

The story itself is rubbish. Either that, or I completely don’t get it. However, the cutscenes are sometimes quite awesome in their own right. Even if they don’t make a lot of sense, they score on the “coolness” front. This is one game that I will be playing for quite some time!

Overall Impressions

There’s definitely a difference between console gaming and PC gaming. For one thing, not one of these games, at any point in time, crashed. I do not know what happens on a PS3 if a game crashes, and that’s probably a good thing. Not having to deal with a myriad number of hardware configurations certainly helps. You can see developers exploit this as much as they can when they go with over-the-top effects. Why not use every single cycle, eh?

Another point is the cultural difference. Most of the games I play on the PC are heavily western-influenced. On the PS3 however, I see a lot more Japanese games. The flavor is most certainly different. There’s a lot more attention payed to style and flash, and the humor is much more in-your-face. There’s a lot more button bashing, as compared to the more measured American and European games.

The next time round when I go on a shopping spree, I’ll be looking at God of War III, either Super Street Fighter IV or Tekken 6, Little Big Planet, and whatever else I can find out there. So far though, I do believe I have come away from the whole experience with a wealth of pointers and insights when it comes to game design and execution. Certainly a worthwhile business investment! ( yeah, that’s my story and I’m sticking to it! )