Behaviors that make a game a "good citizen"

My business paperwork was just approved (finally) by Apple, so within the next week or two I’m diving back into Unity to see how much I’ve forgotten :slight_smile: And my dusty half-finished game will be coming to iPhone first, not to Mac/PC as planned. Strange times, but fun!

Meanwhile, for the sake of discussion, I’ve been over at TouchArcade compiling a list of behaviors that make a game a “good citizen” on the iPhone.

This list is NOT about:

• Pricing, selling, marketing and user-communication issues–that’s a whole separate can of larvae

• “Nice things to have” like global high scores and a music track

• Unseen coding practices and behind-the-scenes developer-only issues

• Game play itself

This list IS about user-facing behaviors that people experience WHILE USING the app. Things that make an app a “good citizen” of your device. In the case of games, it’s issues “around” game play rather than game play itself (which is highly subjective).

I doubt Unity can (yet) address all of these, and even if it could, I doubt any game from any engine will ever meet ALL of these criteria. Certainly mine won’t! I see this list as simply an ideal for myself (and other game devs) to strive for.

In that spirit, here’s my list of “good citizen” behaviors, in hopes that others will have useful additions or comments:

• Auto-save progress on exit, sleep or incoming call
• Work in any of 2 or 4 orientations (if it makes sense for the game)
• Allow recalibration of tilt center (if applicable)
• Mute all game audio when ringer switch is set to off
• Offer visual feedback for all important sounds (including speech) to allow silent play
• Track own volume level separate from ringer volume
• Have on-screen volume controls for 1st-gen Touch users
• Use the standard OS keyboard if possible (and the right version: be it numeric-only, email-centric, or regular)
• Allow playing iPod music (started beforehand) and using the mini-controls, while still having sound effects
• Use internal settings controls instead of the central Settings screen (sorry, Apple!)
• Remember all settings/customization options (if any) including player name/login
• Use a login rather than device ID to track users/scores
• Not contain 3rd-party ads if any users paid for the app
• Clearly warn users if they’re about to link outside the app (and use an in-game Web view if possible)
• Be usable with color blindness
• Be localized (largest audiences? English, French, German? Then Japanese, Spanish?)
• On phones set to a language the app doesn’t support, at least show English (not completely missing text)

Any thoughts?

