Making Contraptions

Casey’s Contraptions will be available in the US in a few hours! For those of you living in other parts of the world, it’s probably already available on your App Store. Go get it!

For the rest of you still twiddling your thumbs, eagerly awaiting for midnight, here’s some insight on what went on in the level creation for Casey’s Contraptions.

Casey 640x100

Built-in editor

From the beginning of the project, the idea was to have a level editor built in to the game. The level editor was the very first thing I implemented in the game. Before there were menus, or levels, or anything else, the game was a level editor without any goals.

That’s what Miguel and I used to create all the levels we shipped with. Nothing like eating your own dog food to make something solid and usable. This is the final level editor that players can use to create their own contraptions from scratch and send them to friends.

Level editor

The only difference is that user-created levels only have the goal of getting the 3 stars in the level, whereas game levels have a separate goal. This was mostly because of the UI work required to allow the user to set different goals affecting multiple objects. It would have been way too complicated, although we’re not ruling out the possibility of extending it in the future. Miguel and I had to edit level files by hand to add the extra goal information.

Levels. Evolved.

One thing that worked really well in Casey’s Contraptions is that we had a working level editor from day one. The first prototype was a tiny level editor! Of course, we’ve been refining it since then, but the core was there.

After a month or two of development, we implement some goals and the ability to play through the levels created. That means we’ve been able to make, play, and test levels for 6 months before shipping.

It was having that amount of time to create levels that allowed the level creation to mature and let us discover what went into a fun level, to refine the difficulty, and create much more interesting levels in the end. Some of that was influenced by what mechanics were fun and which ones weren’t (placing something in a pixel-perfect position).

The different game items also had a huge influence over the level design. Clearly their functionality is going to affect level design hugely, but the surprise was that the character of the items also influenced level design quite a bit.

For example, early on, most of the levels were about solving everyday tasks Casey had to deal with: put toys away, knock down a ball from the roof, pop a balloon, etc. But as soon as we started adding some of the more colorful items, like the doll, the piggy bank, or the RC truck, our levels shifted into being mini-stories: The doll is jumping from a building and you need to catch her, the piggie is being taken away on the truck, etc. That’s when we realized that we could make really fun levels based on playtime stories, not just real situations. Probably about a third of the shipping levels are playtime levels.


Creation process

Initially, we just created levels without thinking too much about it. Used whatever items we wanted and created something that seemed fun. We were learning a lot by doing that: Playing with item interactions, seeing what was possible and what wasn’t, which items we were gravitating towards and which ones were no fun to play with. We weren’t doing it consciously, but what we really doing was exploring the possibilities of the “level space”.

As you can imagine, most of what we created early on went out of the window pretty quickly. Most of the levels were insanely difficult, and a lot of them were simply no fun at all. We were also creating the levels to challenge each other to solve them, and while that was really fun, a lot of those levels were devilishly difficult. We’ve been dialing back the difficulty level ever since then.

The actual process for creating a level wasn’t very involved. Either one of us would go ahead and create a first pass at a level. Sometimes I would sit down and consciously decide to create a new level (especially if it was a level designed to teach about a new item), but more often than not, an idea would come up while doing something unrelated in the game.

Once we had this first pass, we would send it over to the other person and have them either poke holes on the design (if the level can be solved trivially by just dropping a ball somewhere for example), or tweak it to tighten it and make it more fun. Later on, we would revisit levels based on tester feedback or us becoming more experienced.

I estimate that the average time to create a level, from the first item added to the time it was added to the game, was about half an hour. Some of them were much faster, and some much slower though. And for yet some others, we struggled with them for a whole day and finally dropped the idea completely.

What makes a good level

As we quickly learned, making a cool-looking contraption and removing a few pieces does not a good level make.

The best levels always have multiple solutions. Otherwise, it becomes a game of “guess what the designer had in mind”. There are plenty of games like that out there (and I hate them all when I feel that it turns into that). So even if we started with a complete contraption, we would always make sure there were at least two different ways of accomplishing the goals.

