Archive for 'Reviews'


Now this looks worth a serious look if you need to drop a downloadable photo gallery in somewhere — and who doesn’t?

Apple’s PhotoScroller sample code for iOS looks to many as a perfect starting place to display a scrolling list of photos that can each be zoomed significantly. It uses a CATiledLayer as a backing store so it does not have to load whole images into memory.

That said, after you see the three pretty jpeg images in the project, you lift up the covers and find approx 800 pre-tiles png files – its the pretiling of the jpegs that makes this project work.

Why, yes. Yes, we had noticed that.

So, I’ve taken that project and greatly enhanced it:

And enhanced how? For instance,

- blazingly fast tile rendering – visually much much faster than Apple’s code (which uses png files in the file system)

- you supply a single jpeg file or URL and this code does all the tiling for you, quickly and painlessly

- provides the means to process very large images for use in a zoomable scrollview

- is backed by a CATiledLayer so that only those tiles needed for display consume memory

- each zoom level has one dedicated temp file rearranged into tiles for rapid tile access & rendering

- demonstrates how to use concurrent NSOperations to fetch several large images from the web or to process local image files

- the incremental approach uses mmap, only maps small parts of the image at a time, and does its processing as the image downloads and can thus handle very large images

That’s a pretty handy set of features for your large image display needs, isn’t it now?


If that’s a little overpowered, you might want to check out MWPhotoBrowser — A simple iOS photo browser

Continue Reading →

Review: Cocos2d for iPhone 1 Game Development Cookbook

So, now that we’re all up on the latest in cocos2d web events, let’s take a look as promised at the latest in cocos2d publishing events:

Cocos2d for iPhone 1 Game Development Cookbook



Buy it now. No, seriously. Buy it now.


We absolutely guarantee that just about anyone will find the book worth way more than its price in time saved. To see for yourself, head over to the book’s website

and check out the Explore The Book section for videos and explanations of the recipes in each … and download the demo apps. Yep, the demo apps, there’s free demo apps up on the store for you to check out the recipes in action:

Cocos2d Cookbook Ch1-3

Cocos2d Cookbook Ch4-6

Cocos2d Cookbook Ch7-8

Now that’s how you go about supporting a book!

Also check out the book’s thread on the cocos2d-iphone forums for some subtle understated commentary like

  • “This book looks like it is going to be a requirement in every developer’s library!”
  • “Ok, I have read a handful of recipes and I am completely sold. This is an awesome book.”
  • “…every developer needs to have this book.”
  • “this book is an absolute must for anyone developing cocos2d apps.”
  • “Great book, instant buy!”

Gee, gushing much? But it actually does deserve all that and more. Let us take the very first recipe, “Drawing sprites”. Oh for crying out loud, you think, how does that merit a recipe? Is this thing going to be full of fluff I already know? Well, no actually, that simple sounding recipe goes over drawing from files, images, textures, and frames; explains mipmapping and batch nodes; and tops it off with colorizing rectangles. Well, that is pretty good for a first recipe, isn’t it now.

The first graphics chapter goes on to cover not only common drawing and animating but movie playing, particle effects, simple 3D effects, texture animation, palette swapping, screenshots, parallax, and lighting. Pretty much a worthwhile purchase already, and we’re barely started!

Second chapter covers user input of varying types, including virtual joysticks, d-pads, and accelerometer; nothing too novel here, but useful time savers here if you’re newish to cocos2d.

Third chapter covers data management; reading and saving plist/JSON/XML … and even SQLite and Core Data. Probably not much completely new to you here either, but the details of working with sprites and the like are handy.

Fourth chapter is on physics and is a particularly valuable one for those of us weak on the background there; focusing on Box2D, takes you from basic setup through impulses and forces to joints, bullets, ropes, and ending up with a 2.5D isometric game engine! That’s a pretty standout one there.

Fifth chapter, ‘Scenes and Menus’, is mostly pretty straightforward but still handy code. The sliding menu grid and minimap are particularly nice.

Sixth chapter, “Audio” is another notably useful one, nice explanations of sound manipulating, positioning, metering, recording, iPod library usage, and finishing up with creating a MIDI synthesizer with MobileSynth and then speech recognition/synthesis.

Seventh chapter, “AI and Logic” is well-nigh invaluable for those without a background in it; basic waypoints, targeting, line of sight, flocking, pathfinding (the “in a Box2D world” getting special mention, good luck figuring that one out without some help!) and finishing off with discussion of Lua integration.

We figured the last chapter “Tips, Tools, and Ports” was a bit weaker; the tools picked here mostly aren’t up to the currently regarded best of breed mentioned in yesterday’s roundup, and the cocos2d-x and cocos3d intros were too short to really be of much use. But hey, still worth a read.

Closest thing we have to a real complaint is that you have to email the author to get the extra chapter which was omitted from the print versions; really, how hard would it be to put it as an addenda in the electronic versions most of us are going to be buying anyways? But hey, if mild inconvenience is the worst whine we can come up with, that’s pretty solid.

So, yeah. We pretty much can’t imagine anyone developing with cocos2d who won’t find something in here well worth the price; for those just starting out it might be a bit over your head, but it would make a perfect second step after one of the introductory books or our starting recommendation The iPhone Game Kit. So buy it now!

Continue Reading →

Localization: Linguan

So there’s a new app out today purporting to be of assistance with that pesky translation task for your iOS and OS X apps:


Linguan greatly simplifies localizing your Mac and iOS apps. It gives you an intelligent editor for all strings files contained in your Xcode project.

You get warned about duplicate tokens or missing translations. Then you can export and e-mail all missing tokens for a specific language to your translator, who can also use Linguan for filling in the translations or use his text editor of choice.

When you get the translators results back Linguan automatically merges the results into your project, even if the tokens originated from multiple different strings files.

That all sounds pretty handy then, doesn’t it now? As it happens, just a little while back we did a 12-language-localized project, and the memory is fresh enough to remember the hassles involved. So let’s start out by seeing how Linguan handles opening that file and sorting out the contents:

Linguan opening.jpg

… why, with perfect aplomb, that’s how. And well look at that, it found an error: “Multiple translations for token ‘PRODUCTINFOLINK”. Seriously? OMG, it’s right. Well, apparently the shipping version is using the right one, otherwise we probably would have heard. Still, nice catch already.

Moving on, let’s see the missing translation finding. We know we don’t have any so we’ll have to seed it with one, but just to check … wait, what? Ah, that’s it, it found an untranslated one in a comment we’d left in for some reason:

//controller.title = NSLocalizedString(@”TITLEROOTTABLE”, nil);

And it seeds it into the table of tokens above. So let’s call it “A table.” in English, and hit ‘Wizard’ to see how wizardly helpful it is. And very so. So let’s put in a Spanish translation,

Linguan wizard.png

Hit save … why yes, there’s our newly translated string appearing over in Xcode. Now let’s check out the export functionality to provide lists for translators when you need those, this string in Korean say … why yes, yes it does so nicely.

@DIRECTORY resources
@FILE Localizable.strings

/* No comment provided by engineer. */ "TITLEROOTTABLE" = "";


Alright, we’re convinced. It’s evident in mere minutes that this would have saved us on the order of days developing the project we’re checking it out with. Straight to the head of our Essential Third Party Development Tools list it goes. And for only five bucks? A veritable steal, we tell you. From the announcement post:

… We believe that Linguan provides a piece of functionality that should have been provided by Apple, but wasn’t. So we tried to make a tool thats worthy of being mentioned with Xcode on the same breath. Check it out on the Mac App Store. If you find any issues or have feature requests then you can use our bug tracker for that.

And succeeded nothing short of magnificently, it appears. If you’re shipping your projects in anything other than your native language — and if you’re not, you should be! — buy it NOW. NOW! NOW! NOW!

(And you, yeah you, the twerp in said announcement post’s comments bitching “I won’t make them pay some software, no matter how great it is” — for the love of God Almighty, man up already and gift it to your volunteers then. $5 a language? Suck it up, buttercup.)


Having trouble with the Xcode 5 preview? Xcode-select will help!

Continue Reading →

TexturePacker 2.4.0

So for an embarrassingly long time now, we’ve been meaning to get around to doing a head to head review of the two main Mac OS X sprite sheet creators for cocos2d, Zwoptex and TexturePacker. Unfortunately, time for that just has not turned up … and it’s not likely to in the foreseeable future. So in lieu of actually producing that, let’s just tell you:

Are you creating sprite sheets as a part of a workflow? Running just about anywhere, targeted just about anywhere? Then you need to look into TexturePacker carefully … and if you have before and it didn’t crank you up, check out the sparkly new version 2.4.0 again!

A) Running just about anywhere:

Versions are available for recent OS X, Windows back to XP, and Ubuntu Linux. Which makes it an instant winner if your asset workflow involves those other, lesser, OSes. There is a bit of a downside to that — being a QT application (judging by the package contents) some things will work a little unexpectedly for your platform. For instance, file handling in TexturePacker is somewhat fragile; you would be wise to put your asset files somewhere they’re not going to move from before starting to create your sheets, as apparently QT’s file handling is not as OS X-savvy as it could be.

B) Targeted just about anywhere — previous versions had:

and 2.4.0 adds:

And you can even create CSS sprites. So, yeah, seriously, just about anywhere.

And it’s fairly straightforward to integrate with Xcode as well.

And … well, hey, check out the feature list and release notes for yourself. Particularly notable in the new release are autoimport from .swf files and a .pvr QuickLook plugin. Which is actually catching up with Zwoptex … yes, we must get around to that detailed comparison sometime. But on sheer mass of features and prolificness of updates; well, you just can’t go wrong picking TexturePacker, it seems.

There’s a nicely introductory step by step tutorial here from a fellow who moved from Zwoptex to TexturePacker, and of course Ray Wenderlich has a tutorial, as he does for everything:

How to Create and Optimize Sprite Sheets in Cocos2D with Texture Packer and Pixel Formats

As a final note, if you really want to get the inside scoop, you’ll probably want to pick up the new rev of Steffen Itterheim’s cocos2d book:

I’m proud to have Andreas Löw (@CodeAndWeb) as a co-author for the 2nd Edition of the Learn Cocos2D book! Andreas is the developer of the indispensable Cocos2D (and other game engine) tools TexturePacker and PhysicsEditor.

Andreas volunteered to make all the necessary changes to replace Zwoptex with the more state-of-the-art TexturePacker, and VertexHelper with the much more powerful PhysicsEditor. He also provided the new graphics for the Shoot’em Up and Pinball projects, as well as making them Retina compatible…

Yeah, just in case you don’t think TexturePacker is an impressive piece of work, there’s that PhysicsEditor thing he does too. Be nice to getting around to reviewing that too, one of these days…

Continue Reading →

Ad Hoc + Crash Reporting

So it’s been quite a while since we last surveyed the state of ad hoc distribution, and even longer since we made any notes about crash reporters — remember when CrashReportSender was a massive novelty? Ah, how the time does fly — but the progress in merging those functions has been dramatic enough that yep, let’s pick today to get out of our comfortable rut and try something new.

To bring you up to mid-June speed, this was a comprehensive-appearing overview of state of the art at that point:

The battle of the iOS crash reporters

Want the short version? Use HockeyApp.

We generally concurred, although the pricing was problematic for those of us who do lots of little apps; but there is the alternative of setting up your own server with the open source HockeyKit/QuincyKit combo which power the HockeyApp service. Unfortunately, time isn’t free either, which is why that hasn’t happened. In the meantime, HockeyApp’s added Bug Tracker Integration and various process improvements and the HockeyMac Xcode upload helper. Busy busy busy, those HockeyApp folk!

You might note in the comments that we mentioned the Crittercism “Support Infrastructure for Mobile Apps”, which a project we’re involved with was trying out at the time. Nice mix of services, but not ad hoc distribution, which is a rather natural pairing for your crash reporting solution, so that takes it out of serious consideration here.

And at just about the time that was written another beta distribution service Apperian AppRamp was introduced allegedly addressing issues with Testflight, which was newish at the time of our last survey and we didn’t really see any compelling reason to move away from our trusty friend BetaBuilder. It also doesn’t appear to include any crash reporting functionality.

So that wraps it up right, game set and match to the HockeyApp team? Well…

If You Weren’t Using TestFlight Before, You Will Be Now With Their New SDK

Will we now? And why would that be?

