I wrote iCanSleep after I couldn’t find a tool that matched my requirements.

Both Caffeeine and InsomniaX rubbed me the wrong way – the former does not allow the display to sleep (WTF? Who would want that?) and the latter prevents sleeping altogether (WTF? I can set Energy Saver settings to “Never” myself, thank you).

To be fair: both tools have some merit, just not for me. Specifically InsomniaX has features for MacBook Pro users.

What I wanted was a tool with customizable “no sleep” duration, and not the 5-30 minutes, 1, 2 and 5 hour option of Caffeine, or none as with InsomniaX.

One that

Continue reading »

Tagged with:  

YETIPIPI Gameplay Video

On December 20, 2012, in Announcements, by Steffen Itterheim

Check out this new gameplay video from the official YETIPIPI website:

Get the game here. Note: it’s only available in Germany & Austria for now, worldwide release will hopefully be in January.

You can find more details about the game including a technical postmortem in an earlier blog post.

Also for the german speaking crowd (and those who are really quick to learn a new language): Game One posted a video interview with cartoonist Joscha Sauer about the game. Game demo starts at 11:30.

Tagged with:  

The game I coded is finally out: YETIPIPI

On December 17, 2012, in Announcements, by Steffen Itterheim

I’m really happy and excited that YETIPIPI was released today in the iOS App Store! :)

UPDATE: currently only available in german App Store due to delayed english localization.

Go grab it for $.99 (€.89) try it out and give it it’s (hopefully) deserved 5-Star review.

What’s the game about?

YETIPIPI was a contract project in collaboration with Doubleplus Digital Media Entertainment for Joscha Sauer. Joscha is one of germany’s most popular cartoonists and the mastermind behind the Nichtlustig cartoons (some of his cartoons are also available in english).

The game is inspired by one particularly famous comic strip, where a Yeti pees in a circle, leaving him (or in this case both) stranded in an unfortunate situation.

To survive, our Yeti must drink so he can pee the ice floes floating about in ever smaller pieces. You control the Yeti with the accelerometer to collect items, evade ice floes and to aim your stream of urine.

Continue reading »

Tagged with:  

The REAL Trouble With Android

On August 9, 2012, in idevblogaday, by Steffen Itterheim

It isn’t piracy!Not even close.

I have a problem with terms that are not clearly defined. Words like “much”, “a lot” or as in this case: “unbelievably high”. If you argue that the problem with Android is its high piracy rate based on one developer’s subjective statement and general hearsay, it’s not an argument.

Before I get to debunk why piracy can’t be that big an issue for Android developers, allow me to restate which developers regularly complain about piracy to begin with. There always seems to be the issue that low selling apps see a much larger percentage of pirated copies being used than high volume apps. This is because some pirates download and try out almost everything that’s available just because they can.

Interestingly, the badly selling app developers seem to be those who complain the most about piracy. Because it’s so easy to blame a failure to sell on piracy. See this fictive graph:

Continue reading »

Tagged with:  

Cocos2D Podcast: Earn Additional Revenue

On June 21, 2011, in cocos2d, podcast, by Steffen Itterheim

The latest episode of the Cocos2D Podcast is out!

This time Azam and I talk about the options you have to earn additional revenue from or with your apps, using iAd ads, In-App Purchases, selling your source code and other ideas.

Cocos2D Podcast: Earning Additional Revenue

Cocos2D Podcast on iTunes

You might also want to read my blog post How to make over $18,000 in six months selling source code about the financial success of my Line-Drawing Starterkit. By the way, I’ll be releasing a new game kit in autumn. More details in the coming weeks.

Tagged with:  

Cocos2D Embedded In A Cocoa Touch App

On June 12, 2011, in book, cocos2d, by Steffen Itterheim

I just completed this project for the new book chapter about embedding UIKit views/Cocoa Touch in a Cocos2D application. In that case I embedded the Cocos2D view in the View-based Application template and added some controls to start/stop the cocos2d view and change scenes. Here’s the result:

It also correctly auto-rotates. But I noticed an odd bug with auto-rotation enabled for all orientations: the view is designed in portrait mode. If I start the App on my iPod Touch 4 while holding the device in landscape mode, then rotate back to portrait mode once the app has started and enable the cocos2d view, for some reason this causes my device to reboot! I see a transparent white color drawn over the entire screen before the screen goes black and the Apple logo appears.

If anyone has any idea what might be causing this behavior, please let me know. As far as I debugged it is not the initialization of the EAGLView class itself, a scene is already running or about to be run.

I’m guessing it might have to do with the EAGLView initialization, since I rely on Interface Builder to initialize the view. I simply dragged a View object onto IB and changed the class from UIView to EAGLView. Maybe the EAGLView default settings are not supposed to be used and I do need to create the EAGLView manually?

Tagged with:  

iTileMaps: TMX Tilemap Editor for iPad

On May 3, 2011, in tools, by Steffen Itterheim

iTileMaps developed by Vsevolod Klementjev is a Cocos2D app for iPad that allows you to edit tilemaps in the TMX format, the same format used by the popular Tiled Map Editor.

Although built with Cocos2D the tilemaps created with iTileMaps can be used with any game engine that supports loading the TMX format. To get ahold of the tilemaps created with iTileMaps you can export them directly to your game or send them via e-mail. Great for designing levels on the road!

Check out this fast-forward movie to see it in action:

Check out the iTileMaps website and/or get it on the iTunes App Store.

Tagged with:  

Cocos2D Xcode Project on Github

On November 4, 2010, in cocos2d, tools, Xcode, by Steffen Itterheim

My Cocos2D Xcode project is now on Github. Open-source, free, properly MIT Licensed, includes the rootViewController and supports Cocos2D v0.99.5 rc0.

I’m also working on (with) a greatly enhanced version of the Xcode project. It integrates wax (Lua) and a Game Object Component System that i termed “gocos”. Also comes with a lot more useful convenience classes.

But the big idea is to actually upload (or link within github, if I can figure out if and how that works) all dependent projects into one repository, so that you can download everything at once and it works out of the box. Currently there are 3 projects referenced by cocos2d-project: gocos (let’s call it a library of convenience and gameplay code for Cocos2D), wax (Lua support) and obviously cocos2d-iphone. So everything that’s needed is going to be bundled in one big package, which voids all of the version incompatibility issues.

You can still experiment with different versions of these libraries but in that case I think you know what you’re doing and that issues are to be expected. But being a github repository, you can of course clone and commit changes.


Here’s what I’ve done with Lua. I’m currently using it only as a better plist replacement for settings. It’s better than plist because you can comment on each item, you can sort them easily, you can run functions and algorithms to generate values or load additional data, and in general it’s a lot easier to work with than the plist editor. Here’s a reduced config.lua that is loaded at runtime into a hierarchy of NSDictionary objects:

[cc lang=”lua”]
local config =
AccelerometerControls =
UpdatesPerSecond = 60, — 60 Hz
Responsiveness = 0.997,
SensitivityX = -2,
SensitivityY = 2,
MaxVelocity = 100,

return config

And this line of code loads these values and assigns them to the correspondingly named properties of the target class:

[cc lang=”objc”]
[Config loadPropertiesFromKeyPath:@”AccelerometerControls” target:self];

That’s all you need to do to transfer the values from config.lua into a class instance. Huge timesaver! The only drawback is that it currently can’t differentiate between float, int and bool (due to NSNumber), so it currently only supports float properties.

Tagged with:  
Page 1 of 212