Email RSS Feed LinkedIn Twitter Vimeo Flickr

Bursting With Colour (Global Game Jam)

January 29, 2014

This past weekend I participated in the 2014 Global Game Jam at the University of Waterloo. Lumos cofounder Matthew Miner joined my team, along with Ubisoft level designer Brent Mitchell. Together we created the game Bursting With Colour.


The theme was "We don't see things as they are, we see them as we are." We spent Friday brainstorming ideas. We kept ideas 2D because we wanted to experience Unity's new 2D system. The three of us also enjoy multiplayer games, so that was another factor our ideas involved. In the end, the mechanic we kept coming back to was switching colours of blocks to make them active (able to stand on).

Game Design

We decided on a co-operative 2D platformer where two players using Xbox 360 controllers work together to climb platforms as high as they can. The challenge being that of the four colours of blocks that make the level, only two can be active at a time. Players may switch active colours, but must be careful as it can lead to players falling off-screen (death) or making a block appear where they are already standing (death). Players may not switch to the colour the other player has active, even if that player has died. The camera moves upwards, forcing players to climb higher, and gains speed over time. Each player only has one life. You get a score based on the maximum height you achieve, and double the points while both players are still alive.

We have done game jams before and we agreed there is no point in doing all-nighters and burning ourselves out. We did that in the past and found that by Sunday, tasks that are typically simple would take considerable amounts of time to complete... and you just feel bad. So we went to sleep Friday night around 2AM and were back to work around 11AM Saturday. No coding was done Friday night.


Our goal Saturday was to have a playable version of the game, and Sunday we would polish and play test. Amazingly, things actually worked out according to plan.

We split the team up as follows: Matthew on art, UI, audio, and additional programming. Brent on game mechanics (player death, camera movement, etc) and level design. And I worked on the character controller, Xbox controller input, scoring, and parts of the procedural level generation.

Controller Input

For the Xbox 360 controller we used an Input Manager from the Unify Wiki and modified it to suit our needs. Brent was developing on Windows, while Matthew and I were on Macs. So we had to have variations of the input for player 1 and player 2, for both Windows and Mac, resulting in 4 inputs per button we used. To get the controllers to work on Mac we installed a driver from

Character Control

For character control we grabbed the 2D robot from Unity's Sample Assets package. We had to do quite a bit of tweaking to the code to get our input and mechanics to work the way we wanted to. For instance the character was able to stick to walls if you jumped and held the joystick in the direction of the wall/block you were colliding with. There is also a bug in their code that caused the character to have different jump heights depending on the framerate achieved by the computer you are on. Needless to say, I spent a lot of time fudging around with this.

Art & Sound

The art was made entirely by Matthew. None of us are artists, so we went with a simple design we knew we could achieve. To save some work Matthew took the sprite sheet of the sample robot character into PhotoShop and simply turned him into outlines. For audio we found sounds and music that were free online, including the infamous Wilhelm Scream. We chose a free retro font to go along with the art style. All the UI was implemented using Unity's GUI system.

Level Generation

We knew we didn't have time to make a bunch of awesome levels. And we also didn't have time to make a kick-ass procedural level creator. So we made a half-ass procedural level creator! There isn't much to it really. We define how many units wide and tall the level should be. It performs a couple of for-loops using those numbers to generate rows of tiles. For each tile it creates we have defined percent chance of it being the same colour as the last tile that was generated. We found that having this number higher made the game easier. There is also a defined percent chance of a tile being blank (non-existent), which we found made the game harder the higher it was. Lastly we made it so that ever 3 rows, the entire row is blank, allowing for more interesting jumping. We thought of these values and tweaked them quite a bit before finding a great balance.

for (int x = 0; x < gridWidth; x++) {
  // Only create a new tile a specified percent of the time.
  if (Random.Range(0f, 1f) < chanceOfBlankTile) {
  LayerColor tileColor = LayerColor.Solid;

  // Randomly decide if this tile should share its neighbours color
  if (lastColor != LayerColor.Solid) {
      if (Random.Range(0f, 1f) < chanceOfNeighbourColour) {
		  tileColor = lastColor;

  // Randomly decide which color to make tile.
  if (tileColor == LayerColor.Solid) {
      tileColor = (LayerColor)Random.Range(0, LayerManager.layers.Count - 1);
      lastColor = tileColor;

  CreateTile(tileColor, x, y);

After the jam I made the game start easy (high chance of sharing neighbour colour, low chance of blank tile) and progressively (every 12 rows) get harder. This should help beginners.

Unity 2D

We did not have a single issue using Unity's new 2D system. Now and then in our code we would forget to use Physics2D instead of just Physics and other little things like that. But overall it just worked. We never had to worry about the z-axis. It made development incredibly easy.

Play Testing

By midnight we were able to play an alpha version of our small game. Art and audio was in and the mechanics worked. So we spent about an hour playing the game and tweaking values here and there. It was the most surprising part of our day because the game was actually pretty fun. We found ourselves constantly screwing each other over by accident, but eventually working together to get high scores.


We started work on Sunday around noon. We spent the remaining 5 hours of the jam tweaking character controls, level generation, and polishing art and sound. We also added keyboard input and the bonus score system.

By 6pm we were at the University of Waterloo to show off our work, and I think it is safe to say it was a hit. A great experience overall. I made some improvements the day after the jam finished just so I could put the game on the shelf and not be bugged about some stupid little problem it still had. If you would like to try the latest versions of the game, check out the links below.


Bursting With Colour (Single Player, Windows)
Bursting With Colour (Multiplayer, Windows) Comments...

Farewell Ganz

February 26, 2013

The time and opportunity has come for me to stop working for game studios and begin working full-time with my own company, Rebel Hippo Inc. Along with my swanky co-founder Matthew Miner, our company is best known for creating Lumos Game Analytics for the Unity game engine.

We've been brewing up big plans for how we'd like to transform online services in the game industry and soon we'll reveal our latest and greatest product which will be of great interest to indie developers and small studios alike. If you're a fan of Lumos (of course you are!) then, yes, it is appropriate for you to be overflowing with joy right now. Expect similar ease-of-use but much more awesome. Stay tuned!

This change means I've stepped down as the lead game designer of the mobile team at Ganz. But fear not Frocket fans, there are some wicked ideas being tossed around at the studio that you and I should both look forward to. We learned quite a bit from developing Frocket and iterating on feedback. It's safe to say the future titles are sure to be barrels of fun (see what I did there?).

Later this week I'll be moving to the Kitchener-Waterloo area to work out of our office at the VeloCity Garage. It'll be cool working in that space with fellow entrepreneurial nerds. Aside from gaining peer knowledge on topics such as world domination, it'll be great to work in a place where everyone shares a passion and desire for bettering this tech-savvy planet we live on.

An ongoing project Matthew and I will have in our office space is building a MAME arcade machine. Aside from taking the quarters from every sucker in that complex, it may also serve purpose as a demo machine for some of our new products coming out. I'll be posting more on our creation process of the machine since we're doing it from scratch. Legit.

That's about it for now. Enjoy this image of video game deaths in the style of Edward Gorey's Gashlycrumb Tinies!


Play Fight 2013

January 18, 2013

This year I'll be competing against some friends in a new yearlong game competition called Play Fight 2013. The goal of the competition is to see who can make as much money as possible off indie games, while being open about the entire process. So I'll be sharing progress updates regularly on the Play Fight site, as well as my earnings, marketing strategies, and of course development decisions.

The competition started January 1st so there's not much to see yet. But I have created my first post which outlines my strategy, as well as an initial prototype. I haven't heard much from my opponents, but I do know they are starting off with more ambitious projects that will likely involve server-side functionality.

This is the competition's first year running. We envision by the end of this year we'll have pages on the site containing revenue leaderboards, code commit histories, and possibly even awards for milestones such as being reviewed by a well known source. We hope that by having so much transparency we can help other developers get a better perspective into what it means to be an indie developer, and hopefully how to be successful at the same time.

For me I hope this competition will really test my limits. Although I'm starting off a little weak, the ideas I have for later this year will showcase complex tech with innovative game design. But I suspect what myself and everyone else involved or watching this competition will learn most are the deep dark and depressing secrets and strategies to marketing an indie game.

Be sure to follow @PlayFight2013 for the latest progress and posts on the participants.

Page 1 of 8 Older » Oldest