(From this TouchArcade thread: http://forums.toucharcade.com/showthread.php?t=7015 )

I’ve been curious how much extra work is needed (if so) to make a Unity title compliant? In other words, are there conventions within Unity to make all this possible or is it necessary to use Xcode to ‘finish’ your app. I personally would be at a loss as to what to do ‘outside’ of Unity if indeed I had to dip into Xcode.

First and most importantly–awesome avatar! This morning I was just thinking about ACS for the first time in years. I want Rivers of Light on iPhone :slight_smile:

Secondly, re your question–I don’t know: for now I was list-making without digging into the “how.” I bought Unity iPhone but never installed it because other projects kept me busy. But now I’m ready to spend some quality time with the docs. I suspect Unity alone can’t do all those, but certainly some of them. (And I notice new native-keyboard support coming up on the iPhone Road Map.)

Oh that does my heart good when people recognize ACS! :smile:

Between that and Garry Kitchens Game Maker, making games have been the center of my life this entire time since. (I’ve been in the industry now for 12 years)

…and yea, you know, it’s interesting how often lately I’ve been reading about people doing this or that in Xcode, and now I’m starting to worry that might be a water line just above my head…hmmm.

Oh and Morgan, what did you mean by “Business Paperwork”

…having not been in a position yet to submit my app, I’d be curious as to the process and the experience if you or anyone else wouldn’t mind; expectations.

Well apparently signing up with Apple as an individual dev is quicker/easier, but isn’t good if you want to add team members later. I wished to have that option, so I signed up as a company. (You get the choice of individual vs. company when you first start the dev program registration process.)

Adams Immersive has been around for a decade, but I needed to gather and submit certain paperwork (fictitious name registration in this case) to prove to Apple that I do represent the company. The BIG delay was Apple sitting on the paperwork for a month… ironically enough, in the “escalation queue” which is supposed to be faster!

On the positive side, when I emailed questions to Apple in the beginning, they CALLED me each time, within days, to discuss the matters. Extremely helpful. And one of the people who called me weeks ago just emailed a personal note to apologize for my approval delay. So it’s an odd mix of Kafka-esque faceless red tape and the kind personal attention you’d never expect from such a massive operation.

Now… I haven’t actually submitted (or, you know… finished) my first app yet. So that’s a whole other process I have yet to enjoy :slight_smile: I hear tales of Japanese tax forms and mysterious approval rules.

Ooooh…okay well then fine, I’m already prepared. I got the impression you were submitting additional “paperwork” for submitting an application in the future…

…I got it, hehe. :smile:

Right. I just paid my $99. Now the fun begins.

Luckily my game already runs and (non-iPhone) testers like it, so that’s a good start!

Back on topic… I suppose if this list seems at all useful–and once I can tie practical how-to info to each–it might make a nice Wiki article.

Absolutely…I’m honestly surprised this hasn’t been done already considering the number of Unity-made games already out…

…I’m looking at YOU PirateNinjaAlliance!! :smile:

…and yea you know, going around handing people your phone to let them play around with something your creating is TERRIBLY satisfying…especially when they’re genuinely interested. :slight_smile:

Haha, what are you lookin at me for? :stuck_out_tongue:

This looks like a good list, very very thorough. The stuff I’ve gotten requests for in Zombieville are mostly gameplay related tweaks, but the “playing my own music” and “respecting the mute switch” are probably the two most common requests from this list.

I’d say something everyone should add to their game is a pause button if it seems at ALL warranted. To my surprise, it was one of the most requested features when I first released Zombieville and it was quite trivial to add via manipulating the timescale.

Supporting different orientations is a pretty rare request - the default that Unity uses for landscape mode (with the menu button on the right) seems to be much preferred by users over having the menu button on the left. From my observations, itunes reviews of games flipped the non-unity-default-way get ten times as many people complaining about headphone jack position. Offering a choice is still nice though.

Autosaving is a must, and some people have even had their apps rejected due to lack of a save feature when the game is interrupted. If at all possible you should be able to return the game to its exact state where it was left, but the next best thing is a checkpoint system, which is ten times easier to code (and most users are happy with from what I’ve gathered).

I’ve never had anyone e-mail me asking for on-screen volume controls for 1st gen touches, so I wouldn’t worry about working that in if its a hassle.

Edit: Oh, and to answer your question from earlier, no Xcode work is necessarily required to be compliant with existing standards on the App Store. My game is 100% Unity, no objective-C shenanigans at all.

Oh YOU know… :smile:

Phew…cuz that right there was the big one (question). :smile:

Oh and in my previous post I mean “you’re”, sorry…(spelling OCD)

Thanks Pirate!

Great list, and I think its also the beginnings of an excellent wiki page-- a FAQ of things to do for your iPhone game, and most importantly, how Unity supports them.

For instance, internationalization: How do you determine the locale of the device? As I understand it, in regular iPhone SDK you look in user defaults for a specific key. So, I would guess that PlayerPrefs on the iPhone is just a front end for the UserDefaults, and thus you could use that same key to find the locale and thus know which language to show your menus in. (But I haven’t had a chance to test it or confirm this hypothesis.)

Thats not required, they already have it actually.

Double home click on the itouch 1st gen opens the mini player over the game. The volume there is of global nature, so you can change the volume of the game while you play it.

I hadn’t heard that. But then how would you change the volume of your iPod music relative to the game? I often turn the music up and the game down (or vice versa) while gaming. On my iPhone, the side switch is a global volume affecting both, but the popup affects only music.

And what if the user has the double-click set (in Settings) to launch full the iPod app itself if you don’t have music playing? (That’s how I have it set: it only brings up the mini-popup if your music is ALREADY playing. But this is on iPhone.)

Does the 1st-gen iPod’s Home button work differently from other iDevices?