Skip to main content
LilGames
Inspiring
November 27, 2013
Question

How to prevent iphone 3 owners from downloading?

  • November 27, 2013
  • 1 reply
  • 1126 views

I'm in a bit of a quandary. I created an Adobe AIR app which supports iPhone 4 retina resolution, and iPad standard resolution (even on iPad 3). I assumed that Adobe AIR doesn't support iPhone 3 devices and resolutions, so I didn't even package Default PNGs for those old devices.

The app passed and went live in the store back in September. I think I was using AIR 3.7 at the time. Last week, I pushed through an update that uses AIR 3.9. That's been approved and is live.

Today, I find out that people with iPhone 3GS can download the game!   Now first of all, how did it pass if iPhone 3 actually is supported?! The person who downloaded it told me that only a portion of the screen is visible (of course! iphone3 is lower res than my app is set to!)

So beyond the shock of Apple not rejecting it or restricting it from download on low-res devices, how do *I* restrict it? I cannot find anything in iTunes to set this, and the only info I could find out there was using "iOS Keys" and finding a device feature only supported by iPhone 4 and up.

Anyone else encounter this problem? If I don't fix it quick, people will end up dinging me with 1 star ratings. The game is NOT meant to run on such slow hardware.

I appreciate any advice.

This topic has been closed for replies.

1 reply

Colin Holgate
Inspiring
November 27, 2013

iPhone 3gs runs close to i{hone 4 speeds, and is worth worth considering. It can also run iOS 6, so you can’t rule it out by specifying iOS 6 as a minim. At this point you could set iOS 7 as the minimum and live with losing a few higher end users.

What scale mode are you using?

LilGames
LilGamesAuthor
Inspiring
November 28, 2013

Thank you for replying Colin.

I am using scale mode NO_SCALE along with quality LOW. In my experience with Flash, these two settings provide a good performance boost on slower devices.

I am publishing straight from Flash Professional, including timeline placed assets (all bitmaps), and I get an average around 54fps on an iPhone 4 except when I have too many movieClips animating at the same time (the slowdown usually only lasts about one or two seconds, so it's tolerable for a puzzle game).

I have the stage set to iphone retina size (960x640), and have graphics "bleeding" into the areas around the stage so that when viewed on iPad (1024x768), iPhone 5 (1136x640) or some Android devices, there are graphics visible rather than an empty border. This stategy does not work for ipad 3+ retina so in the resolution key in the app.xml I put in an exception for ipad 3, making it run in "standard" res for that device.

(*Now that I think about it, it was the selecting "high" resolution in Flash's iOS publishing options that made me think it would NOT be a 3GS compatible app)

I am thinking that my only option now is to wait a few "frames" after initialization and if I detect a device resolution that matches 3GS, I will turn scaleMode back on to "SHOW_ALL". But I fear that scaling graphics along with a slower CPU will make it unplayable on 3GS.

Any other short-term fixes I could do? I am already aware of best practices such as Starling, sprite atlases, etc and I do intend to eventually convert to Starling (or skip that and just go to Unity).

Colin Holgate
Inspiring
November 28, 2013

From what you say I guess you have the stage center aligned along with no_scale. The problem with that approach is that you’re only taking care of a narrow range of device sizes, and 3gs users would presumably just see a little bit of the stage. Users on a 2560x1600 Kindle Fire HD would see a huge amount of overspill area.

The scale modes of show_all and no_border happen not to cause performance issues. If you think of your existing FLA, there surely are a lot of places where you have a movieclip not at 100%, and it seems to work ok. Those scale modes are effectively putting the entire stage into a scaled movieclip, and it works well.

Depending on the nature of the graphics you could try GPU render mode. That’s what we’ve been doing lately, with apps that are a mixture of code and timeline driven animation. If you can afford $3 to check this out, and perhaps have young relatives who are fans of Mike the Kniight, here’s one of the apps we did recently, that uses show_all, 60 fps, GPU render mode:

https://itunes.apple.com/us/app/mike-knight-knight-in-training/id666984904?mt=8

I just went through reducing the file size of that, mostly by being tougher with JPEG compression, to make Android versions:

https://play.google.com/store/apps/details?id=air.com.hitentertainment.MikeTheKnightTraining

http://www.amazon.com/Mike-Knight-Training-Game-Pack/dp/B00GXV7UNU/

The Android ones will work on the smallest 800x480 device, or the large new Kindle Fires. The stage size is 1024x576 (16:9 ratio, as would be seen on iPhone 5), there is enough overspill content to fill an iPad screen, and we use code to place some of the UI near the edges of the device. It generally works well.

BTW, one tough case for GPU mode is the iPad 1. It doesn’t have too much GPU memory. I’m currently working on an optimized version of another app, where I have taken all of the images and made them be custom 8 bit PNGs. That ends up being a larger file size, but the GPU memory usage goes down to 25% of what it was.