Just me, or SpriteKit in GMs terribly broken?

I've updated to ElCap GM, XCode 7GM, and iOS 9GM and a project I'm working on seems to be broken at every turn.


  • Atlases don't work properly
  • Atlasses in Asset Catalogs don't work properly
  • still getting PKPhysics* types in methods expecting SKPhysics* types
  • the Actions editor is buggy as **** and doesn't properly handle image references
  • sizing of physics bodies based off of textures seems to not work right...


I've filed bugs where possible (way back in early betas), some of these issues are intermittent or difficult to track down... but it certainly doesn't seem to me that SpriteKit is anywhere near ready for release. Am I doing something just fundamentally wrong?


At this point, my project is so full of kludges to avoid crashing left and right, I don't know if I'll every be able to release it 😠

I filed bug 22839389 which states that texture atlas performance (instantiating a bunch of SKTexture objects in a loop) is much slower when the texture atlas is in an asset catalog verus the old way (outside of the asset catalog).

It would appear that like many others, my project has too been bitten by iOS 9 and the SpriteKit frameworks. I've been fortunate that I can't report a lot of the issues others seem to have, but I have done my own research using my testing devices and the simulator and came up with some weird results based on what Xcode has provided. The tests run on the same scene that does not change between iOS 8 and iOS 9, but does change based on the device type being used.


As already noted, framerates across the board have dropped significantly, in some cases I get better framerates in the Simulator than I do on the physical device running iOS 9, particularily on the iPhone 5. One thing I noticed - in iOS 8 (and iOS 7 when I started this adventure), SpriteKit displays it's node, draw and quad counts that I have been using for benchmarking on various occasions. Without changes to the scene, in IOS 9, the node counts almost triple. The draw and quad counts don't change at all.


Even more interesting, when running the mini-instruments display in XCode 7, it shows that my app running in IOS 9 spends almost 10 times longer rendering a scene in terms of CPU and GPU time. I mean from 15.2 to 39 ms CPU time (based on hardware) and 2.7 to 4.0ms GPU time on iOS 8 to 170 to 202ms CPU time and 30 to almost 35ms GPU time on iOS 9. These times are per rendered frame, which explains the huge FPS drop.


Now granted, this doesn't add anything to what everyone has talked about, and Apple is certainly well within their rights to upgrade and make modifications to SpriteKit as it is their framework. But it is certainly enraging that they would do something so severe to the performance of a technology they themselves showcase, then ship it in a major OS update. It certainly won't be Apple who will be getting the one star reviews on the App Store because the app the customer just bought runs poorly on their shiny new iPhone 6S!


We may be indie developers, absolutely. But we need to have a far louder voice - we are not large companies that have revenue coming in from all platforms. We chose Apple and their technology to showcase our products and what we can bring to the platform - not the other way around!


If Apple cannot demonstrate to developers some of the respect we deserve for our contributions to their ecosystem, then perhaps open source options like Cocos2D-objc, Cocos2D-x, and others like it are the way to go. With my app nearly complete, I will not submit it to the App Store linked against SpriteKit. I may as well throw away my money and goodwill I will lose from potential customers, because they certainly won't appreciate the explanation that "Apple broke something". All they will see is "this app *****", and delete it or demand a refund. So much for brand building. And, as noted by others, even if Apple fixes SpriteKit in a future OS update, the damage is done. There will be customers that do not upgrade past iOS 9, or 9.0.1, or whatever versions contain the broken kit.


Even though I am a couple of weeks away from shipping, I will take the extra couple of weeks and convert it to Cocos2D - all the benefits of OpenGL and Metal support without the headaches or hassle, and API wise pretty close to SpriteKit. And hey, if the current version of Cocos2D has an issue - there is always the previous version to link against! We don't have that luxury moving forward with SpriteKit.


In my case, Apple has burned their bridge and lost my goodwill using their framework. I will look to others to provide the stability and reliability for my graphics engine needs, and not be afraid of a major OS update destroying 18 months of work.


