Which of Apple's game technologies can I use?

08 Feb 2017

Writing this down here because I didn’t see an easy reference to it anywhere and I just took the time to figure it out.

I’m starting a new game-ish thing and figuring out what I want to build it in. What technologies can I use? In particular, I’m looking at:

I personally still own:

My iMac and MacBook Pro are both on El Capitan. The iMac’s too old for Sierra, and I don’t want my daily computers on different operating systems. As far as Apple’s game related technologies go, El Capitan is the equivalent of iOS 9.

Why go as far back as that iPhone 4? My 6 year old son likes to use it. I could also suck it up and start doing Android dev and support his Kindle, but… eh.

So here’s a quick breakdown of what’s supported on those devices.

iOS 5

No Swift, no SpriteKit, no SceneKit, no GameplayKit. GLKit’s good here. I’ll need to use Xcode 6.4 to compile for it. Apple’s GLEssentials example works just fine on that iPad 1, although I’m only hitting about 21 frames per second on it, even when compiled for release.

iOS 7

Swift up to version 2.3, I think. It doesn’t look like I can still target iOS 7 using Xcode 8, so I’m limited to what’s supported in Xcode 7.3.1. No SceneKit or GameplayKit. GLKit works fine, of course.

SpriteKit’s initial release is supported, which means:

iOS 8

I don’t have a device that’s limited to or running this version, but I’ll include it for completeness. Xcode 8.2.1 still supports iOS 8, so Swift 3 is an option. It also introduced SceneKit, so there’s a 3D engine in there. I don’t know anything about SceneKit beyond that it does 3D, so I can’t speak more about that. (I sure as heck don’t have the time for 3D at the moment. :D)

Still no GameplayKit here. New stuff in SpriteKit:

iOS 9

GameplayKit finally comes into play here, giving us some handy tools:

Most of GameplayKit is straightforward to write yourself, but it’s nice to have well-tested, proven implementations of that stuff.

SpriteKit adds:

iOS 10

GameplayKit adds:

GameplayKit also gets some integration with SpriteKit:

SpriteKit adds:

I’ve probably missed some stuff up there, but this is the stuff I’m likely to care about.

Part of me’s tempted to go the raw OpenGL (or at least GLKit) route: gives me the most control, and I can add whatever I feel is missing, etc. It’s a huge time sink though, and at best I only have about an hour a day for personal projects right now, so it makes more sense to lean on these things when they’re available.

I’m kind of iffy about using Swift: I’d like to use it, but if I want to target my iPhone 4 I have to use Swift 2.3, and it feels silly to start a new project on what’s already an obsolete version.

I guess that leaves me two real options: