What should Cocos2d-x v4 be?

What are your thoughts on these item?

Only if porting from 3.x to 4.0 is seamless.

  • Could we focus JavaScript & TypeScript only, and abandon C++ & Lua API?

In my opinion Javascript and C++. Javascript is for simple games and C++ is for pros. Never abandon C++. Then we’re lost… There’s now way we’d port our games to Javascript.

Anyway, why so many devs use Javascript? It’s a crap language. It’s very hard to debug, keep the code clean and avoid any issues.

  • Should we promote the totally rewritten 3D framework in v4?

Well, maybe. I don’t think many devs use 3D though. For 3D you have better options like Unity, there’s no denying that. Cocos2d-x is great for 2D, much better than Unity in my eyes.

In my opinion, the best for cocos2d-x, is to focus on 2D. It’s a very good engine, but has some issues. Just see how many people asks how to configure android studio for cocos2d-x. This process should be easier. Take a look how many issues are on github. We still experience few annoying audio issues and have to find workarounds by ourselves.

As for language, it’s a personal preference. For me, I’d never use javascript for any game. I’ve tried few times and it’s just horrible. Sure, js as a language is simpler than c++, so I can understand some people preferring it over c++. But in the long run, c++ gives you better code. It’s easier to manage, expand, debug etc.

1 Like

Editor support for C++ would be the only thing i would look for.
Please don’t drop c++ support.

2 Likes

Agree! Unity also supports both c# and js in editor. We know you have less resources vs them but since a strong c++ engine already exists, its a shame to loose it.

1 Like

Would that not have to be a fully separate product? (unless it is a c++ plugin for cocos creator). What I am saying is that would not exactly be cocos2d-x V4 (unless I am wrong in all honesty that would be a fantastic feature and I second it)

I’m only interested in 2D; I’m also attracted to the use of Lua and its cross-platform nature. So of that list, only Metal makes sense because it keeps the engine relevant for iOS.

I must agree with all here. I personally only use the core of Cocos2d-x and not the creator, so I cannot speak about the creator. I needed a cross-platform wrapper in C++ for my games and this is exactly what Cocos2d-X gave me which is great. It would be horrible to lose C++ support.

4 Likes

Apple TV support with working X-code target and examples!
Any 3D shadow rendering helper functions.
HLSL + GL shader support.

Also some new examples with iPhone functionally integration would be great to have:
*Iphone Face ID integration example
*Iphone Toast notification example
*Nexus controller integration example

Please keep in mind ! C++ and 2D feature are the souls of the cocos2dx engine !
Please don’t drop c++ support ! :slightly_smiling_face:
Should we support web for c++ API ? ex. pro.web !
In my opinion , I think we need to focus on c++ API Because I want to build a web platform with cocos2dx c++ engine !

Support web with C++ is not easy.
Try emscripten.
If you need to support web then best is to use Js

I just care about Performance. whatever c++ or JS. but Now the native performace in creator is not good than cocos2d-x, maybe only 50% in cocos2d-x.

1 Like

Metal Support: :+1:
Solid 3D renderer, new 3D features and a new 3D editor: Wow! Sounds cool.

 "Should we merge cocos2d-x-lite to cocos2d-x v4, and publish with the Cocos Creator editor support?"

Hmm. I think part of cocos2d-x-lite draw is that it’s light weight. I don’t think Cocos Creator should be a part of it.

 "Could we focus JavaScript & TypeScript only, and abandon C++ & Lua API?"

Please do not abandon the C++ API. This is a core feature.

Maybe worth abandon the Lua API. Does anyone use that?

1 Like

+1,000,000 to these comments.
C++ and 2D are THE reasons I chose cocos2d-x.

4 Likes

Thanks everyone for the feedback. We appreciate as we don’t want to make mistakes with product offerings as we have in the past.

Please ask if you need anything.

2 Likes

Cocos2d-x is about performance, therefore, dropping draw calls. To help us do that we need:

  1. LabelTTF dynamic batching! My game has 17 localizations so it’s hard to create BMFonts and maintain. Some useful code is already here, please integrate: Create BMFont from TTF at runtime
  2. LayerColor dynamic batching. LayerColor is a very easy to use as a component to create UI interfaces, buttons backgrounds etc without the need of textures. However it doesn’t support dynamic batching, so i tend to use sprites with a square shape and change content size. It’s a shame to not have a batchable class that can be used to create a square.
  3. Display advanced statistic like how many calls are batched etc. Now we only get total draw calls and we need to manually count all our objects in a complex scene and turn on/off staff to understand what is batched and what is not.
  4. Ability to disable culling per object to save performance.

