This week my post is going to be necessarily short. Noel and I have been working on preparing the first beta for Casey’s Contraptions, and there is still plenty to do before our intended milestone on Friday. He is deep at work squeashing bugs and working on loose ends, while I have been working on creating levels. Yes, you could say I got all the fun while he was hard working, but somehow solving those bugs always involves the rag doll thrown around, poked, squashed, and generally mistreated during his tests (I have this theory that is all due to his repressed feelings as a game developer that doesn’t want to make violent games; he is probably dying to make a zombie FPS). Anyway, look at the pretty thumbnails of my levels!

I still have plenty to do before Friday, so you will have to tune in some other day for part 3 of the Designing Casey’s Contraptions series (if you have not read the previous posts, they are here, and here). While the more artsy readers wait, the coders will have another (small) ration of… Core Animation (I bet you were not expecting it, given the title of the post and everything).

Continue reading Scrolling Hell (Core Animation Games 3)

Following with last week’s post on designing the interface for Casey’s Contraptions, and since I get lots of questions about it lately, I am going to continue with how I create the game assets themselves. Yes, this means there is going to be a part 3 with the rest of my UI misadventures next week. Sorry about that.


All the drawings you have seen, from the first sketch I sent Noel to the later interface designs, were created in Adobe Illustrator. Vector graphics allow me to scale assets without losing quality, adjust shapes, and change colors easily. I know plenty of iOS artists use Flash, but I am way more used to the Illustrator tools.

From time to time people ask on Twitter if there are cheaper alternatives to Illustrator. The truth is there is nothing out there that comes even close to the power and flexibility of Adobe’s tools. Since I have to be cheap (life of the indie :P) what I do is not buy every release (I am still using CS3 right now). If you have an old version of their products the upgrade price is usually more affordable. Educational discounts are also really nice if you are a student.

I also use a Wacom tablet, a 6×11″ Intuos 3 I got a while ago and had not seen much use until recently. The usual question I get about buying one of these is how big it needs to be. I feel more comfortable with something around letter size, that allows for some arm movement. There is a world of difference between even the smaller tablets and using the mouse though.

That’s not my arm. My arm is way hairier.
But my Wacom is like that one.

Some people like to sketch first on paper, scan, and then clean up and color with Illustrator or Photoshop. I did that at the beginning, but the more used I get to the Wacom, the easier it is to just start from scratch directly on a blank document on the screen. I still draw doodles on paper any time I can; even if you don’t think you have any artistic abilities, all you really need to get better is lots of practice, and drawing a variety of subjects so you expand your visual vocabulary (by the way, Aaron Diaz’s blog is worth its word count in gold for any aspiring illustrator, bookmark it!).

In Illustrator I use both the Brush and the Pen tools extensively. I have a variety of brushes I created for Casey’s look, but they are all basic calligraphic brushes of different sizes, with size dependent upon how much pressure I exert with the Wacom’s pen.

Normally I use the Brush to draw the outlines, then the Pen to both simplify lines that got too many points and create color areas. I will get to coloring in a bit.

Continue reading Designing Casey’s Contraptions, Part 2

Last week I posted a couple Casey’s Contraptions screenshots as intro to yet another Core Animation technical rambling. One of the images, my latest try at designing the “Level Completed” screen, got a few interesting comments from other designers, both here and on Twitter. These screens take a long time to get right, and although people playing the game usually spend just a few seconds on them, they make the difference between a seamless experience and one with harsh continuity bumps.

Today I wanted to review a few of my own “failed” designs for Casey’s Contraptions. And I quote failed because these are a normal byproduct of development; to know what works, you need to create, analyze, and discard lots of things that don’t. Discarding is hard, but is also going to help me explain another pet peeve of mine: the widely accepted idea that design is all about looks. You will notice that some of the discarded designs actually look better than the final ones, and I will try to explain why they were still a failure.

A final disclaimer: Casey’s Contraptions is still pretty much in development. Whenever I say “final”, read it as “current” :)

Continue reading Designing Casey’s Contraptions, Part 1

Progress this week has been slow on most of my projects. Noel and I were working on Casey‘s tutorial, then we started implementing more objects so we can create some more levels and start beta–testing. Sneak peek:

Some of the new objects introduced this week.

I also finished the design of the “Goal Completed” screen! This is a big one for me, mainly because the damn thing has changed so many times during the life of the project I got like a dozen different designs archived! That may require its own post, but here is the final one (as of this week):

Final(?) Level Completed Screen

Since obviously I am not involved in enough projects already, I decided to promote yet another Twitter community project: #iSketchADay is an original idea by Craig Sharpe (the artistic half of Retro Dreamer) to promote more doodling. Join with your own sketches on the Twittverse.

My “DEMAND REAL CHARACTERS” campaign for #iSketchADay

I also continued working on Evil Project #7. After some more Twitter voting it even got a name: Elephant Run!. Owen‘s suggestion, “Elephant Run: A Banana Bonanza” was my favorite by far.

Continue reading Space-Time! (Core Animation Games 2)

