Debugging is like farting — it’s not so bad when it’s your own code.

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!


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.

Bayonetta

Bayonetta

Bayonetta

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! )


Oversight hits 1.0

Posted: July 10th, 2010 | Author: | Filed under: Soapbox | No Comments »

Oversight

Oversight

Just a short blurb that Oversight, the WoW addon, has hit 1.0 and is now available both here as well as at WoWInterface. Enjoy!


Oversight goes Beta!

Posted: March 20th, 2010 | Author: | Filed under: Soapbox | No Comments »

So the WoW addon finally made it to beta. For all you PvP buffs out there, the main Oversight page can be found here with download link and all. This is one of the few projects I’ve actually undertaken to do myself. I didn’t want to take on a full-fledged game as I would undoubtedly delay and defer. Indeed, even this one did get delayed in favour of actual paying work.

Also, in the course of doing this, I discovered Sony Vegas. It seems really popular amongst the machinima people, and rightly so. It’s sooo easy to use. Much easier than Premier Pro. I put together this second video in scarcely less than a night’s work. Also spent the $68 on it, and it feels well worth it. That’s how software ought to be made.

I also got new hardware. I’m now sporting double 22″ LCD widescreen monitors, and a back-lit Razer Lycosa keyboard. It’s so handy, but more importantly, it makes me feel more like a professional developer!


No longer United, we make an Ogre out of it.

Posted: March 1st, 2010 | Author: | Filed under: Soapbox | 2 Comments »
Unity 3D

Unity 3D

As the saying goes… it was love at first sight, then I took a second look! You had my first impressions from a previous post. It is indeed a very user-friendly platform for the indie developer working on smaller projects. However, when you scale up, there are several glaring issues.

First and foremost is asset management. When you have a team, or even just more than one person working on a project, you want some way to be able to synchronize your efforts. The defacto tool I’ve been using for this is Subversion. However, Subversion cannot work well with Unity iPhone. A lot of their linkage meta-information is stored in binary files that do not merge well in case of conflict. Unity Pro, for other platforms is supposed to have some switch to enable subversion support. But for the iPhone, we are bone dry.

The solution to this, is Unity Asset Server, which comes in at a hefty $200 per head in addition to your Unity Pro license. From the reviews I’ve been reading, it isn’t that good at doing its job either, making it difficult for me to recommend to my studio head.

The second problem is compilation and import times. As the number of assets grow, it takes a longer time for Unity to grab them and put them within the development environment. Also, the time it takes to compile to device also seems to grow almost exponentially. So not only do I have my developers hovering over one machine waiting to link their scripts in, but those that are actually on it are twiddling their thumbs waiting for the binaries to compile. Not exactly the pinnacle of productivity.

The final nail in the coffin is performance. On the iPhone 3G(S), our small demo level runs at a steady 30 fps, which is all fine and dandy. However, on first-gen or second-gen devices, this drops to a dismal 10 fps. We shudder to think what the bigger levels would run at.

So we bit the bullet and said goodbye to Unity, and all the licensing costs we invested in it, and looked to other alternatives. Shiva, being similar in concept, would most likely be the same deal. Irrlicht has reportedly been successfully ported over to the iPhone and used in a few commercial projects. Unfortunately, these ports are not publicly available, and I’ve no appetite for grinding my own. The SIO2 engine looks ready, but I didn’t quite like the structure and documentation.

In the end, it’s back to Ogre. Even though the iPhone port is on RC1, and getting it set up and ready to work in our production environment took a bit of legwork (so spoilt from plug-and-play SDKs), it seems fairly stable and performs reasonably well. With 20fps as my lowest cutoff benchmark, I could render 20,000 triangles onscreen on a first-gen iPhone. 30,000 for a second-gen. And a whopping 165,000 for a 3G(S).


Legal e-Books

Posted: February 16th, 2010 | Author: | Filed under: Soapbox | No Comments »
InformIT

InformIT

So there was much discussion in one of my classes about shifting our 3D programming module from DirectX to OpenGL. While this is by no means set in stone yet, I decided to go out and do some research. And so I went to the store to look for the red book and the orange book. They were exactly what I wanted so I hefted the two-book compedium, then I stopped.

These things are heavy! Who in the modern twenty-first century world would lug such things around? There must be an ebook version somewhere, right? So I went to amazon.com. They had the book, but no e-copies. Neither did Barnes and Nobles. So as per standard procedure, I asked the great Google god. Google god pointed me at all manner of torrents and rapidshare downloads. Ugh, no wonder piracy is so rampant nowadays. Things just aren’t acessible!