… All the features announced today are Free, including Enterprise IPA support.

  • Crash Reports : Real time reports with environment snapshots, full session activity, and your NSLogs.
  • Check Points : Monitor tester engagement and watch as they progress through your app…
  • Sessions : Discover how testers are using your application…
  • In-App Questions : Get the answers you need right when you need them…
  • Feedback : Gather more feedback with in-app forms or via tester email replies…
  • In-App Updates : Prompt testers to install the latest version of your app and they can update instantly over-the-air.
  • Enterprise IPA Support: …added benefit of unlimited devices with all the TestFlight features.
  • Build Reporting : View realtime build status and tester activity.

Hmmm. That’s a lot for free, indeed. The one thing is, we really quite like QuincyKit’s symbolication integrated into HockeyApp … oh, wait …

Real time symbolication

We wrote a portable version of Apple’s closed source atos command line tool to power TestFlight’s new real time symoblication of crash reports. We are considering open sourcing this tool for the iOS community to leverage as a whole if there’s interest.

To use this new feature, upload a .dSYM via the crashes page; your crashes will be symbolicated as they occur and you can start solving issues even faster…

OK, well, that kinda tips the balance from tempting to compelling, given the whole “free” thing, wouldn’t you say? Questionable as the long-term prospects of that business model would appear, at the moment TestFlight does indeed appear to be the support service par excellence for the frazzled iOS developer. So off to grab the SDK we go … and we’ll be sure to update you if we encounter any reason to reconsider!


Ah, here’s the reason to reconsider: Using SDK in product for crash collection on app store?

As of right now applications from the app store sending us data is not something that we officially support and once we have a full solution for that we will be making a more public announcement.

Well, having our crash reporting solution work with App Store builds is kinda a requirement, yes. We’ll see what happens on this front, but that’s kinda an obvious candidate for a premium service. Which would very likely incline us back to setting up the QuincyKit/HockeyKit stack ourselves in order to get full control of the process. In the meantime, why yes so far TestFlight is very pretty and convenient, just as advertised!

Beta Testing iOS Apps Made Easy has handy TestFlight deployment scripts.


Quality Tracking/Crash Reporting Services for Mobile Apps covers the October 2012 state of the tools:

kstenerud / KSCrash looks like it does a more thorough job that the established players

Continue Reading →

Free PayPal API Book

Here’s a hot action tip — pop over to the O’Reilly site today or tomorrow for a free book:

PayPal APIs: Up and Running


Does your web application provide users with a convenient way to complete transactions? This book introduces you to PayPal’s APIs with instruction and resources for integrating this popular payment solution in different application environments, including mobile. By the end of this book, you’ll have a clear understanding of what PayPal is and how you can get the most out of its powerful features for your particular payment situation.

Note particularly the “including mobile” part of that. Remember quite a while back we noted that they were beta testing an iOS PayPal integration component? Why yes, yes the last chapter of this book is all about that:

Mobile Express Checkout Library for iOS

PayPal provides a MEC library for iOS, available for download… This MEC library supports two different programming flows: it can be called either directly from your mobile application or via a PayPal button on your mobile website.

MEC Mobile Application Integration

MEC can be integrated into your mobile application, allowing you to start and end the payment process with screens inside your application…

And hey, you might want to put PayPal payments into an app sometime … so grab the book for free while you can!

(Or, if you’re stumbling across this via a search engine months later, here’s the regular book page for your convenience.)

h/t: @rwenderlich!

Continue Reading →

Autograph Library

So you got an application you need to capture actual signatures for? Release form, shipping delivery, that kind of thing? Well, here’s a licensable library to make that easy:

Ten One Design Autograph iOS Library

  • Simple integration with any UIView, or just call the built-in modal view.
  • Customizable stroke color and width, and signature size.
  • Advanced stroke smoothing for accurate signatures.
  • Velocity sensitive stroke width for biometric verification.
  • Customizable message. Show your customers what they’re signing for.
  • Three-finger swipe to undo/redo strokes.
  • Optional inclusion of date.
  • Optional unique security hash watermark for each signature (for tracking purposes).
  • Freely available demo version allows you to try it out before committing.

Handy if you need it, as we say. Check out the free Autograph app that makes your device into a signature capture pad to check it out, along with Mac and Windows helper apps to do something with those captured signatures.

Now, you thinking to yourself “Dude, I don’t sign my name with my finger”? Why no, no you don’t, and these Ten One people make a capacitive stylus “Pogo Sketch” for any device or the “Pogo Stylus” specifically for iPhone/iTouch to help you out with that. Or any other kind of drawing/writing etc.:

