Use 2.1.4 or 3.0?

If I were to start coding a new game, and didn’t know much of Cocos2d-x anyways, should I stick with 2.1.4 (the stable release) or just start with 3.0 (still in flux but hopefully stabilizing)?

My game is going to release at holiday 2013 season at the earliest, so that’s a few more months.

Right now I’ve been using 2.1.4 this week, but I’m just wondering whether I shouldn’t upgrade now, if I’m going to do so at all before release (given the API changes).

Advice appreciated.

They are different animals. Try to started v3.0.
If you started v2.1.4 this moment, you would feel pain to migrate your code to latest version in future.

I suggest starting from 3.0.
In fact 3.0 is much stable than 2.1.4 and keep almost 100% compatible with 2.1.4.

So 3.0 (pre) is as stable as 2.1.4? For my project, I have to support iOS, Android, and BlackBerry. All three need to run well.

Should be release-worthy in 3-4 months?

Documentation is updated enough for use?

Marc Lepage wrote:

So 3.0 (pre) is as stable as 2.1.4? For my project, I have to support iOS, Android, and BlackBerry. All three need to run well.
>
Should be release-worthy in 3-4 months?
>
Documentation is updated enough for use?

I think it depends on they type of game that you are going to develop, its requirements, and how good you feel with an “pre-alpha0” technology.

About v3.0:

  • It has new API: it is easier to use, less redundant, less objective-c patterns, more c*+ best practices, C**11 support
    * The old API should still work by using deprecated methods .
    * It has new features: faster and more efficient labels
    * A new renderer is planned
    * A new memory model is planned
    * It has many bug fixes
    * Platforms support:
    • Faster Android
    • Better Desktop support: to migrate desktop to GLFW
    • Better Linux
    • Support for Qt5
    • But NO Blackberry and Marmalade for the moment since C*+11 (gcc 4.7 or Xcode 4.6 or VS 2012) is required
  • Documentation: Less documentation and samples
  • Stability (From a memory and “crash” point of view): it is as stable as v2.1… I would say that perhaps it is a bit more stable since we already fixed some bugs
  • Stability (from API point of view): It is unstable. The API is not frozen yet. Expect more changes in the next releases.

About v2.1.4:

  • It is in maintenance mode: a new v2.1.5 will be released with some critical bug fixes, but without new features. only critical bug fixes.

So what should you use ?

  • If BlackBerry is a must, stay with v2.1.x. ( Does anyone know if/when BlackBerry is going to support C++11 ? )
  • If BlackBerry is optional and you need any of the new features of v3.0, and you don’t mind using a unstable API, then v3.0 is for you.

Thank you Richard for that very informative reply.

BlackBerry support is a must for me, so for now I will stick with 2.1.x. Hopefully C++11 will come soon to that platform.

In the mean time I will continue to check out v3.0 and hopefully experiment with it.

Ricardo, is the speed improvement with Android NativeActivity significant?

