Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS9 Sprite Kit issues

Everything was going so well until I upgraded to xCode 7 and iOS 9....

My current project is a 2D platform game, ever since the upgrade I've fallen fowl of the sprite kit bug/errors that many of us seem to be facing.

My issue is that all sprites appear randomly in terms of their zPosition position each time the game runs on either simulator or device. I've been scouring stack for an answer without luck, so far I've tried.

  • Moving all images to .xcassets Like described here
  • Changing the iOS Development Target to iOS 9.0 under Build Settings
  • Changing all images in code to include their extension i.e. "background.png"

I still have the same problem where the images layer themselves apparently randomly, can anyone recommend a fix or some other possible solutions I may have missed?

Thank you.

like image 244
Rich Townsend Avatar asked Sep 19 '15 08:09

Rich Townsend


3 Answers

SpriteKit in iOS 9 GM is VERY broken. I don't know what they did at Apple, but a couple of people should be fired. Take a look at all the complaints here : https://forums.developer.apple.com

My issue, for one, is that when I load an SKSpriteNode through the imageNamed init function, sometimes the sprites appear, sometimes they don't. I am using device-specific images, and sometimes the SAME line of code will load Rock@2x~ipad.png which will appear because it's my device-specific image, sometimes it will load Rock.png, which won't appear because I haven't included universal images.

I have reported this bug to Apple and they haven't fixed it yet. They're asking me for test scenarios, I have explained them 3 times in different manners and I'm getting short on explanations here.

All I can do at this point is tell you to report these bugs ASAP to Apple, and cross your fingers someone intelligent will read your bug report and do something with it.

like image 98
PsykX Avatar answered Nov 08 '22 14:11

PsykX


As @tobias-lott mentioned in his comment I've had to bow include zPosition to every Sprite rather then letting the code order the sprites.

like image 8
Rich Townsend Avatar answered Nov 08 '22 14:11

Rich Townsend


I had the same issue with random zPositions, then I noticed the following in GameViewController.swift:

/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true

Changing ignoresSiblingOrder to false fixed the problem for me.

like image 5
Tim Perkins Avatar answered Nov 08 '22 14:11

Tim Perkins