So you want to make a 2D game full of real 80s technology: sprites, tiled backgrounds, parallax scrolling, and all that goodness. The last console you played a 2D RPG game in, back when you had hair, is long lost in the rat’s nest behind your TV stand. Your iPhone’s processor can run circles around that old console but you wonder… how do I do it?

Now, if you were that kind of person, you would go to the platform’s documentation site for answers. But instead you check with Google, and after a few visits to random websites and auto–cloning forums you reach the following consensus with the rest of the internets:

  • You need to use OpenGL for the ultimate in both power and beginner’s frustration.
  • Or better, use one of those open source frameworks that will make your transition from ActionScript a breeze. Their forums hopefully will answer any questions that the non–existent documentation cannot. Cocos2D seems popular.
  • The losers that read documentation keep asking about something called Core Animation, but wiser and more anonymous users know better than to trust Apple “technologies”. Core Animation is slow, buggy, and inappropriate for anything harder than a match–3 game.

I say, not so fast. You see, I have a problem with thesis that are never proved. I especially don’t get what in that screenshot you sent me of three bats, a rat, and a stick figure is so sophisticated that requires low–level access to the hardware. So let me present you a different thesis, and then let’s try to prove it:

Thesis A: Core Animation is just fine for most 2D games.

Before we begin: no, I have no idea if thesis A is true or not. I am making it up as I go, so consider it an exploration of the capabilities and limitations of Core Animation and related technologies. If we don’t end up with a whole game, at the very least we will gain some insight into how this fundamental part of any iPhone app actually works.

Continue reading Frame-by-Frame Sprites with Core Animation

It took me a while this year to go through the dozens of Thin Mints, Do-Si-Dos, and Samoas I secured last spring. I remember how hard I fought with empty promises and unconvincing pouts for just “one more box”, how I pleaded and bargained with those little evil cookie-keeper brats and their greedy families. I even stashed my very favorite Tagalongs in various hidden locations around the house so they would last longer. I was not letting anybody else, at least willingly, participate on that forbidden pleasure of licking layer after layer of sugary goodness.

At the very end, just before that last sinful bite, I paused full of doubt. I looked at that delicious cookie with anticipated regret for a while. But I could not help it. I gulped it just like all the ones before it. Just as last year, all good things get to an end. Would they taste as good if I had them all year round? Probably not.

Continue reading Cookies

The other day over breakfast I was telling my wife about a Mac application I was prototyping. I had spent all the previous day making a global hot key bring the app to the front, with its main text field selected so you could start typing right away; then I had another key make it disappear returning focus to the application you were on before, and to whatever text you were typing or had selected at the moment. I made it also behave with Spaces and Exposé, and as you can imagine I was pretty happy about my progress. I then reflected out loud if any Windows developer would even think about all these little but important details. She pointed out that I should be more tolerant towards all the Windows users out there. As usual she was right, but annoyed I said: ‘user interface design is not about tolerance’.

The thing didn’t ring true then, and it has been haunting me since. What is interface design about then?

Continue reading Habits for Better Design

Today is Mystery Coconut’s second year anniversary, so I thought it was as good a time as any to do a recap, and then go through my plans for the immediate future.

Continue reading Going Indie

You have been rejected. Last Friday you thought you had hit bottom when you got rejected by the barista of the day in account of you flirting with the barista of a different day that showed up out of turn to, surprise, have a coffee. What can you say, you got confused.

But things just went down hill from there. On Sunday your main competitor, Mystery Bunny Games, publicly criticized you on their blog! They pointed out that all that Telnet business you were babbling about made your applications waste memory, increased the size of your binary, and misspent time initializing frameworks that were never used in the final release of your app. They called it a disservice to the users, that have to suffer slow, bloated apps cause some lazy developer decided to add thousands of lines of code just for his own convenience. Ouch.

If that was not enough, this morning you got rejected again… by Apple! They discovered they could use your binary to upload Lua scripts and run all kinds of hacks on the device. Somehow they didn’t thought that was cool.

But you have learned the lesson: never follow any advice you get on the intertubes. Now, let me explain you how you can fix two of those three problems.

Continue reading Conditionally Linked

You have been staring at that email for a few days now. Is only 4 lines long, but boy, you are at a loss on how to reply. This has never happened to you before, and no quantity of coffee ingested today, visits to the barista of the day, or cookies stolen from the grasp of old ladies in the grocery store’s free samples isle has helped at all. Is like one of those Choose Your Own Adventure books. You can see your 3 options at the bottom of this page: send (another) polite response, ignore it, or make fun of it on Twitter. But years of practice looking pages ahead tell you all these are going to resolve in a really short paragraph followed by a centered, 14 point, Souvenir Bold “The End”. And you hate Souvenir Bold. The email reads:

I am in love with #nameOfCancelledProjectHere#!
Can you send me a .app or .ipa so I can play it?
I am seriously so mad right now!!!!

There you have it. A true fan of your work. Somebody that got really excited about a 1–day prototype by just reading about it somewhere online and looking at some awful screenshots of programmer art. If you compare it with the crap your friends are giving you lately about your projects this person is the best thing that ever happened to you! And he is seriously so mad right now. Not with one, or two, but with four, four exclamation marks! He was your best fan, but now he is so pissed he will forever be your worse detractor.

Continue reading Shelve it