My Microsoft Imagine Cup Attempts

I’ve been entering this competition ever since I was a freshman in college. I was just 16 at the time. Entering pushed me to start looking at all the aspects of game developent; I was focuses solely on graphics programming at the time. I’ve entered every year since and I’ve learnt a lot.

I’ve completely lost the binaries, source code and assets for almost all of the entries. However, I managed to salvage a few screenshots and a video of the previous games. So here they are:


Cleanup Small Island(2010)

This first game was about you, a robot, who’s mission was to cleanup an island heavily dumped with garbage. I entered this one by myself and was surprised that  I made it to the 2nd round. I was in the top forty. Sadly, I had exams and school projects so I didnt get to polish the game the way I wanted to. By the time I was done with school that semester, I only had a weekend left which only gave me time to make three more levels.


XormisGame (2011)

The name in the title is just a codename; I cant remember the final name we came up with for this entry. That year I had a team and I went all out on the game engine. I even wrote the physics engine from scratch. The story of the game wasn’t as good. So we ended up remaking the game two weeks before our submission. Sadly, it wasn’t polished enough for us to make it to the next round.


Unfortunately, these are the only screenshots I could find and they’re old ones of the game in its early stages of development.

Makka Island (2012)

By now you’ve realized that I’m terrible at coming up with names.  This game was about natives trying to reverse the negative pollution done by the use of technology and fight off all those who use technology at all. This one made it to the 3rd round (1st round that year only required a project description) but was no way near polished enough to make it to the finals.

Harmony (2013)

A team mate suggested the name for this one. He’s much better at coming up with names than I am. Rather than promoting the complete eradication of technology, this game’s story teaches that technology and nature can work in harmony without one harming the other. it was heavily inspired by the Ratchet and Clank series because of its humour and its unique and creative weapon designs. I put the most effort into this one:

  • I wrote a deferred render system. Soon after I switched it to a light pre-pass render system because it offered more material variety. I also made a forward render for less powerful machines and made it possible to switch between the render systems at any given time while playing.
  • I wrote a level editor to make level design easier. Even though it wasn’t as good as I intended, it did serve its purpose.
  • We spent hours developing the story and the characters. We only could make a chapter of the story because of the game’s scope.
  • We wanted to have motion-captured cutscenes and voice-overs. We were going to use a kinect to do the motion capture and NI-Mate and Blender3D to target the animations to our character. We didnt have the time to get them in so we didnt bother.
  • Remo: this was a cool idea I had that would allow me to play the game using any mobile device. It’s a project I plan on continuing once I have the time. I’ll be talking more about it in another blog post.

The project required more time to complete so we ended up not submitting it. The team got disbanded shortly after, so no more work was done on the project.

More screenshots for Harmony can be found in my Dev Diary posts(link, link, link)

Project Exit (2014)

I got a message from someone one day saying that he needed some help with  his imagine cup entry. I agreed then we got to work right away. His name was Orane Campbell. His game, which he developed in only two weeks, had wont the local competition and advanced to the finals. His presentation was unique because he did it in-game. The game’s levels and animations were also good; he’s a really good artist.

From the on, we had two months to make the game ready to compete against the other top developers from the other countries that made it. For most of the time, we were working remotely; we used skype and source control to talk and share code. It took me some time to get used to Unity as well as all of my previous entries were done using XNA. Of the two months of development time we had, the first time we met in person two weeks before we had to leave for the world finals in Seattle. This is a pretty impressive story if you ask me. Even thought we didnt win, the experience was good and I now know another developer with the same ambitions I have. We’re so much alike that its a bit scary.


The greatest lessons we learn are usually those we learn by experience. Here’s what I’ve learnt from the past five years of entering the competition:

Don’t procrastinate!

Procrastination was what caused my first three failures. It’s usually accompanied by overconfidence; you feel as though you’re going to make it in time until a bug hits and has you searches for fixes for days. During planning, don’t make your milestones so tightly packed that if a bug comes up you’ll have to go back to the drawing board and set the milestones all over again.

Work with a team

The bigger the scope of the project is the more effort, time and skill required to finish it. I did have a teams after my first attempt, but my lack of leadership ( and communication) skills made it seem like I was still working alone. I was slow to learn proper team management, largely due to my non-existent social skills, so those entries failed for the very same reason. Being the team leader doesnt mean you just assemble a bunch of persons and put them to work. You need to find the right persons for the team: people whose skills you need, not just friends; people who who work well with each other; people who know how to work with a team; people who are as passionate about the project as you are. Don’t be afraid to remove persons who aren’t performing from your team. Having them around means putting the entire project at risk of being incomplete. There’s still a lot I need to learn about working with other persons, but I definitely don’t make the same mistakes I made before.

Work on gameplay first

Since I started programming, my focus had always been on making game engines, not games as a whole. So naturally the game engine is the first thing I start working on when I started each game. By the time I was done, only a small amount of time was left for anything else. All of my entries had pretty solid game engines but no decent gameplay to show off what they can do. The gameplay-first approach is the approach I take coming up with any new game. Based on my experience, players couldn’t care less about the engine you’re using; if the gameplays isnt good, they wont want play your game.


I was too eager to start coding so I’d put off planning, which is the primary reason for all of my failures. Had I planned properly, I’d have allocated enough time to cover all the areas necessary to have a polished game ready in time for submission. The lack of planning is the reason most projects fail.

Be objective

Don’t be too mesmerized by your own handy work that you fail to see the any flaws in it. Listen to your team mates; they are able to tell you what the game is like from another perspective from your own. At the time of implementing some of the features I thought they were the greatest things in the world. Now that I’m looking back at those things I’m like “meh”.

Set deadlines and stick to them

This one gets a lot of people. We often don’t set deadlines thinking that we have everything planned out and that we can get it all done in time. If we do set them, we don’t meet them. The key thing here is to set realistic deadlines. If you need help meeting them just get a third party to enforce them.


My game engine-first approach failed many times over (not just for this competition). It took me a while to muster up the courage to try to work on gameplay first. I just couldn’t stand the idea of looking at an ugly game and disorganized code while working. But it turned out for the best. I was often too tempted to take on the easy yet unnecessary tasks because I wanted that feeling of progress but ignored the tasks required for the success of the project.


I’ve use the knowledge I’ve gained from entering this competition to make me a much better game developer. I’d recommend entering Microsoft Imagine Cup or any other competition as a way to pushing yourself to learn new things and to become a better developer. You wont regret it.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s