Encouraging Stats for Unity3D as a Mobile Games Dev Platform but There’s Still a Reality Check for Non-Indie Developers

Interesting statistics from Game Developer magazine (May 2012), via Gamasutra:

…Game Developer magazine has released the results of its first-ever mobile and social developer technology survey in the May 2012 issue….

Unity topped the list of mobile game engines, with 53.1% of developers reporting using Unity compared to 39.8% using a custom engine., 17.7% using Cocos2D, 5.3% using Marmalade, and 5.3% using Corona (this question wasn’t exclusive, so the percentage count adds up to more than 100%).

I’m guessing most of the 53% are indie developers for now.

At the moment (Fri, Aug 24, 2012), I did a search for “Unity3D” on Indeed.com in all of the US, and got less than 100 job postings, many of them only mentioned Unity3D as a “nice to have”. Compared that with 8,828 jobs that mention HTML5, 12,567 for Flash (yes, still!), 2,087 for Actionscript (even after “Flash found dead in seedy San Jose motel room“) on the same date in all of the US.

I hope more Tech Directors & teams hear about Unity soon & pick it as their dev tool for mobile games & beyond. I like working in this game engine, so it’d be nice to have more job opportunities for it in more places.

Random Notes to Self on Cocos2d Basics

  • Under the Cocos2d coordinate system (0,0) is at the bottom left, like in Core Graphics (vs Flash & standard UIKit, Animation with the upper left)
  • Cocos2d offers convertToGL and convertToUI methods to switch between UIKit and Cocos2d coordinate systems
  • In Cocos2d each new screen is a Scene. Scenes have Layers, Layers have Sprites
  • iPad screen size 1024×768, iPhone 320×480 (460 if you count the status bar). Note the distinction between pixels & points used in iOS dev.
  • Layers act kind of like layers in an .fla, with multiple Sprites per Layer (not the greatest practice for .fla). In a way, each layer is a bit like a Display List of its own
  • Layers have an addChild method with one of the input params being “z”, which works exactly like the z-index in CSS concept or the Display List’s depth order in AS3
  • ‘#import “MyLayerClass.m”‘ causes “Apple Mach-O Linker (Id) Error”. Just fix the import statement to point to a “.h” file instead of “.m”
  • a fun way to get the dreaded EXC_BAD_ACCESS error is to forget to include a “return self;” statement in an -(id)init method for a Layer or Scene class