Some simple tasks like handling orientation change, sending/receiving intents, and integrating admob/analytics SDKs now seem difficult/impossible due to NativeActivity (http://www.cocos2d-x.org/forums/6/topics/35619).

The NativeActivity issue is the only thing stopping us from migrating our apps to 3.0. It will be great if someone more familiar with NativeActivity can at least verify that all this can be done.

@Sachin:

You should be able to call Java classes from C++ using JNI.
Example:

UPDATE: I’ve just seen your post on the other thread. We’ll take a look at it.

Let me know if that works for you.

“and you don’t mind using a unstable API”

What I hear is

“Cocos2d-x v3 is ONLY for people who are not doing serious work.”

I really wish we could have a realistic discussion about this, based on people who want to make games, not update code for API changes.

The other point that really stands out to me…

* Stability (From a memory and “crash” point of view): it is as stable as v2.1… I would say that perhaps it is a bit more stable since we already fixed some bugs

Is there a way we can identify these fixes in GITHub? I would be (and I suspect a lot of your other users) willing to do the work to port those fixes back to 2.1.5 (and probably cherry pick stuff like NativeActivity where possible.)

I’d love to have that discussion!

Cory,

We are about to release cocos2d-x v3.0-alpha0 (the previous version was cocos2d-x v3.0-pre-alpha0). As the name implies, it is “alpha” technology. In a few months it will be stable, but in the meantime you should know that “alpha” means… well “alpha”, use it with caution, know the risks before using it.

Regarding cherry picking v3.0 changes to v2.1, unfortunately I do not have a pointer to the commits, but I guess you should be able to find them in github. The Native Activy patch was added about 1 months and half ago.

Ricardo,

I have been following the 3.0 threads with great interest — I’m very exciting to see the realization of a roadmap for the platform.

My point is simply that it is too early to put Cocos2d-x 2.1.5 on life support. A few months means this year’s holiday season, if everything goes great.

I agree that the Cocos2d-x developer community needs 3.0, however, to me it appears that we also needs a stable 2.1.x release until at least January of next year.

Thank you for your consideration.

-Cory

Thanks Cory,
v2.1.x is not unsupported. In fact we are planning a v2.1.6 or v2.2, but with only minor features. All the new major features will be part of v3.0.

@Ricardo, Thanks. I have already posted all that I found on NativeActivity in that thread, and will continue posting any updates there to keep all NativeActivity related discussions in one place.

Overall, it looks like everything that I checked for is possible with JNI (I haven’t implemented/tested those suggestions yet) but I couldn’t find any good solution for integrating AdMob (or other Ads SDKs).

Thanks Sachin.

I do notice that the download page http://www.cocos2d-x.org/download lists 2.1.5 as an “older version”, you have to click through the link to find it. If 2.1.5 is the latest stable release and 3.0 is only alpha, maybe 2.1.5 should be the main download link on the main page (with 3.0 alpha right below it, sure).

Marc Lepage wrote:

I do notice that the download page http://www.cocos2d-x.org/download lists 2.1.5 as an “older version”, you have to click through the link to find it. If 2.1.5 is the latest stable release and 3.0 is only alpha, maybe 2.1.5 should be the main download link on the main page (with 3.0 alpha right below it, sure).

I agree, posted a similar idea myself:
http://www.cocos2d-x.org/forums/6/topics/35528

Agreed. The download page should actually just be this page: http://www.cocos2d-x.org/download/version
With the addition of clearer labels as to the Current and Alpha/Beta/Whatever… versions. With the Current Stable version listed first on the list, Alpha’s below that, and older versions down lower. The current download page is a little confusing.

So is it smart to refactor and release a game with 3.0? I have been working on a game using 2.1.4 and am not planning to release for a few months. Ricardo said 3.0 is more stable than 2.1.4…When I try and upgrade to 3.0. I have a lot of trouble with selectors. For example in 2.1.4 I could do:

pMenuItem = cocos2d::CCMenuItemImage::create(BROCCOLI::plantMenuFileName.c_str(),
                                                             BROCCOLI::plantMenuFileName.c_str(), this,
                                                            (cocos2d::SEL_MenuHandler) &HUDForPlanting::plantBroccoli);

but in 3.0 I haven’t found an alternative that I can get to work for ‘(cocos2d::SEL_MenuHandler) &HUDForPlanting::plantBroccoli’

Jason Slack-Moehrle wrote:

So is it smart to refactor and release a game with 3.0? I have been working on a game using 2.1.4 and am not planning to release for a few months. Ricardo said 3.0 is more stable than 2.1.4…When I try and upgrade to 3.0. I have a lot of trouble with selectors. For example in 2.1.4 I could do:
>
[…]
>
but in 3.0 I haven’t found an alternative that I can get to work for ‘(cocos2d::SEL_MenuHandler) &HUDForPlanting::plantBroccoli’

You want my advice? Release on the latest stable release, report all bugs and post any stability issues you find (for all our sakes!)

Ricardo also said “your code will compile with thousands of warnings” and “In a few months it will be stable, but in the meantime you should know that”alpha" means… well “alpha”, use it with caution, know the risks before using it."

The risks, if you are not aware, are unforeseen bugs, extended fix cycles, on going optimization and potential breaking API changes. That will let Ricardo and the 3.0 team move quickly.

Progress on 2.1.x will be slower because we are all fighting to keep our stable games stable — that means only changes that improve performance and fix bugs (as Ricardo indicates above.)

My advice is:

  • Use what you are currently using if you are anywhere close to release.
  • Trying to upgrade mid-project is often a bad plan.
  • 2.1.x has been used for many successful games, just look at all those links!