There was a site though, called InformIT, that is apparently some spawn of Pearson. Sounds reputable enough. So I went in and took a look. Indeed they were selling the ebooks, and a cheaper price than the regular books too. So with glee, I bought up the orange book. The download came in a pdf format that was instantly accessible when I completed payment. There was no DRM or annoying proprietary formats in the way. So I’m happily going to upload this to my iPod Touch for reading on the go without having to go through some sort of fitness regimen.


In Unity we stand!

Posted: January 28th, 2010 | Author: | Filed under: Soapbox | 1 Comment »
Unity 3D

Unity 3D

So one of the projects I’m currently working on that (being so covered in the traditional game-development shroud of secrecy that I cannot reveal anything about lest they deem it necessary to terminate my immediate existence)  uses the Unity engine for iPhone development. I believe there are also hopes that this may expand to encompass the newly announced iPad.

So how easy is it to create games using this new toy? Pretty easy it seems, to begin with anyway. Grab 3D models from your artists and drag/drop them into your assets folder, and they automagically appear in your editor. Match it with the appropriate texture, add a few scripts to implement behavior, and voila, instant game! At least that’s how the theory goes anyway.

How does it measure up in real life? Not so good, though admittedly, it could be due to the limitations of the iPhone edition, as well as my own relative inexperience with the engine. As I suppose could be expected, there’s the performance limitation for the iPhone. We’re limiting ourselves to 400ish polys for the main characters and 100 or less for environmental objects. The terrain engine is unsupported on the iPhone, so our terrain is merely a simple mesh. Also unsupported are shaders (though there’s said to be some emulation thing we haven’t figured out), and things like stencil shadows. Some developers have apparently been devolving to ancient techniques that from the 80’s to produce better-than-blob shadows.

Then there are other unsupported features like networking. Unity comes with full multiplayer support thanks to Raknet (which incidentally is my favorite network library). However, this is not supported on the iPhone platform. There are theoretically .Net sockets, but my junior programmers have opted to write their own plugins in Objective C, so they can incorporate multiplayer bluetooth support as well.

The GUI system is important because this is a major yardstick for the polish of the game. Unity chose the interesting approach of having their GUI system mostly script based. This makes it very possible to create spiffy animated UIs with all sorts of effects only limited by the programmer’s imagination. There doesn’t seem to be a visual editor for it, so the artists are at the mercy of the programmers to implement their visions. To be honest, I like it this way, as artists seldom have the mathematical background to implement the beautiful movements that programmers can pull off rather efficiently. The could do it with a Flash-like editor, but I guess that is something that Unity could eventually evolve towards.

Scripting happens in a choice of Javascript-like or C#-like languages that run on top of Mono. The team has mostly opted for the Javascript approach because it looks more familiar to most. As far as scripting behavior goes, it is pretty good, and I haven’t found anything glaring to complain about. It gets the job done. I’ve yet to see if we can do more esoteric operations, like programmatically attaching meshes to bones, controlling animation cycles and digging into the guts of the engine. How deep can you go in a drag/drop game editor? That’s yet to be tested!

Overall, I am happy but not. It certainly does the job. I don’t feel like I’ll have as much control over the process as I would with a traditional engine, which is to be expected. The limitations for the iPhone version put a severe cramp on our style, but the PC version looks pretty promising from this side of the proverbial fence.


WordPress and Facebook

Posted: December 3rd, 2009 | Author: | Filed under: Soapbox | No Comments »

So after a bit of scouring the interwebs, I’ve found a plugin that should forward all my blog posts to my Facebook page. So in a way, this is a kind of test to see if it works.

To be honest, I’m not a big fan of Facebook. When I first signed up a couple of years ago because it was the new “big thing”, I got inundated with silly stuff like invites to play games involving zombies, vampires, pirates robots – you name it. These are little more than time sinks. But as time sinks, they are really big! So a couple of weeks after I signed up, I deactivated my account and forgot about it.

Recently, for the Ninja Assassin game for iPhone, one of my tasks was to set up Facebook Connect to update highscores in the game to the users’ Facebook pages. So, in the name of testing, I reactivated my Facebook account, and wo behold, everybody’s still there.

Publicity is publicity, so I’ve looked at new ways to capitalize on Facebook as a way to reach out to people, and this is one of them. So if anybody’s looking for a freelance game developer, drop me a line eh?


Hello world!

Posted: November 2nd, 2009 | Author: | Filed under: Soapbox | No Comments »

Hi folks! I’m currently migrating my website to WordPress. So please bear with me while I push my old articles and stuff over here. Hopefully, with the better ease of updating, I’ll be more motivated to put stuff up here!