5

So, I inherited a game project with the following setup:

  • A core SWF of the game itself, written in Haxe (3.0)/NME (4.0.2), utilizing the Starling framework, compiled to a Flash target using FlashDevelop
  • An AS3 wrapper which deals with assorted device communication needs (e.g. detecting device capabilities, managing phone lock state and pausing game/muting music, etc). This is compiled into own SWF (AIR 3.6), which is what is actually launched, and subsequently loads the "core" SWF and adds it the stage.
  • This AS3 SWF is subsequently packaged into the target formats (APK/IPA) using ADT (also AIR 3.6), along with its assets (including the core SWF).

Despite the odd complexity, the whole thing worked just fine; we created functional, usable apps that a)worked on both Android and iOS devices, and b) passed submission criteria.

Flash forward several months; the game has now passed beta and is ready for initial release. Android, everything goes fine. iOS, the other hand... Just days before we attempted to upload 1.0 to iTunes Connect, Apple changed their requirements. Suddenly, we were getting the error "Apps and app updates submitted to the App Store must be built with the public (GM) versions of Xcode 5.1.1 or later, and iOS 7 SDK or later. Don’t submit apps built with beta software." Fine, an error that tripped up many a developer back in September. Eventually Adobe released AIR 15, and packaged IPAs once again met Apple's submission requirements.

Unfortunately, updating to AIR 15 upset the applecart. We were now able to upload the IPA, but, ironically, it would not work on iOS devices. The loading screen (generated by the pure AS3 "wrapper" SWF) comes up, but then when the title screen (generated by the "core" SWF) should be appearing, there's nothing. Black screen, no activity, or alternatively (on some later attempts), instant, message-less app disappearance). No errors generated on the iOS console, nothing untoward happening when stepping through the app in FDB (right up until the app evaporates and FDB loses its connection to the remote host).

Other salient information:

I have tried updating literally every component involved in the process, assorted updates of AIR 15, and 16 beta. All of the listed haxelibs. We've even tried porting the "core" project (in the most cursory of manners) to OpenFL. All of these have resulted in versions that work on Windows (desktop, not phone), work on Android, but do not work on iOS.

Haxelib libraries: Original:

actuate: 1.6.4 [1.6.5]
air3: [0.0.1]
haxelib_client: [3.1.0-rc.3]
hxcpp: [3.0.2]
nme: [4.0.2]
openfl: [1.0.6]
openfl-tools: [1.0.10] 1.0.8
starling: [1.2.2]
swf: [1.0.2]

Extra tasty crashy:

actuate: 1.7.0 [1.7.5]
air3: [0.0.1]
haxelib_client: 3.1.0-rc.3 [3.1.0-rc.4]
hxcpp: 3.0.2 [3.1.39]
hxcs: [3.1.1]
lime: [2.0.0-alpha.4]
nme: [4.0.2] 5.1.8
openfl-compatibility: [1.0.1]
openfl-html5: [1.4.2-beta]
openfl-native: [1.4.0]
openfl-tools: [1.0.10]
openfl: 1.1.1 2.0.1 [2.1.2]
starling: [1.2.2]
swf: 1.0.2 [1.5.2]

tl;dr: Old version of AIR app works on iOS but can't be submitted to iTunes. New version can be submitted, but does not work on iOS (resulting in either a frozen black screen or a crash)

Any help whatsoever-- suggestions of what the problem might be, other ways we might be able to figure out the problem, or even ways to get the working app through the submission blockage (e.g. re-signing)-- would be greatly appreciated. Having to rework the entire game in some other framework, etc, is an extremely untenable solution at this time. This is basically a life or death situation for a very promising indie game dev company.

shiser
  • 262
  • 1
  • 3
  • 13
  • 1
    Maybe it would help to make a list of all breaking changes that were made from the old working version of AIR until the new version. Go through each item and rule it out one by one... – ezcoding Jan 13 '15 at 10:04
  • @DuZi It was more like the change of AIR from 3.6->[14|15|16] is what broke it, all the other changes were just attempts to remedy that. – shiser Jan 13 '15 at 14:32
  • 2
    Yes, that's what I meant. Go through the changelogs of the different AIR versions and take a look at the breaking changes. If you know version 13 is working, look what changes were made from v. 13 until v. 16. You already know that AIR is the problem, so you should try to find out which old versions were working. Keep looking until you find the first version, that made your Game "crash" take a loot at the changelogs from the version that was still working to the crashing version. – ezcoding Jan 14 '15 at 08:53
  • 1
    "message-less app disappearance" seems too bad to be true; can you single-step into the beginning of main? Does the same thing occur on the simulator? Can you run an empty project with this framework cocktail? Has anybody else in the world made a game with new AIR for iOS? –  Jan 15 '15 at 01:37

0 Answers0