Drawing Applications: The Pogo Sketch is an interesting alternative to expensive graphics tablets, and a lot more portable. On a mobile device, the Pogo Stylus makes sketching a lot easier.

Taking Notes: TThere are some incredible note taking applications for the iPad and iPhone. They’re all great companions to the Pogo Sketch.

See our recommended iPhone/iPad applications here

Okay, we definitely have to check some of these note takers out. This stylus just might make the iPad actually better for our preferred scrawling style of note taking than paper, it looks like.

And to finish off on another note completely while we’re looking around their site … want an analog joystick for your iPad? Well look, they’ve got just the thing!

h/t: MacNN!

Continue Reading →

AirPlay Emulation

So you’d like to put AirPlay support in your app, but hardware to test with is inconvenient (or completely unavailable in your country)? Here’s a couple ways to sort that out:

Banana TV – $7.99

… Banana TV lets you use AirPlay for your Mac as well – play video or images from your iPad, iPhone or iPod Touch running iOS 4.2 or higher directly onto any networked Mac. It runs directly on your Mac, and is a great tool for showing off pictures or video on your Mac’s monitor, at a friend’s house, or the office. Even use your iOS device photo library as a presentation tool…

ShairPort – open source

… This program emulates an AirPort Express for the purpose of streaming music from iTunes and compatible iPods. It implements a server for the Apple RAOP protocol. ShairPort does not support AirPlay v2 (video and photo streaming) …

Any other AirPlay development helpers you’ve found of assistance, Dear Readers?

h/t: iphonesdk!

Continue Reading →

Resource Checking: Cong

Here’s a handy tool for running over your OS X apps to look for resource issues — Cong:

What is Cong?

To check for leaks, you use leaks or Instruments. To check for obvious (or less obvious) bugs, you use gcc and LLVM options, or you use the Build and Analyze feature of Xcode. To check that your code works, you test it. But what do you use to check the resources of the bundle of your application? Say hello to Cong.

Checking what is obvious to stop being oblivious

Cong checks multiple points and details that can seem obvious but which are not always known by everyone. Your application may be running fine, may have won Awards and still be not perfect. For instance, did you know that there is a limited set of characters allowed for a bundle identifier and that ‘_’ (underscore) is not one of them? Did you know that the recommended encoding for .strings files is UTF-16? Did you know that the CFBundleGetInfoString key is deprecated for Info.plist files?

Looks handy, yep. So we ran it over our last OS X release, and …

Screen shot 2011-02-13 at 11.57.22 PM.png

… and so it actually is handy. Fancy that. OK, straight into our regular toolchest that one goes!

h/t: xcode-users!

Continue Reading →

Review: Cocos2d for iPhone 0.99 Beginner’s Guide

So as we mentioned in our latest cocos2d links collection, the nice folk at Packt Publishing provided us a review copy of Pablo Ruiz‘s book Cocos2d for iPhone 0.99 Beginner’s Guide,

Cocos2D For iPhone Beginner's Guide.jpg

and we’ve gone through it now for you, Dear Readers!


If you’ve completed a cocos2d game … no, this is not a reference; you’ll probably find some tidbits of value, but I wouldn’t make it a high priority purchase. You probably guessed that from the ‘Beginner’s Guide’ name.

However, if you are a complete beginner to game programming … no, the name notwithstanding, what this does cover will be over your head, and it doesn’t cover things not related to cocos2d directly a beginner needs introduction to. We heartily recommend the iPhone Game Kit for you.

If you’re a programmer new to the iPhone platform … you’ll struggle with the Objective-C, no doubt. Come back after you’ve done a program or two, got the Cocoa memory model down, and so forth.

So if none of those apply, presumably you know something about programming iOS already at the UIKit level and now you want to get into programming games, and you need a walkthrough of cocos2d design principles and the associated development toolchain? Excellent, you’re the person this is actually appropriate for — as long as you’re fully aware that much of the book has already been overtaken by recent developments.


First off, take a look at the chapter list in this cocos2d forum announcement. Topic selection is good, progression is straightforward. No complaints about the overall structure then, this is indeed a well designed introduction to cocos2d.

However …

One big problem with doing a book like this is that you will inevitably be overtaken by events. Let us take this exchange from the cocos2d forums:

cell-gfx: Reading through the timer example in the book on page 28, you use the schedule:@selector method of scheduling an update to your node. However, when I refer to the cocos wiki, it says to use scheduleUpdate…

pabloruiz55: Yes it would, but as the chapter was written a while back the scheduleUpdate method didn’t exist :)

scheduleUpdate was added in 0.99.3. The version of cocos2d distributed with the sample code as of right now is 0.99.1. The current version of cocos2d is 0.99.5. The changes are substantial enough that people are encountering some difficulty applying the book’s code with the current release. So it’s pretty difficult to recommend something wholeheartedly when you know people are going to struggle with it through no fault of their own; at the very least, if you publish a book like this you should at least keep the samples up to date with the current release, and a list of updates/errata such as the above, I’m thinking; in a designated blog for book discussions, if nothing else.

Same problem applies to the chapters about tools. It goes over the Zwoptex web version for sprite sheets, not the native version or Texture Packer. The fonts chapter, we were wincing at the Hiero and Angelcode discussion: “Both are very good tools” — no. No, they are not. Granted that Glyph Designer is brand spanking new right now and no doubt was completely unheard of as the book was written, but someone picking up cocos2d today really needs to be informed about that. Again, this is the kind of thing that would be most properly addressed by something like a designated blog, or perhaps errata updates mailed to registered users.

Another example of this problem is that even the design walkthrough, which is generally good, can be significantly in error. We were brought up short on page 47 of the PDF for instance, with

“When you quit your game … the applicationWillTerminate method will be called. This is a good time to save your game’s state…”

Ah … no. Not on iOS 4. (Unless you go to some effort to get that behaviour). That would be a perfectly acceptable oversight in a book released in July last year. In December? Not so much. If lead times are so long that a statement that’s been wrong for six months can’t get corrected for publication, then there really needs to be some mechanism for distributing errata.

Moving on, we were mildly disturbed by the code samples in general. Picking on the Chapter 4 ‘ColouredStones’ example in particular, we load it up to find it’s looking for SDK 3.0. Sort that, we get

“Code Sign error: The identity ‘iPhone Developer: Pablo Ruiz (4LFH26A558)’ doesn’t match any valid certificate/private key pair in the default keychain”

and it’s set at project and target level both. OK, we can sort this out in 15 seconds, but a beginner cannot. Messr. Ruiz overlooking this before uploading, hey we can let that slide. Technical reviewers? Not so much, guys. Especially when we get around to Build and Analyze:

Screen shot 2011-01-29 at 2.21.33 AM.png

Okay, if you’re working for me, and you check in code with any warnings or analyzer results, we will have words. If you check in code with an analyzer error “Incorrect decrement of the reference count of an object that is not owned at this point by the caller”, we will have harsh words. That code which would only compile on the author’s machine and that contains significant errors made it through to the downloads? The reviewers have not done their job acceptably. Yeah, our standards are high. So should yours be.

That said, with a little coaxing we did get all three of the game samples to run, and they are well chosen to give a good overview of the functionality discussed throughout the book; so we’re only mildly disturbed, there is a good bit of value here.

We could nitpick a while more, but you’ve pretty much got our feeling now; the book is well designed for what it is, which would be more accurately named “Walkthrough of cocos2d Development for the iOS Programmer” than a “Beginner’s Guide”, that being somewhat of a misnomer. However, it’s well designed for the state of cocos2d development prior to iOS 4, which makes reading it now mildly problematic. And that goes even more so for the source code, which is not only somewhat outdated but really should have had much better review before letting it loose on the readers. Valuable, yes; exemplary, not by a long shot.

So clean the code, update it to current recommended practices, update the tools chapters, and put a process in place for updates to stay in sync with continuing cocos2d development; yep, we’d give 2nd Edition a nine, nine and a half as an excellent introduction to cocos2d. What we’re reviewing today … yes, we’d recommend it to someone who asked for the best way to start getting up to speed on cocos2d we knew of, but would make a point of telling them to read the caveats above. Six and a half, seven, that’s about the best we can muster up. Still, a fine effort by Messr. Ruiz, and we do hope sales go well enough to merit an update!

Continue Reading →
Page 2 of 5 12345