Man Or Goat is a game where you listen to goat noises and decide if it’s a real goat or me pretending to be a goat.
First let me explain why I had to draw 972 goats. I wanted my game to have some longevity. I wanted the player to look at the level select screen and think :
“I’m enjoying going though all these levels, and there are still loads of levels left!”
I decided that 81 levels with 12 goat noises per level was about right. 81*12 = 972 goat noises. That should take the player a while to get through, and even longer to go back and get higher scores.
But why draw 972 unique goats? In early prototypes of the game all the goats looked the same. It just wasn’t good enough like this. I felt that 972 visually unique goats would give the game more of a chance on the App Store. More style, more polish and more humour. With this in mind I came up with a plan that would provide 972 unique looking goats by automating as much of the work as possible.
As explained in my earlier blog post I commissioned Banzainer to create 20 fabulous goats in Photoshop format.
From Photoshop I saved each goat part into individual files. I wrote a script to automatically colourize each goat part with 7 different colours and save them all separately. This gave me 2,046 goat parts :
This was a big step but of course but I still had to position these goat parts to make unique goats. This was the difficult bit that stole my summer.
I wrote two web applications to help me do this. The first application let me reconstruct each of Banzainer’s goats from their constituent parts and save the exact positions of each part in relation to one another. Here is the editor with goat 1 fully reconstructed :
After doing this for all 20 goats I had all the data I needed to take all 2,046 goat parts and mix them all up. For example I could now put goat 7’s mouth onto goat 4’s head onto goat 10’s body in any of 7 colours.
But I really didn’t want to do this manually 972 times! So I wrote another web application to randomly generate 972 goats given all the raw data about where each part goes. I wrote a crude looking but fully functional goat constructor for this purpose. All I had to do then was go through each randomly created goat and manually tweak the position of the parts to make sure they were just right :
All of this was a massive task written in HTML5 and C#. It was all quite complicated and troublesome. But I’ve been a software developer since 1995 so I’m used to challenges like this. I knew I could do it.
After I’d done that I had the positional data for 972 pseudo-random goats.
The final piece of the puzzle was on the iOS device itself. All I needed to do was reconstruct each goat from this raw data using the individual goat part images.
The great thing about having all the goat parts as separate sprites is that I could now animate the goats in the game, which you can see a bit of in the gameplay trailer. The goat movement is random except that when he makes his noise I always juggle the mouth up and down.
I hope it gives you some insight into the complexity of creating games. I do think I’ve over engineered Man Or Goat; a lesson learned for my next game project.
Finally, here’s a video showing exactly how I created all the goats! I remember the day of this video. It was sunny outside, I wanted to go for a bike ride. Then the sun went down and it was too late.
Follow me on Twitter for updates.
Download Man Or Goat now from the Apple App Store!