Some cool features:

  1. Drawing smooth lines: https://medium.com/@intmainreturn00/drawing-smooth-lines-with-cocos2dx-d057c41b8af2
  2. Easy way to add effects to sprites like glow, shadow, blur. When i say easy, i mean as easy as sprite->setBlurEffect (0.8f). I wanted to make an existing sprite completely dark to have it as a locked item and there was no easy way. It should be easy to do staff like that. I also wanted to make a button glow when i press it and again there was no easy way without using extra texture.
  3. This effects mentioned in point 2 should also be actionable like sprite->runAction(GlowAction::create(1.0f, 0.8f));
  4. We should be able with a single texture to create buttons that have effects when touched. For example maybe i want a button to fade out when it is touched down, or glow etc. Should be inspired by the legendary Action class like:
    button->setPressDownEffect( ButtonEffects::create( GlowEffect::create(0.8f)), ScaleIn::create(0.8f), nullptr));
    We should be able to use all Actions effects + new ones.
  5. LayerColor with ability to make rounded corners. This way we can draw many of our ui staff like buttons without the need of importing any textures! Should also be batched and anti-aliased. Should be as easy as layerColor->setRoundness(0.8f)! It would be even cooler if we could applied a repeated texture pattern on this, so we could make rounded popups from a squared texture.
  6. Ability to change color of letters even for system fonts. We needed this badly for a feature but only LabelTTF allowed the coloring of individual letters. It was a shame as many languages we have such as arabic and chinese, we dont have .ttf and use system fonts. We ended up breaking a big phrase to individual words so that each word could be colored separately and that costed as a lot of draw calls. In langauges with no spaces like japanese, we ended up making each letter a labelttf so we could color it. too many draw calls )))
  7. A collection view implementation for ui widgets.

Make Cocos Great Again! )))

3 Likes

1.Please keep c++. This is very important.
2.Implement anti-aliased drawnode shapes with stroke and gradient colors.
3.Remove setPositionX(), getPositionX(), getContentSize(), setContentSize(), etc, and add setX(), setY(), setWidth(), setHeight(), etc.

2 Likes

@slackmoehrle any kind of decision regarding this matter? ) or if not decision, maybe your thoughts after we gave our feedback )

This is still being talked about.

I am new to “cocos”, just know “cocos2d-x” through “Cocos Creator”. But didn´t use “cocos2d-x”. I have to say, i got somehow confused, because of these two, or many products (another one Cocos Studio ?). Anyways.

2D vs. 3D : i would prefer both 2D + 3D. And i have to say: in “Cocos Creator” it is seamless. Just like a dream. This is like in Unity. Very welcome. And most 2d engines are powered by a 3D acceleration :wink:
2D: i am satisfied so far, with the current possibilities. I think extended shaders for different tasks, would be great in the 2D-Area (Post effects, Sprites, etc).
3D: It must not compete with the big 3D-Engines. I could imagine that it should have solid 3D features. 3D is a big argument for making Games. Don´t underestimate this. Maybe basic features like in “threeJS”. Very lightweight ! Performance oriented ! Today it is totally easy to find a GameEngine for Desktop publishing. But for mobile publishing, it isn´t that easy. Especially if you are targeting HTML5 output. Even Unity can´t handle this.

C++ or JS or etc. It doesn´t really matter which language. Performance on “very low-end devices” are important. Otherwise you can use UE4 for mobile development :smiley: (the heavy-weight c++ engine). As i understood, in CC v2.1.1 it is solved this way, JS will be transferred to C++ and makes your Game a native App one. So in the end of the day: native performance is important. I would say that JS-language is more and more demanded, also in the western countries. C++ is mostly demanded for special tasks.

I think, the Cocos-Engine devs, will make the right decision for further development. If something went wrong, the community will tell it. And it sounds like that, that the Devs are listening to the community. Pretty nice :slight_smile: