A theory on saved games

I’m slowly investigating the plausibility of an iOS game and don’t want to write a lot of code – any of it, actually. Games are complex beasts and I’m one man. If I start modifying something I risk being unable to patch for iOS 7 related bugs or new screen sizes etc. I want to spend my resources making good content rather than a good engine.

Anyway, as I was looking into paid source for Commander Cool, I was horrified to find
that the .plist used to define the list of levels is also the .plist used to record scores and completeness of the level – which means the .plist is stored in user space rather than the app bundle and can’t be overwritten with an app update. This means that the levels you ship with are all the levels users are ever going to get – unless they’re willing to uninstall the app and thus delete their progress. That’s one hell of a frustrating limitation. I’ve reported it as an enhancement request so hopefully I don’t have to do it myself.

This got me thinking about the seeming ubiquity of another quirk with iOS games: none of them save progress on iCloud. The only reason I restore my big iPad from backups is because it contains a lot of saved game data – data which there is no humane way to backup other than a full device backup. At least if it was a Mac game I could backup whatever it puts in my library, but on iOS this is unrealistic. (Also, the Mac version of the Commander Cool engine stores this .plist in your home folder, so an Xcode clean doesn’t remove it, you have to manually remove it).

Since so much game development is done by heavily using entire engines, APIs, or libraries you dare not alter, the saved game problem isn’t likely to get fixed across the board any time soon. Games that use Unreal don’t even touch Xcode at any point and have no hope of gaining this feature. Games that use Cocos2d, however, are done primarily in Xcode and engines built off of it ought to have more support for iOS features beyond gamecenter and iOS 6 share sheets.

Discussions of using App.net, DropBox, or your own synching service are moot if game developers are writing so little of their own code – and I don’t blame them. But someone needs to make a first step.