The idea for this post really started with this poll:

Screen Shot 2013-11-28 at 18.55.14

I’ll present the results further down. Not wanting to spoil it before you made your choice.

This poll was just a quick test for a free web poll service. Well that and being curious how the major 3 Objective-C render engines compared against each other.

Since I added a “Other” choice and some users took it, I started to wonder what the “Other” choices might be.

I mean besides cocos2d-iphone, Sprite Kit, Sparrow and OpenGL ES, what choices could there really be? Have I perhaps not noticed the next big thing in Objective-C render engines?

Spoiler: I didn’t.

The Poll Results (as of Nov 28th 2013)

iOS 7 and thus Sprite Kit has been available for just over 2 months.

My expectation was that being so new and despite coming from Apple and developers usually slow to change their preferences, cocos2d-iphone would likely come out on top. At best it would have a head-to-head with Sprite Kit.

The actual result really surprised me:

Screen Shot 2013-11-28 at 18.47.44

Note: The image above does not update, it is from Nov 28th 2013. You can find the very latest results here or by answering the poll above.

Nearly two thirds of participants prefer Sprite Kit (or Kobold Kit). Only about one in five prefer cocos2d-iphone. I don’t think that cocos2d-iphone developers have suddenly lost so much interest in it, rather I find it’s more likely that Sprite Kit simply attracted many new game developers in the first place – meaning in absolute numbers the change in preference isn’t so huge after all.

For every three cocos2d voters there’s one Sparrow voter, and for every two Sparrow voters there’s a one-point-something developer who prefers a custom engine, possibly raw OpenGL ES. I suppose one has to be a 120% developer in order to be crazy enough to use raw OpenGL ES. 😉

Overall just 5% of developers prefer to use OpenGL ES while 95% would rather prefer a render engine that hides the complexities of OpenGL ES. With such a strong vote for Sprite Kit, this also means that those two thirds don’t actually care about using OpenGL ES at all.

Which brings me to the ominous “Other” entry, and thus …

The complete list of game/render engines for Objective-C developers

This list is divided into 2D, 3D, Not-Entirely-Objective-C and Dead engines.

Objective-C 2D Render Engines

All of the 2D engines are Apportable to Android, perhaps with the exception of Sparrow (I simply haven’t heard of a Sparrow app having been apported – though theoretically it should work).

Sprite Kit is the 2D framework from Apple, it supports all iOS 7 devices. Kobold Kit is the open source extension project for Sprite Kit by yours truly.

Cocos2d-iphone was among the first Objective-C render engines. Since Sprite Kit appeared its remaining strong points are being able to use OpenGL ES and shaders as you see fit, a visual editing tool named CocosBuilder/SpriteBuilder, and it being open source. Compared to Sprite Kit cocos2d-iphone supports two additional devices: iPhone 3GS and iPad 1.

Kobold2D is an extension project for cocos2d-iphone v2 with simpler setup, ARC enabled and many example projects from my Learn Cocos2D book. An update for cocos2d-iphone v3 is unlikely because I’m tied up in OpenGW.

KoboldTouch is a commercial MVC wrapper around cocos2d-iphone and the sort-of predecessor that lead to the development of OpenGW. In other words a lot of the ideas and actual code from KoboldTouch went into OpenGW.

Sparrow Framework is a good alternative to cocos2d-iphone with an easy to use, extensible API. Whether you use Sparrow or cocos2d may boil down to simple preferring one API over the other. Feature-wise they’re on the same level. Only the number of web resources like tutorials and sample projects is smaller.

OpenGW is a game world simulation engine with an entity component system and model-view-controller architecture. Being an abstract simulation engine (like physics) it works with any Objective-C render engine, including custom ones. We also provide a view layer specifically for Sprite Kit / Kobold Kit and cocos2d-iphone. OpenGW can also simulate 2D worlds displayed in 3D as commonly seen in overhead strategy and adventure games.

Objective-C 3D Render Engines

These are the lesser known 3D engine candidates. Like with any 3D engine you can also build or mix 2D content, though frequently this involves more work than using a dedicated 2D engine.

I can only say for sure that Cocos3D and OpenGL ES are Apportable. GLKit may be Apportable, too.

Scene Kit is a 3D API from Apple with a light-weight editing tool. Unfortunately it’s only available on OS X, and was silently introduced with OS X 10.8 Mountain Lion back in July 2012 and has been under the radar ever since. Will Apple ever port Scene Kit to iOS? No one knows.

Cocos3D is an extension project to cocos2d-iphone, adding support for 3D rendering. Version 2.0 is compatible with cocos2d-iphone v2.x but it’s only available as a preview version right now. The v0.7 release is usable only with cocos2d-iphone 1.x – and that particular cocos2d version is not fully compatible with modern devices and iOS 7.

NinevehGL is the engine with the funniest name. It seems fairly decent, though the latest version is from February 2012. The only thing that kept me from moving it to the “dead engines” list is the repeated assurance that they are still working on it. Personally I don’t trust projects without an update in 21 months and not being able to tell exactly why and what will be coming next. But I’ll give them and their community the benefit of the doubt.

OpenGL ES is as barebones as it gets and not for the faint of heart. The reward is the best possible performance – if you know exactly how to get that out of OpenGL ES and mobile GPUs. Otherwise it’s just a huge timesink. Unless you want to learn OpenGL ES or already know it inside-out, stay away from it.

GLKit is a small wrapper that makes using OpenGL ES easier and more compatible with UIKit. While GLKit exists for OS X as well, under OS X it is missing the most important classes: view and view controller. Overall if you want to work with OpenGL ES, do so by using GLKit because that cuts off a lot of the grunt work associated with OpenGL ES programming.

Not-Entirely-Objective-C Render Engines

These engines aren’t written entirely or largely in Objective-C. Instead they provide a more or less complete Objective-C interface.

It’s fair to say that while you can program these engines using Objective-C code, it’s not their natural habitat and you’re likely going to have to write code in other programming or scripting languages to make best use of these engines.

Torque 2D is a C++ engine. I’ve been told it has a lightweight wrapper to Objective-C but you’re mostly going to be writing C++ code though. It comes with good editing tools, and a free MIT Licensed version.

Unity creates an Xcode project for iOS. to which you can plug in additional Objective-C code. However to fully utilize Objective-C with Unity without resolving to tricks you’ll need the expensive Pro version in order to write plugins.

Orx is a render engine written in C, therefore it integrates naturally with Objective-C. It doesn’t come with an Objective-C layer of any kind though. So this is a bit of a stretch to include Orx in this list. But I like the fact that it’s been around since 2008 (last update a month ago) yet I’ve never heard of it.

SDL is the good old trusted Simple Directmedia Layer, now compatible with iOS and Android. It’s a barebones renderer written in C but one that has been around for ages. Like Orx it doesn’t feature any Objective-C layer, again a stretch but how could I include Orx but not include SDL?

The Rendering Dead Engines

These engines are dead. At least dead by the clinical definition of not showing any brain activity for at least a year.

Some are Zombies, others are truly dead. They have had a knife rammed through their skull, or their head blown off, or their limbs torn off and the remaining pieces thrown into a deep, dark pit that subsequently collapsed.

Don’t go looking into these engines (unless curiosity gets the better of you) – you are likely going to be disappointed.

 

The last activity for iSGL3D was a blog post almost exactly 2 years ago, asking for contributors. The last release was 2 years ago and the discussion group is full of unanswered “X isn’t working” posts. No official support for iOS 7 or iPhone 5(S/C).

Galaxy Engine’s google code repository is unavailable. There is no website, only a Facebook page. What remains are a few articles praising it and some Youtube tutorials.

Oolong was one of the early Objective-C render engines, even predating cocos2d-iphone by about half a year. Unfortunately the last activities (commits, bugfixes) date back to April/May 2012. The discussion list is either offline or broken.

TKKit is a render engine originating from China, apparently only for OS X and modelled after (if not built on) Quartz2D. Here’s the translated project page that says it’s a personal hobby / amateur work. The last and only activity was back in October 2012.

Vinter’s homepage is no longer accessible, so I linked to the ModDB entry above. That entry tells us it was made almost 2 years ago and the code is actually C++, though I found references to Objective-C elsewhere, too. Either way, that project is truly dead.

The Missing Engines?

Please leave a comment if I forgot to mention a particular and publicly available (free or commercial) Objective-C engine.


This article was brought to you by ...

I very much enjoy the learning process, the pushing of boundaries (mine and yours and that of technology), having the freedom to pursue whatever is on my mind, to boldly program what no one has programmed before, and to write about what I've learned. Help me help you by browsing the products in the Learn Cocos2D Store.

Comments are closed.