Little introduction, why did I need this?
I got a freelance request to port a flash game … to iOS/Android. I was proposed to use unity3d, that people say is very good and not suited for 2D. So, I had to implement my batching and rendering using primitives. In semi-automatic mode converted as3 > C#, but even with Pro version features FPS on iPhone 4 was around 15 in not loaded scene. In a loaded scene there can be up to a few hundred objects. I decided to rewrite everything using C++, try for example to write this game: … on pure Lua or C# and make it working on phone without lags: you wont succeed. I started looking for an engine … And to my surprise, I didn’t find anything good, except a few lua engines and also open sourced Cocox2dx. Okay, I decided to try it, but its syntax and code its just horrible, especially CC prefix for all classes. I was trying still to use it but then other problems appeared. So, I continued my search and found marmalade. Hooray, this is exactly what I was looking for, I thought at the beginning, even can code for iOS in Visual studio and build a project with one button. But there is one problem, with pure Marmalade you wont get far, it is very low-level. Thats how I came to an idea to write the engine myself, using my accumulated experience. Moreover, I wanted to make this long time ago, and I was worrying that downloadable games marking is dying and noone needs a good 2D engine.
Component based system, simple and predictable OOP API. Possibility to inherit from classes and overload their behavior.
Planned in cocos2d-x version 3. Do you want to participate? Please look at https://groups.google.com/forum/?fromgroups#!forum/cocos2d-js-devel
No global mega managers of everything, that dictates requirements to the way you write your code.
I’ve seen cocos2d-x based code that uses it directly, I’ve also seen code thas uses own widgets system, STL and fully abstraction from cocos2d API. So nobody dictates way to write code in cocos, except programmer’s experience.
Flash-like scenegraph and events model
Probably it will be interesting for research before version 3.
fast, memory efficient
Every engine have such features. Or, at least, declares them.
And, finally: cocos2d-x version 2.x come from Objective-C engine, and designed to be understandabe by Objective-C and Java programmers, including indie programmers who often does not know many C*+ idioms. Cocos2d-x version 3.x can introduce significant changes - and you can participate in this process. See mentioned mailing list and “develop” branch on github.
P.S. Also cocos2d-x 3 will use std::function instead of current callbacks or template magic in Closure, and use all c**11 features available in GCC 4.5-4.6* (not decided yet) and MSVC 2012*. Clang not mentioned because it have perfect c*+11 support.