And, no, I will not be filing any bugs on this. There are a lot of others before me who have done their due diligence and filed bugs already to seemingly no avail. I will not add to the noise, or the workload of people who (hopefully) would rather be spending time squashing bugs than rummaging through all the reports flagging duplicates.

Bobjt - thanks for participating on this forum.


Can Apple please let us know what is going on with SpriteKit?


Is there a plan to fix all the issues - or at least some acknowledgement that there are some problems...


At the moment all we know is what we have been told, which is nothing. And we have broken apps 😟

A must read.


Contains use of logic, rationale and wisdom.


This only leaves qeustions:


  • Why did Apple ship something this broken?
  • Who will trust their time and energy to Apple's game engines after this coontinued fiasco?


The surest way (maybe) to regain goodwill after this disaster is opening up and rapidly iterating over Sprite Kit and Scene Kit with community support, as per Unreal Engine 4's way of doing things.


Can't see that happening, unfortuantely, as it would take the kind of wisdom evidenced in the above post, and then some.

My game, which worked fine in iOS 8 and is on the App Store, is also broken in iOS9. Sprites display at the wrong size on Retina displays. The 2x textures are no longer loading for some sprites. Other sprites display the 2x textures at twice the size. Other sprites don't display at all, or load some other random section of the texture atlas at the wrong rotation. I have about 16 hours trying to get it to work and I have not been able to.

Update: I have had success and gotten the sprites to load, by doing the following:

  1. moving many of the assets into a new .atlas folder. (@2x assets move with regular ones) — I'm not sure if smaller atlases work better or if the mere act of reorganizing them made it work.
  2. instead of loading assets with [SKSpriteNode imageNamed:], use the explicit reference to the atlas to load the texture [SKTextureAtlas textureNamed:].
  3. removing ".png" extension for source image in the Particle editor (can just re-select the particle image source).

I just tested iOS9.1 beta 2 and SKLightNode performance is back to normal *relief* still broken


EDIT: Still broken on iOS 9.1 full release.

I'm also having a lot of problems with SpriteKit in iOS 9. A project I've been working on for months using iOS 8 SDK was nearly finished. The other day I updated to iOS 9 SDK and now my project barely works. Some of the problems were easy enough to fix while maintaining backwards compatibility with iOS 8. Other issues I'm having aren't so easy to diagnose. Other people have mentioned some of the same issues but I wanted confirm that I've had the same problems too (some I've logged as bugs):

- Reduced frame rate during gameplay, some operations are causing a 30% performance hit.

- Sprite alignment errors, gaps along the edge of the scene.

- Random zPositions for nodes if they aren't set explicitly

- Size returns negative numbers if a nodes scale is set negative

- Nodes not being removed their parent node

- Collisions failing to register

- SpriteNode's centerRect property seems to be ignored. Results in stretched out textures (all the buttons in my UI are messed up).

- Performance hit from SKEffectNode with 0 children.


My project was in the final stages of polish and I was hoping to release it soon. After trying it with SpriteKit in iOS 9 I have to put those plans on hold. This is very disappointing to me after investing so much time and energy into the project over the last 4 months. I can't imagine how it would feel to have finished projects in the App store that no longer work with the current OS. The users of my app would blame me! If I continue to choose SpriteKit as my development framework, will I be expected to perpetually upgrade every application to address major issues caused by new iOS versions?


Thanks,

@nilPill

Those look like the same kind of issues that people have being finding. Although I haven't heard or noticed the centerRect one before - in fact I'm pretty sure I use that in my current project running on iOS9 and it is working okay: I'll have to check..


I already had a game out on the App Store and it got broken (running on iOS9) with stretched images and broken lighting. Thankfully I was able to rebuild in Swift 2.0 and fix the stretched images with a small code change to how my objects were scaled (I didn't spend too much time bothering why it was different in iOS8 to iOS9 but it's possible that my code was fluking it before due to how I was using the restore flag on actions). The lighting I've had to remove completely, which is a shame. It's also temporary disabled from my current iOS 9 project until Apple gets a fix out to make it useable in-game.


