I’ve learned a lot about iPhone game programming, cocos2d for iPhone and Xcode, Objective-C and the Mac OS in the past year. I want to share my knowledge pertaining to cocos2d in specific and iPhone game development in general. I’ve created a completely new website dedicated to cocos2d over the last 2 weeks:


I made a 90+ (!) pages Tutorial about how to setup an Xcode project for professional work, including cross-referencing the cocos2d project, optimizing the build settings and adding targets for all platforms and purposes (eg debugging crashes). You can view the tutorial on my website or download it as PDF!

Since after 10 years in the game industry i’ve specialized in iPhone Game Development using cocos2d for iPhone i will always have something to say or add to this website. Let me know what you think and if you like it, please tweet it and recommend it to your peers, thank you!

Tagged with:  

My professional cocos2d Xcode Project Template

On May 1, 2010, in Announcements, by Steffen Itterheim

I spent the last week creating a Xcode project template that uses the cocos2d for iPhone as cross-referenced project as it is obtained from git. I want to be able to branch off of a common base project using the source control software of my choice – Perforce – and also be able to update the cocos2d for iPhone game engine at any time for all of my future projects.

I think the feature list of that Xcode Project Template speaks for itself:

  • cocos2d-iphone referenced by Project, allowing you to keep cocos2d-iphone up to date with the least amount of work
  • 4 Build Configurations (Debug, Release, Ad Hoc Distribution and App Store Distribution)
  • IPA Files automatically created for Ad Hoc Distribution builds
  • ZIP Files automatically created for App Store Distribution builds
  • Build Targets to build regular iPhone/iPod and iPad Apps in both Full and Lite Versions
  • additional Build Targets to debug memory crashes effectively and running the Static Analyzer
  • Preprocessor Macros to differentiate the different build targets in code
  • Aggregate Target to build all your regular Targets at once
  • properly configured precompiled Prefix Headers, reducing compile times
  • supports both Physics engines: Chipmunk and box2d
  • all build settings optimized for maximum performance and building quality code, taking into account Xcode’s Layered Build Settings

It gets better! I’ve actually made tutorial explaining each and every step in detail and explained some of the reasons and intricate details of Xcode Build Settings. I’m confident it’ll blow your socks off! This Tutorial combines everything useful that has ever been written about Xcode & cocos2d Project setup into one large Tutorial. And i can guarantee that it’ll work because it describes exactly how i created the Project Template i’m now using for my professional work.

Of course i will also share that Xcode Project Template. This is all content for my new Website which focuses on making games with the cocos2d for iPhone game engine. I hope to be able to reveal the website soon, until then you’ll have to be a little more patient. Please stay tuned and follow me!

For now i’d like to offer you a Teaser for this Tutorial: Git Setup for cocos2d for iPhone. Please do me a favor and do not link to this HTML file directly, instead link to this post, as i will remove the HTML as soon as the new website goes live. Also the HTML isn’t formatted properly, for a better result download the PDF version of the cocos2d Git Setup Tutorial. It contains the first 11 pages of the 93 (!) pages Tutorial!

There’s only one issue left that i just can’t explain: running the static analyzer only reveals results in Release builds but not in Debug builds. In Debug builds the analyzer analyses all files but doesn’t complain about anything. Not even after i temporarily replaced it with the latest version of the Static Analyzer as described in this tutorial. My post on Stackoverflow at least lead me to discover that it doesn’t have anything to do with GCC vs LLVM GCC but only with the Debug builds. I then compared the Build Settings of Debug and Release builds and other than the preprocessor macro DEBUG and RELEASE and of course optimization level they were identical. I still tried to make all Build settings identical to the Release build but no change. This is so weird. The command line scan-build analyzer works just fine but not with the Xcode built-in Build & Analyze. If you have any idea what could be causing this behavior please let me know! Otherwise i’ll probably have to live with analyzing only release builds respectively going back to the command line scan-build.

Tagged with:  

Tutorials are an afterthought …

On February 24, 2010, in Design, by Steffen Itterheim

From my own experience and by looking at other games i am aware that in a lot of cases – even today – Tutorials in games are an afterthought. I would even go as far as to say that if i don’t like the tutorial chances are, i won’t like the rest of the game either. For a good game, the Tutorial blends in with the game, it just feels natural. Where it is an afterthought, it’s in cases like Prototype: at first, you get all the good stuff, all the weapons and powerups and what not and you are free to try one after the other. Then the game starts, and you’re just that little guy without all these powers.

Types of Tutorials:

1) you get it all but then we’ll take it away from you
2) we explain our overly complex system to you…
2a) … in just 5 minutes, even if you wouldn’t use most of this stuff anyway – we know you just want to play the game, right?
2b) … in 60 minutes because we think it takes this time to really memorize all the good stuff
3) we interrupt your playsession for this trivial hint shown in a messagebox!
3a) PC: if you happened to be clicking your mouse where the OK/Cancel buttons where – we are sorry, you don’t get this message a second time
3b) Console: if you happened to be pressing one of the action buttons that dismiss the messagebox – again, we are soooo sorry we didn’t think you might hit that button while playing our button-smasher and might want to see that message again.

From the comments:

4) Let the game show everything to the player, while not giving him the chance to try out for himself.

5) This is your sixth playthrough for the game? Too bad for you, you must take the tutorial again and you cannot skip! :]

Do you have more tutorial cliches to add to this list?

Tagged with: