This is purely my own point of view on the matter, and I will explain why I chose Cocos2d-x for the project I’ve been working on for the better part of 3 years.
Cocos2d-x was chosen specifically because of the C++ support, with the features being more of a secondary consideration. Other game engines with scripting just didn’t suit the requirements of the project, and here is why:
We needed something that could process certain algorithms as fast as possible
Implementing certain algorithms in scripting or interpreted languages would open them up to be easily decompiled by practically anyone, and given how widespread the theft of intellectual property is in mobile applications, using C++ and compiling to native code would at least eliminate the casual thief. Anyone wanting to reverse engineer the algorithms will have to go through a more lengthy process to disassemble and recreate them. Note that we are not under any illusion that it’s secure simply because it’s being compiled to native assembly; we’re just making the resources required steal our work more significant, and with any luck, more of a deterrent.
We wanted more control of memory management within the engine, in order to keep the memory footprint as small as possible. Cocos2d-x allowed us to do just that.
We needed support for multiple games within the same application, and with a custom framework built on top of Cocos2d-x to manage the loading and unloading of resources, we were able to achieve that.
So, while I have no opinion regarding the use of JS, LUA or other languages, as I’m sure they have their place, for me personally, I would have to abandon Cocos2d-x if C++ was removed from it. Also, and this is a long shot, if you would ever consider adding support for C#, since it’s an amazing language, I would actually make use of it for a considerable amount of game logic, hint hint…
Now, for specific 3D support, it would be great to have a solid implementation. We use Cocos2d-x for the C++ and 2D support, and we haven’t had any use of the 3D aspect of it just yet. We did experiment with certain 3D animations, but things didn’t turn out quite right, and I can’t quite recall precisely why (it had something to do with unsupported elements in the 3D object files). We would revisit this if the 3D implementation is improved.
One thing I that I wish Cocos2d-x would get right is audio support, but it’s not a big issue considering how many alternative 3rd party audio libraries exist. It isn’t consistent across platforms, and it needs better support for streaming audio from custom sources (such as memory etc.). The audio implementation should not be handling the file I/O.
On the topic of streaming and such, virtual file system support would be amazing. This would enable developers to keep resources within a package, like a ZIP archive, and these packages would be mounted as virtual folders. There would never be a need to extract the zip files, which makes handling resources and live updates much easier. I’ve successfully used PhysFS to implement this, with some minor changes to Cocos2d-x to force all file I/O to go through FileUtils. While it ran perfectly in Windows (for all resources, even streaming audio), it didn’t work well on Android. On Android, graphic resources worked, but audio did not, since the audio implementation does it’s own file I/O, and there was no obvious way to override it to force it to route the file handling through FileUtils.
I’m not entirely sure what Cocos2d-x-lite is, but looking through the github project info, one thing stood out is “Remove deprecated classes and functions”. This is something that should be done regardless of whether Cocos2d-x-lite is merged in or not. The more pointless and out of date code there is, the higher the maintenance costs (in time, money, resources etc.).
Anyhow, that’s all I have for now. Please do not drop C++ support, because it really is one of the main aspects of Cocos2d-x that makes it such an ideal choice for developers with similar needs to what I have mentioned above.