Postmortem: Cacodemon’s Barbecue Party in Hell

January 9th, 2007

Little over month ago I released a small done-in-under-24-hours game called Cacodemon’s Barbecue Party in Hell. This is a little summary of what I learned from the development of the game.
Mr. Cacodemon
There are two ways you can prototype a game. Either you have a very clear goal (and possibly a written design) of what your doing or you have a very vague idea and you pretty much make the game as you go along. Cacodemon was of the later kind.

A year ago I played around with an example from a physics tutorial. In the example I could bounce and nudge blue cubes with my mouse cursor. I remember that it was awful lot of fun trying to balance a box on top of the mouse cursor. I ended up wasting hours playing around with that physics tutorial example.

Two months ago (one week before the turn of the month) I was wondering what game should I create for December. I remembered my experiences from the physics tutorial so I decided to design a game around balancing things with mouse cursor. Before I started the implementation of the game I came up with using Cacodemon as the main character, mostly because he was round (the physics model only supports cubes and balls) and because he could float (so moving him around with mouse cursor would be logical). The goal of the game I was to implement would be to sort souls (would fall from the sky) into different compartments. My design document

With this initial design I launched into production. As soon as I got the basic implementation together I found out that spinning the “souls” was way more fun than sorting them out. So I knew I had to make that the primary gameplay mechanism. The reasoning behind this being that the more fun the primary mechanism of a game is, the funnier the game. So I kept a small design break (washing the dishes) and came up with the “spin the kittens to get their fur off” -design.

The plan at this point was to make a game where Mr. Cacodemon was working at the eternal soul burning unit. And everybody knows that kitten fur is the number one cause of pollution in hell. So kitten and their furs would have to be burned in their dedicated ovens.

It was very late in the development that I came up with the barbecue theme and decided to go with it.

Kitty So Cacodemon was definitely a game born out during the development of the prototype. The original idea was way crappier than the final game. And I don’t think I would have thought of the design unless I had stumbled through all these steps in the development (with an open mind to tweak the game design as I went along).

So the #1 thing that went right was to let the game its own course, not restricting it to the initial idea.

The #2 thing that went right was the momentum of the project. Ever since I finished Jimmy’s Lost His Marbles I don’t think I have really pushed myself to work on these prototypes as fast as I could. And that is usually a good thing, but most of the I just end up wasting the development time in the parts of the game where it matters the least: graphics. This time around I set myself to create the game in one day. This goal gave the development a very nice speed which meant that I focused on the stuff that matters: gameplay.

As happy as I am about the development smoothness of Cacodemon, there’s always the other side of the coin. The very tight schedule and rapid design changes also introduced some problems. The biggest being the very low gameplay meaning of the oven. The oven was a little bit of a left over from the initial soul sorting design.

The oven has a great potential for a nice simple risk/reward game mechanism. The player could decide to bounce around with the kitten to get a better a score (risk being they could drop the kitten) or they could throw them into the oven and get a even better score. The problem was that if I punished the player too heavily on not getting the kitten into the oven (not allowing her to get the score for that kitten unless she tossed kitten into the oven) I made the game too difficult for the beginners. If I didn’t punish the players heavily for not getting the kitten into the oven the reward you get for doing so seems very lite. I mentally wrestled with the problem for a while and decided to go with the beginner friendlier version.

Overall I’m pretty happy with the way Cacodemon turned out to be, the only thing that really pisses me off is that I didn’t think of naming the game as “Pussy Shavers from Hell” as Joystick suggested.

Druid Soccer

January 1st, 2007

The new year is here and so is my fifth (I can’t believe it’s already fifth) done-in-a-week game. And it’s my first two player game, although there’s also a single player mode available. But the game is definitely meant to be played with your friend on the same keyboard.

Druid Soccer

Screenshot of Druid Soccer Screenshot of Druid Soccer Screenshot of Druid Soccer

Download (3.3Mb) (Release 1)

You take part in the ancient traditional game of Druid Soccer.

Rules: Try to push the big rock to your opponents goal and to defend your own goal. Who ever first gets 10 goals wins the match.

Player 1: WASD
Player 2: Arrow keys.

Esc – Will quit the game.
Alt + enter – Will toggle fullscreen.

Game Design, Code & Gfx: Petri Purho ( petri.purho (at) )
Music: The Dongas Tribe (and friends) – Farewell to Erin. The song is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 2.5 -license.

