Ludum Dare 2013

I entered ludum dare a few weeks ago, the theme was minimalism. I created a top down maze game in the style of NES Zelda games. No enemies apart from moving walls that crush the player, who is a single pixel in size. I have a tough time coming up with an idea for the game because the theme was a bit broad in my opinion.

You can see the player at the bottom.

I made the game with cocos2d-x, and built for OSX and Windows. I added some hacks for using the keyboard on both these systems since cocos2d-x only supports desktops for testing for handheld devices. You can grab the source at github and the builds for OSX and Windows and the entry page is here. I was pretty happy with how it went.


Working on the game today and getting over a cold might have lead to all these bugs in the code:

  • Trying to set first element of array after changing the starting position to the second
  • Checking if an enum is less than zero rather than checking an int
  • Wrong order of operations, added more brackets
  • Check if valid, if int is greater than zero, when zero is valid
  • Not breaking out of a recursive loop when going deeper (This one has been in the code for a while, never noticed because I never needed the collection it was returning to be in the right order before)
  • Image that was to be rotated was the wrong way around to begin with
  • Playing an animation over and over when it was already playing
Sometimes it feels like there is some voodoo going on that causes these bugs but when finding their cause it can be funny.
Screenshot 2012.08.28 18.30.52

iPad test

I’m using cocos2d v1.0.1 to support older iPhone devices for the Gem Jam game. This version dosen’t work on the third gen iPad, it just shows a black screen, this is because the open gl depth is set too low for the iPad3′s resolution, detailed in Spencer Ho’s blog which also shows how to fix it easily!

So here is Gem Jam at iPad retina resolution with the same sized gems as on the iPhone:

It’s a bit crazy, I think this might be a secret mode and have some bigger gems for the iPad.

Ludum Dare

This weekend I decided to make a game for the ludum dare competition. I didn’t get to spend the whole weekend on it, but I think it went ok. Setting up a new project took me a while and this was one of the things the site said should be done before hand, oh well.

The theme was evolution and I wanted to make a game where fish would evolve into humans some how.

You tap on the fish to make them jump up and attach to the headless suit guys to ‘evolve’. The game also tracks how many evolutions per minute you achieve.

I think I should have built a web based game instead of iOS as it would be easier for people to play it.

Check it out, it’s called ‘On the Origin of the Species the Game’.

The game:
Source: github
OSX simulator build: github (zip)


I’ve been playing with the pitch of the sound effects. At the moment there is a single effect for the gems smashing but I’ve put in some things to change the pitch so it doesn’t sound the same every time.

Start off with a pitch a bit lower than the default
rase it a bit the longer the line is
rase it a bit more if this is the second line in a chain of lines
add a bit of random so same length lines don’t sound the same

It sounds better now than playing the exact same effect over and over.


I added some effects to the lightning power-up in Gem Jam.

There are a bunch of lightning tiles placed together when the screen goes dark. There was a lot of checking angles and if the lightning was forked. It was also difficult to check the which gems were affected because I play all the gem effects when iterating through the grid to remove gems and make them fall down. The cause of them exploding wasn’t stored.

Hexagons and Night Owls

I went to night owls last night to work on the game and to catch up with friends.

In Gem Jam I wanted to re-write the code of the lightning power-up. Before it made lines of gems to destroy in groups of three across the grid and would fork, each line would explode one at a time, and not always in a direction that was useful to the player. It also didn’t look very much like lightning.

I decided to change the way it worked first by finding the maximum length line to the edge of the grid from any gem. Since the gems are stored in a 2d array but displayed on a hexagonal grid I tried to draw up a diagram of how the gems sit in the array and which ones are next to each other.

This didn’t work and made everything too complicated to follow, so I simply counted the gems in game and tried to come up with some rules that would fit. Most of the time I have used different code for odd and even columns, this can be a bit tedious because it’s usually just adding + 1 for odd columns. After figuring it all out it worked for half the grid and I was getting tired and not wanting to figure out why just wanting it to work. But in the morning, after going over it again for a few minutes and changing a few things it worked! (This seems to happen a lot).


Since replacing my programmer art with real art the edges around the selected gems don’t look as good anymore. It was meant to make the gems look pushed down, but the new down state gems look brighter and dosen’t really match the old edges anymore. I would like to keep the edges them in some form or another since they go all the way around the group of selected gems.

Continuous game feature

In the gem game, there is a ‘system’ or feature that lets you play the game when any title screens or menus are up. The only place where you can’t play is when the game is over and there are no gems on the screen. Also you can’t select gems that are falling.

The problem is when the level changes, I think there should be a screen saying Yay Wow! You have finished a level Woo! But when this comes up it looks like it interrupts the game. I tried adding a little animation before the screen comes up but since you can still play the game during the animation it still seems like the screen comes from nowhere. I guess this is what happens when you are attached to a mechanic that dosen’t always work.

I might try to remove the end of level screen and include that information in the animation next.