So, I had a couple of bug reports in but one was removed as a duplicate (the -ve scale one you mentioned above). The lighting is still sat there with no response yet.


The silence on a lot of these issues everyone is finding speaks loudly I think - So, I'm assuming Apple know they have a whole bunch of issues to address here and they are just getting their heads down to get a stable SK for iOS9 out soon.


Honestly, It seems like SpriteKit wasn't ready for release with iOS9 but it had to go out due to the timing of everything else...the devs were probably under a whole lot of pressure to hit the deadline. Not good for us though!


I can't imagine it will always be this bad on an annual basis.... fingers crossed!

This is exactly my situation. Had plans to release the app in October and now I have no idea what to do. App development is a risky business, and it is getting more risky to invest one's time in the app. Good luck to all fellow indie developers. We really need some luck 🙂

Just adding my name to the list.


I've just slaved away for 8 months developing an app. I thought I was pretty close to release, with everything working really nicely in iOS 8.


With iOS 9, I have a whole bunch of issues. Random crashes, SKCropNode issues, SKPhysicsBody issues, SKLabelNode issues. I've even got a weird failure caused by unwrapping the SKSpriteNode.parent property for a node that definitely has a parent. It wouldn't be visible otherwise. It's so depressing after all the hard work.


Just to echo others on here - let's hope Apple is listening.

It would not surprise me to hear the project was rushed to meet the yearly iOS deadline. These are good for shareholders, not so much for developers. I understand not wanting to delay other parts of the OS if one aspect isn't working well, but breaking backwards compatibility like this can't be good for business either. I'm not surprised by Apple's silence on the issue because they traditionally don't communicate much about internal processes.


I do hope our frustrations are being heard and addressed though. At the end of the day I really enjoy developing for iOS and would like to continue to do so in the future. However if this type of thing continues to happen I can't bet my livelihood on this. I want to spend my time building content, not bug fixing/reporting esoteric problems.

I am sure they are listening. I hope they will speak someday.


What we have here is emotions (fear, anger, doubts), but emotions are real. Some people will make decisions based on them. These emotions should be managed.

When a major bug affecting users happens, Apple makes a statement to the public like "Sorry, we have screwed, here are another map apps". Looks like developers can be treated less carefully.

--> Loading a Sprite Node through imageNamed: doesn't always work, in both Texture Atlases and Image Assets.


Oh yes! This a million times over.


I am brand new developer and have spent about 2 months getting the framework of a game up and running. Very happy with my progress and excited about releasing my first application sometime in the future - until today.


I installed El Capitan (late to the party, but I am no where near a launch - truly still in the learning phase)


I tried running the application and noticed that SKSpriteNodes were not loading. The most frusting part of this is that it is random. Close the application and relaunch (or just rebuild and re-run from XCode) and different set of RANDOM SKSpriteNodes do not seem to load (or at least, the are not visible - I will have to do some testing tonight).


This is simply the main menu for my game. I am using one of the most fundamental classes in SpriteKit: SKSpriteNode with the simple initializer imagedNamed. How could this possibibly be so broken? I'm using Image Assets right from the package (all with .png extension) - haven't grouped them into an Atlas yet.


I'm stuck as I feel I should not be trying find a "work around" for the most basic functionaility of SpriteKit.


As someone new to this, how long does this take to get resolved?

The collisions I thought were failing to register are actually a result of the physicsBody not lining up with the sprite (it's created waaaaay off screen). The physics body is dynamically created in an SKAction for a sprite that already exists in the scene. I thought placement of the physics body was in the object's coordinate system but it appears to be picking up an additional transform somewhere. I've tried creating the physics body at different times, removing the object then making the body and adding it back, moving the sprite to (0,0) then making the body, etc... Nothing works (except the same code in iOS 8).😢

Just me, or SpriteKit in GMs terribly broken?
 
 
Q