Inspiration source: Experimental Gameplay Project.
Physics model is based on Markus Ilmola’s tutorials.
Druid Soccer uses: SDL, SDL_Image, SDL_Mixer and SDL_RotoZoom

Cacodemon Test Builds

December 16th, 2006

Pluto's Nasty Emperor Cacodemon’s Barbecue Party in Hell is on the verge of a new release! But before I release a new version of the game I’d really love to hear your comments about few gameplay tweaks that I have done. These tweaks where born from the great discussions on the Cacodemon’s Barbecue Party post. So big thanks to everybody who commented.

New players ahoy I need your opinions and feedback. If you haven’t played Cacodemon’s Barbecue Party I really need you to test out the game and tell me what you thought of it. I’d really appreciate it and you get to influence the gameplay of Cacodemon by your comments. If your a new player I want you to run the “cacodemon_test1.exe” or the “cacodemon_test2.exe ” first (the download and installation instructions are below). And after you’ve tested it please let me know if the game was too easy or too hard and any other suggestions and ideas that you came up with playing the game. You can test the original game by running the “cacodemon.exe” and let me know which one them was the best and why.

I’d also love to hear from the old savvy Cacodemon players, what you think of these new gameplay modes and which of the plays the best and why.

So here are the test builds and installation instructions.

1. First you have to download the Cacodemon’s Barbecue Party (5.2 Mb) (release 1).
2. Then download the file (includes two .exes) and extract it into the same folder where the “cacodemon.exe” is located.
3. Then run either “cacodemon_test1.exe” or “cacodemon_test2.exe”.

The test #1 was actually released originally in the Cacodemon’s original blog post’s comments. It has the per kitten scoring enabled. Meaning that you only get a score if you manage to throw the kittens into the oven. This was enabled after the discussion that the oven was basically useless in the game.

The test #2 has the time released kittens mode coded into it. Now the kittens are also released after twenty seconds. So it’s possible to play around with multiple kittens at the same time. And you’ll get a double score for doing that.

In related news I have been working on the high-score list and it will be included in the new release of Cacodemon’s Barbecue Party in Hell and Pluto Strikes Back. The bad news is that when I’m not doing rapid game development, the engineer in me pops up and I end up over engineering my code. So the high-score list feature turned into a obsession of updating my game engine to handle it’s resources in a smarter way. I was a little afraid that something like that might happen. Good news is it is almost done, the bad news is that I’m really busy next week.

In the other news grapefrukt has just released his new cool game called Eater Of Worlds. You should check it out.

Postmortem: Pluto Strikes Back

December 9th, 2006

A little bit over month ago I released my third experimental done-in-under-7-days game: Pluto Strikes Back. The game has gotten a very good response from players and it’s a game that even I still enjoy playing. Here are some of things I learned from the development of the game.

What Went Right

1. Toy First
Building the toy first turned out to be a very good idea. I created a very ugly physics toy, where I had some planets (blue circles), the bat (blue square) and I could launch asteroids (smaller blue circles) by a click of the mouse. And I used this toy to prove myself that the core mechanics where fun enough to build a game around.

I then spend almost half of the development time lubricating this ugly bugger so that it was even more smooth to play with. And toy turned out to be surprisingly fun to play with, unlike the toy that I created for Slimy Pete’s Singles Bar.

I then wrote down all the things that felt satisfactory to me in the toy. Like hitting a planet really hard so that collided with the other planets or managing to strike an asteroid so that ended up orbiting a planet. Then when I started working on the graphically intensive version of the game I made sure that the player would be awarded when he managed to perform these activities. The awards where in the form of sound effects, scores, animations and bonuses.

2. Juiciness
The game feels quite juicy. Credit for this goes to the fact that I did spend quite some time working on the basic strike an asteroid hit a planet sequence. I wanted it to feel very juicy. So I created a very simple spring system to pull the planets back to their original positions. This really did boost up the game and I think it’s the most important part of the juiciness factor.

Here’s a list of things I added to make the hitting of a planet feel really extra juicy.
Elements of juiciness in Pluto Strikes Back

  • The already credited spring system
  • The Candid Camera sound effects (when you hit a planet it sounds like it)
  • Rising score message
  • Running score counter
  • The big bonuses that you get almost every time you strike an planet

Also the background song, which I encountered by pure accident, brings it unique flavor of spinning goodness to the game.

3. Let my baby take it’s course
The first two games that I did, I really prototyped the original idea that I had in my head. I didn’t want to change it or tweak it on the way, because basically I was creating a prototype of that idea. It felt like I would cheat if I changed my mind during the development. Pluto Strikes Back was different. It was much more like a series of prototypes than a one big one.

In terms of gameplay there was very little progress. The original gameplay idea turned out to be very fun so I kept it pretty much intact. Although all the bonuses where developed during the prototyping.

The story did change a little. As the original idea was from a weird dream I had. The player would defend Earth against an asteroid attack by swinging a baseball bat. But that really lacked a reason to try to aim the asteroids to something. Then I figured that maybe Pluto should play the main part, because of the all media coverage. That then quite easily turned into a game that was only about Pluto getting it’s revenge.

I think it’s good to let go of the original idea and let the development take it where ever it is going with it. Clinging too much to the original idea can really kill a good game.

Things That Went Avery

1. No real play testing
Unfortunately I couldn’t afford to use a industry leading QA department to test out my game. I mainly balanced the gameplay based on my own experiences. I should have used couple of friends as testers. In the past I have learned a lot from watching other people play my games.

The biggest problem was the too high gravity of Pluto, that caused some of the new players to get frustrated trying to get the asteroids out of Pluto’s gravity field. I didn’t realize that this was a problem until people started reporting about it at various game development forums. I then dragged a friend who had not played the game to my house and watched how he played. And that’s when I realized that maybe the Pluto’s gravity field was a bit too heavy.

After that I released a quick patch that fixed some random bugs, made the bat controls a bit more firm and eased on the Pluto’s gravity. The new players praised the new patch, but the hardcore players felt that it made the game too easy. Well, you cannot please everybody.

2. Bugs
There where some nasty bugs left in the game. The cause of this basically the same as the last items: no real play testing. The bugs where of that kind that the player would get unrealisticly big scores. Luckily it was quite easy to fix, but unfortunately it really twisted the comparing of the scores.

3. I ran out of time
With Pluto Strikes Back I really did run out of time. Luckily I managed to implement all the important features for the gameplay that I wanted (not including the destruction of planets). But some of the small things that I would have liked the game to have, I could not do in the 7 day limit.

Pluto Strikes Back was a prototype to prove that the core mechanics could work and where fun to play. Right now I don’t know what future holds for Pluto, but I would definitely like to continue the development of the game. Hopefully I have time to release a new version of the game that would include the much needed and desired highscore list.

Btw. Big thanks to everybody who downloaded and played the game. And even bigger thanks to all of you who took the time to write comments and suggestions about the game. The comments really motivated me (and still do) to work on the game further from it’s initial release.

Cacodemon’s Barbecue Party in Hell

December 1st, 2006

I proudly present my fourth done-under-7-days game: Cacodemon’s Barbecue Party in Hell. Actually it’s my first Game-In-A-Day (GID for short) game. Not surprisingly, the idea of GID is to create a game in day. To be honest I did cheat a little, I created the game in the course of four evenings and the total time spent on the development is 23 hours 30 minutes. So in theory its done in a day. Well anyway it’s done in under 7 days and that’s what matters to me.

Cacodemon’s Barbecue Party in Hell

Screenshot of Cacodemon's Barbecue Party in Hell Screenshot of Cacodemon's Barbecue Party in Hell Screenshot of Cacodemon's Barbecue Party in Hell

Download (5.2 Mb) (Release 1)

Mr. and Mrs. Cacodemon are organizing a barbecue party in hell. Unfortunately that means there’s some work to do. You play as Mr. Cacodemon and you have to pluck and grill the kittens.

To pluck the kittens you have to spin them in the air rapidly. After all the hair is gone, throw the kitten in the hell grill (the opening in the left side of the wall) for even better score.

Esc – Will quit the game.
Alt + enter – Will toggle fullscreen.

Game Design, Code & Gfx: Petri Purho ( petri.purho (at) )
Music: Evil Horde – Hangarmageddon (e1m1). Big thanks to Evil Horde (Janne Roivainen) for letting me use his song for the game.
Sound Effects: kitten_burn.wav: The Recordist and the rest from Noise Collector’s aNiMaLs -collection, licensed under a Creative Commons Sampling Plus 1.0 License.

Physics model is based on Markus Ilmola’s tutorials.
Inspiration source: Experimental Gameplay Project.
Cacodemon’s Barbecue Party in Hell uses: SDL, SDL_Image, SDL_Mixer and SDL_RotoZoom