The other thing to avoid in a level is the possibility of trivial solutions. If a level can be accomplished by placing a single item that drops and causes the goal to complete, that’s not very fun. It was a tough balance between leaving enough freedom to create your own solutions, but making it so there were no really “cheap” and boring ones.

The stars were tricky. Each level has thee stars you can get, but they’re completely optional. Initially I wanted our levels to be easy to solve, but each star was progressively more difficult to get. Getting the third star required some serious thinking. My reasoning was that people would solve the levels first, get comfortable with the game, and then come back and get three stars in everything. Boy, was I wrong! It was clear right away that most people wanted (no, expected!) to get all three stars in their first pass through the game. So we changed most of the levels so getting the stars is not hugely difficult, especially in the early levels.

Letting the testers loose on the game was an extremely valuable experience. Not only did they catch a fair share of bugs, but they also had a fresh perspective on the game. It was amazing seeing them solve levels in totally different ways than we had anticipated. It was extremely rewarding to see people come up with solutions and even interactions I had never considered even though I had written all the code.

Here’s a good example (Spoiler alert. Skip ahead to the next section if you don’t want to learn multiple solution to one level).

Here’s one level I designed called “Angry Doll” (any references to popular iOS games must be purely coincidence, by the way :-)


This was a level intended to highlight the use of the slingshot, but you already had the doll and one slingshot in place (and the doll misses the pig with its initial flying kick). One possible solution I had in mind was to use the remaining balls and slingshots to alter the course of the doll and knock the pig down.


There are a few different ways you can do that, which made it an interesting level. However, I was totally unprepared for some of the solutions the testers came up with.

This solution uses multiple slingshots on the doll, which changes its course and adds a lot more force to it. It flies straight for the pig and smashes it on impact. Not just that, but for extra style points, the tennis balls go flying out on a totally chaotic pattern, and they get all the stars!!


This other solution might be my favorite. It completely bypasses even the intermediate goal (alter the doll’s trajectory) and instead attaches a slingshot directly on the piggie bank and smashes it against the wall (getting a star along the way). Genius!


Item sequence

There was one additional constraint to making levels that we didn’t start dealing with until fairly late in the project: Item sequence. Initially, only a few, simple items are available to solve the goals in each level. As you play your way through the game, we introduce new items slowly, making sure their properties are well understood before introducing a new one.

The first time you complete a level with a new item, you’re “awarded” that item, and you can start using it in your own contraptions in the level editor. You can even see the stickers of the items you’ve earned so far on the cover of the “My Contraptions” book (I was playing Psychonauts at the time, so I suspect that might have influenced that design decision a bit).


Having a set item sequence meant we had to be very careful which items were available in which level. We kept a spreadsheet with all the levels, and which items were introduced when. Every new item we introduce follows the following steps:

  • When an item first appears, it’s already placed in the level. That means the player gets to see how that item behaves.
  • The next level, we give that item to the player so he or she can place it in the level to solve the contraption.
  • Another level or two making use of that item. That reinforces the behavior of the item and makes the player comfortable with it before moving on.

We were shooting for fewer levels, but it’s not hard to see why we ended up with 72 levels in the first version of the game.

To be really sure we were respecting the right item sequence, we even wrote a script that parsed all the level files in order and spit out where each item was used. It even made sure that every item followed the rules above (first placed in the world, then available to place by the player). This will continue being extremely useful as we add more items and levels in future updates.


Make your own

There you go. That should give you an idea of what was involved in creating the levels for Casey’s Contraptions. In the near future we’re planning on holding contraption-creation contests and we hope to highlight some player-created contraptions. Go ahead and buy the game and start practicing to make your own contraptions. Remember: The crazier the better!

The Curious Case of Casey and The Clearly Deterministic Contraptions

As we gear up for Casey’s Contraptions launch on May 19th, this is the first post in a series dealing with different aspects of the game. I’m planning on covering technical aspects like today, but also design and other parts of development.

Casey 640x100

For those of you who have been living under a rock and haven’t seen the Casey’s Contraptions video, go watch it now. I’ll wait. Or even better, here it is. You don’t even have to leave this page:

Continue reading

The Business of iPhone and iPad App Development

Business coverFull disclosure: Apress asked me to review this book and sent me a free copy. I agreed with my usual condition of being able to really say what I thought about the book, good or bad. So here it is.


Great book for someone starting out on iOS development. You would be at a severe disadvantage if you don’t know about most practices described in the book. Single resource for lots of good practices you’d have to pick up from blogs or Twitter otherwise.

In More Detail…

Don’t be fooled by the title. The Business of iPhone and iPad App Development by Dave Wooldridge and Michael Schneider isn’t one of your boss’ stuffy business book. This is a practical, hands on, guide to making a successful iOS app. It assumes you already have an idea and know how to develop it, but it guides you through the steps of focusing the app, designing it so it can be profitable, and releasing it with the best possible chance of becoming a good seller.

You’ve probably heard a dozen stories of developers who create a great app, submit it to the App Store, and then wonder why they only sold a dozen copies. This is the book they need to go along with that great app.

The book roughly follows the development timeline of an app, from the initial concept, design, implementation, testing, and release. At each of the stages, it covers any aspects that can have a significant impact in the sales success of the app. Even though you can read the book cover to cover, the chapters are very well defined, so it’s easy to jump directly to the part that interests you the most.

With Casey’s Contraptions almost ready to submit to Apple, I read with particular interest the chapters on creating prerelease buzz and increasing awareness of the app. Lots of good advice there.

Don’t expect anything groundbreaking though. If you’ve been following this blog for a while, or you’ve been hanging out on Twitter with all the iOS developers, you will know most of what the book has to offer. It might still be worth it for a few pearls of wisdom here and there to fill some blind spot. However, the book should be required reading for any new iOS developer. Easily the best $20 you can spend as far as impact in the final app sales.

I usually have no patience for technical books with filler chapters and sections. This book is very good about getting to the point, although it has a few sections that feel a bit out of place in that they’re quite basic and technical (like details of generating provisioning profiles, did we really need that in this book?). All in all, that’s a pretty minor point and easy to get around them.

Delayed Release

Probably my main criticism is that the book doesn’t mention one release technique that I consider to be a requirement for any major launch these days: The delayed launch. As the authors mention several times in the last few chapters, once you submit your app, you have no control over when Apple approves it, so you have to play some guessing games.

Instead, you can delay the release of the app once it has been approved, and set it to a known, fixed date in the future (say, a week from approval). At that point, you can really kick in your PR in high gear, contact media outlets, and, most importantly, send them promo codes for your app, even though it’s not available for sale yet.

The goal is to have all the PR hit on launch day or shortly after. The more you can make that happen, the more successful any PR efforts will be, and the bigger the initial launch (and hopefully the following sales) will be.

All in all, The Business of iPhone and iPad App Development is an easy recommendation for the new iOS developer. Go read it right now before you even think of shipping another app.

All It Needs Is Love

The App Store today is a different beast from the one in early 2009, when iShoot ruled the charts. Look at the top paid games on the App Store today. Actually, don’t worry, I did all the leg work for you. Here they are:

Top paid
What can we tell by looking at those games? I see two clear categories: Games with a strong, established IP (Street Fighter, Sonic), or independent games with a huge amount of polish and style. Continue reading

Snappy Touch Picked As Top 50 Developer

Top 50Pocket Gamer just picked Snappy Touch as a top-50 developer for mobile and portable devices for the year. I’m really honored they counted me among the best 50 of the year, especially on a year with so many great games and new developers.

2010 was the year I was hoping to ship Casey’s Contraptions, but that didn’t happen. However, it’s great to see Pocket Gamer took notice of the ongoing work on Flower Garden. Every update feels like a small product release on its own, and there were many updates in 2010!

Flower Garden has come a long way since its initial release on April 2009 (almost two years ago!). There is so much more to the game now than the initial release! These are just some of the most important new features since then:

  • Multiple seed packs
  • Multiple garden locations
  • Day/night cycles
  • Fertilizer
  • Green Thumb Point awards
  • Game Center achievements and leaderboards
  • Sending bouquets through Facebook (and SMS in this next update)

Flower Garden also recently reached the milestone of 5 million bouquets sent. That’s a lot of flowers! Thanks to all the Flower Garden fans for making this possible!