We need a friendly ENGINE, not a dysfunction EDITOR

I noticed this thread in this afternoon when I reorder the categories in this forum. Sorry I missed it for a long time. The forum reminds me 135 replies with a estimated read time of 46 minutes, but I took 2 hours to read every word here.

  • Someone criticized about our effort on the new editor Cocos Creator,
  • Someone complained the EOL of Cocos Studio and ask why,
  • Someone criticized about the lack of documentations and tutorials,
  • Someone suggested the Cocos Store on Dec ’16,
  • Someone ask the C++ support of Cocos Creator.

Well, what I learned from maintaining cocos2d-x is that:

It’s impossible to please everyone.

Making decision is hard, unless we have a vision, or so called "first principle”.
But what’s our first principle? I have defined it many years ago:

MAKE THE GAME DEVELOPMENT EASIER

or in Chinese “让游戏开发更简单”.

“Make the game development easier”, the simple vision includes some parts:

  • Lower both the cost of money and time to develop a game which can be commercial succeed
  • Lower the barrier of a newbie to enter game industry. With a few weeks training/study, a freshman can manage how to develop a simple game by our engine.

This vision not only service our developers, but also service the business model of cocos game engine:

  • With more developers to manage and use cocos engine, the more MAU we have.
  • With more MAU of developers, and more commercial succeed games, we can sell our SaaS / SDK integration services better.
  • With more commercial succeed games, we can pick then up and do our publishing service better.

Above the top of this vision, another goal is also very very important: HELP OUR DEVELOPERS TO CATCH THE NEXT BIG WAVE OF GAME INDUSTRY.

So sums up, the goals of cocos engine are 3 points:

- Help our developers to catch the next big wave of game industry.
- Lower both the cost of money and time to developer a game which can be commercial succeed.
- Lower the barrier of a freshman to enter game industry by using our engine.

Which these principles, now I can answer the questions above.

Q: Why we invest a lot in Cocos Creator, instead of the framework cocos2d-x itself?
Can Cocos Creator let the game development easier and faster? Yes, I’m very sure of this. An user reported in the forum that Creator make the cost of time 2~3 times faster than coding with cocos2d-x to complete a commercial game. Yes, it’s in our principle #2.

Q: Why we close Cocos Studio, and develop the new editor Cocos Creator?
Cocos Studio used C# to write the eidtor, that means if you want to extend the editor to finish a game, your team need to manage:

  • C# to extend the editor
  • C++ to extend the cocos2d-x framework
  • Lua or JavaScript to write the game logic, especially in east Asia
  • and perhaps Python to extend the cocos command line tools.
    Your team need to manage at least 3 programmer languages.
    While in Cocos Creator, you can use JavaScript to write the game logic, to extend the Editor, to extend the framework, everything in JavaScript. So it follows our general vision: makes the game development easier, and also faster.

Q: Why we use JavaScript as the 1st language in Cocos Creator, but not C++?
Firstly, take a look at the Stackoverflow developer survey result 2017, what’s the most popular programming language?

The result told me, if I’m looking for more developers in cocos game engine, JavaScript is the best choice. but THIS IS NOT THE MOST IMPORTANT THING.

The MOST IMPORTANT THING is that, our principle #1: Help our developers to catch the next big wave of game industry.

  • Is cocos2d-iphone great? Well, it’s not bad, but the major reason of its popularity is its catching of iPhone games’ big wave.
  • Is cocos2d-x solid and high quality to compete with others? I don’t think so, as the founder of cocos2d-x. Just because it caught the wave of iPhone & Android cross platform games.
  • How about Unity? They caught the wave of mobile 3D games, and in-game incentive video ads. Now they’re trying to caught the wave of VR games. You’re on the wrong way, haha.
  • And Unreal? The engine is awesome, but they seems to miss the time window of mobile games. so Unreal has very low marketshare comparing to cocos and unity.
  • How about Construct 2, Corona SDK, Defold, blablabla …… To be honest, I don’t care.

I have this report every week.

Using VPN to download and analyze mobile games outside China is very time consuming. I only ask assistant to do this in some special dates.


(Note that Puzzle & Dragon’s Chinese edition is also using cocos2d-x, and Gungho is one of our investors.)

The market shares are good news. While the bad side is that, not matter how much effort I did in the development & marketing, the marketshare of cocos in China has been always 45%~50% around, from 2014 to 2017. Developers felt Unity is becoming more popular, the reason is not Unity defeat Cocos, but Unity ate the marketshare of proprietary engines.

So what’s the next big wave? VR? AR? Aha, Unity is on a wrong way, cheers.
The near future is HTML5.

In the March, I published a simple casual game “Smiley Cubes” onto Facebook Instant Games. After 10 days global publishing, my jaw dropped and hit the floor when I login to my Facebook developer account, look at this:

1.2M new users in the first 10 days! Weekly retention at 24% averagely!

Welcome to challenge me: who can made/publish a VR game to get 1.2M players in the 10 days this year?

Besides Facebook Instant Games, another giant in HTML5 game is Tencent WeChat.

WeChat tested its 1st HTML5 title in April 6th, which is also made with cocos2d-js. And all the new HTML5 games in Tencent are all using Cocos Creator.

We have occupied the possibility of HTML5 games on this planet’s top 2 platforms: Tencent WeChat and Facebook Instant Games.

This is why I made the decision to use JavaScript as the 1st class language of Cocos Creator, C++ and Lua comes secondly.

Just like 7 years ago, I used C++ to code the 1st line of cocos2d-x, to find a new opportunity for cocos2d-iphone. I’m very confident on the move from C++ to JavaScript, as well as I moved from Objective-C to C++. Have you seen the result of cocos2d-iphone guys insist on Objective-C, and try many times to compile Objective-C to Android? Oh no, I’m wrong, they have given up Objective-C and adopted Swift to rewrite the framework. I tried to compile Objective-C onto Android at 7 years ago, it didn’t;t work. And I also tried to compile C++ onto JavaScript year after year, it hasn’t worked well, it hasn’t been a “native" solution so far.

In technology, the love of a programming language worth nothing. If there’s a new blue ocean, we should enter it without a doubt of which programming language we should learn and use.

30 years ago I was good a LOGO and won a prize in coding competition in my childhood, 20 years ago I use VB script and ASP.net to earn money from creating websites, 10 years ago I’m an expert on WindowsCE and WM6.0. but where’s these technologies today? I dare to CHANGE THE MAJOR PROGRAMMING LANGUAGE and MOVE COCOS2D ENGINE INTO ITS 3RD GENERATION, to HELP OUR DEVELOPERS TO CATCH THE NEXT BIG WAVE.

  • 0 generation: cocos2d (python)
  • 1st generation: cocos2d-iphone
  • 2nd generation: cocos2d-x
  • 3rd generation: Cocos Creator, write once and cross both HTML5 and mobile native.

VR nor HTML5 are both gambling. The history will prove I’m right or not.

Q: We need a better Cocos Store!
Yes, a good suggestion! You wrote this on Dec ’16, and the new Cocos Store inside Cocos Creator was launched at its v1.4 in Mar ’17.

In Creator v1.5, it will support both Chinese and English user interface, and offer the category of “open source sample games”. The Cocos Store follows our principle #2 and #3, so it’s in our roadmap, and super important!

Q: We need better docs!
Yes! It’s in our principle #3. very important!

The engine team is updating all docs for Cocos Creator during these 2 weeks. I believe that we can have polished docs in this May, at Creator v1.5 release or even before it.

About the docs for cocos2d-x, I put press on the team, they could have strategy on it sooner or later.

But generally speaking, when the C++ & Lua support for Creator become mature, I will use this mature reader to close cocos2d-x v3.x, then open the new v4.x period, using cocos2d-x-lite and even plus the engine under creator as cocos2d-x v4.0, then merged creator / cocos2d-x docs into one.

Q: What the final tech stack of Cocos Creator?
By using HTML5 & JavaScript as its major programming langauge, Cocos Creator can run a cocos game without compilation, which follows our principle #2.

And the best benefit is that, it can run on Facebook Instant Games and WeChat HTML5 games “natively”, which is the real big wave, and follows our principle #1. At the same time, we can publish the Cocos Creator game onto “native” iOS & Android via JSB.

Considering old users, Cocos Creator can also export its data into an intermediate format, then parse into the traditional cocos2d-x C++ & Lua API. Today the intermediate format is JSON, and the future will be industry format glTF.

Q: What’s the 3D development in cocos2d-x v3?
3D modules are removed in cocos2d-x-lite. But we’re developing a new 3D framework. It could be ready for game development in later 2017. I need to test it in my games firstly, then publish the framework in 2018.

9 Likes

Finally some words of wisdom. Let me comment about them:

C#? Madness. Cocos Studio / Mono barely works on my mac. Glad you removed all the stack, except for C++, I like it, and you can find useful things, it’s the industry standard for gaming.
But of course it’s a mess for newcomers. Very very difficult, impossible for noobs. No doubt JS is much, much simpler. Take it with a good editor(creator), and a good server side manager(sdkbox), and you can have a game in a week.
I was to add firebase to the parenthesis, but… here’s the main china problem… no google. :open_mouth:
And this accounts for many of the strangeties and particularities of this market / product. Like it or not, you gotta take it, hence the mighty search for new channels. Android fragmentation there is crazy, and this pushes toward new solutions. I don’t know how many different “android” stores could be there in china, but I bet they’re in the order of hundreds… it is natural to evolve and overcome the limitation thru html, good 'ol browser… :wink:
But this is none of my concerns, anyway; for us westerners, chinese language barrier is simply impassable. The great firewall is nothing compared to it. :open_mouth:

VR? :fearful:VR anyone? someone, out there, want to try those fuzzy motion-sickness award games? Give back all your dinner after 5 minutes?
Never bought VR, man, :wink: just crazy-pumped venture-capitalists could think that possible. They wasted a lot o’ money, and now they have something who cannot last more than 15 minutes because of strain, on super-hefty prices equipment only mad-maxes can buy… crazy, crazy people.
Every day, for three years, “Hey! there’s a new game/company/experience I want to tell you because, hey, they pay me to write this and…” come on, SCRUM! :dizzy_face:

Unreal is fuc***ingly difficult, get back to start![quote=“walzer, post:140, topic:33651”]
How about Construct 2, Corona SDK, Defold, blablabla …… To be honest, I don’t care.
[/quote]

Me too! They’re dead! SCRUM AGAIN!:dizzy_face::dizzy_face::dizzy_face:[quote=“walzer, post:140, topic:33651”]
the marketshare of cocos in China has been always 45%~50% around, from 2014 to 2017
[/quote]

Well, it’s pretty high anyway, isnt’it?

AR… wouldn’t it be for Nintendo, no AR, and probably nope in the future (except for pokemon go II,III,IV, CCXXVII…:flushed:)

Exactly. Instant channels… as far as we know, this is the trend… i’d like to see some western data anyway… but i can’t find anything…

Ah, yes, swift-it! Go set up swift standard libraries under the android toolchain! Enjoy! A couple of months with a google engineer, and you’ll be out with your game!:smile::smile::smile:Ah, no, just an hello world…
Emscripten probably works… but it’s a PITA and a toolchain of it’s own, so limiting… and difficult, google engineer + js wizard… back to the start, 4 months to hello world…[quote=“walzer, post:140, topic:33651”]
But generally speaking, when the C++ & Lua support for Creator become mature, I will use this mature reader to close cocos2d-x v3.x, then open the new v4.x period, using cocos2d-x-lite and even plus the engine under creator as cocos2d-x v4.0, then merged creator / cocos2d-x docs into one.
[/quote]

So 3d will be eliminated completely from cocos? A shame. But anyway who needs it? And a full 3d editor is very complicated…

For developing 2d games?

And performance will be the same?

I just finished converting my game written in cocos2d-iphone v3. Converted line by line, no additions or removals, like something wasn’t converted to cocos2d-x, because it was missed in it or was something new and I used it to improve performance, lets say polygon sprite. No, all was converted as is, just changed language. And results was impressive. Exactly the same scene on iPhone 6 were loaded: 26-28% in cocos2d-iphone and 17-19% in cocos2d-x. I think thanks to C++. Batching works the same on cocos2d-iphone, if you think that it’s not and thats why it got so poor performance and I definitely using same setup(res, device, build type etc.).

I successfully build & run on iOS and android a simple puzzle game using apportable plugin for Xcode. It’s was a miracle, really. No any changes in a code. Just works.
So, I connected android device to my Mac and selected in Xcode android device as target and even got debugging of Objective-C code. Yes, no additional SDK’s were used(wasn’t allowed in free version of plugin), but it’s wasn’t problem…

By the way it’s currently available, lol https://store.spritebuilder.com/products/spritebuilder-android-plugin-starter anyway, rip…

Are you talking about this? https://github.com/s1ddok/Fiber2D

Why creator closed source?

wooh this was big topic :slight_smile:

I like your vision - but we still love C++ more then JS :slight_smile:

The biggest disadvantage of JS is debugging - it is some pandora box - newer know where it will fail.
Also cocos is in some strange stage there - JS is top priority - but it can’t do most simple/basic stuff by default - blurry labels on retina display. Opened cocos creator -> launched sample project -> everything blurry -> closed and never opened it again - it’s not production ready for me and doesn’t match mobile version quality. Wondering how much effort WeChat developers put to make their own branch of cocos for their games - I just don’t belive that they using cocos released branches.

Regarding Facebook messenger instant games I think it is bad example as it is closed beta so u were in list where u had huge advantage to get users - also I don’t see any monetisations methods there - so it just users for now, no money.

Hope to see soon more improvements over this

2 Likes

According to Stack Overflow Developer Survey Results, the most popular role is Web Developer. This is why JavaScript is the 1st language on this survey.

1 Like

@anon98020523, I said the popularity of JavaScript is not the most important. The Key is that, JavaScript can bring us to the new blue ocean.

@energyy, I have no flavor of programming languages, I only see which language is best tool to my target market.

  • Is Objective-C better than J2ME? Not the language itself. Objective-C can bring us to the market of iOS, while J2ME for Nokia.
  • Is C++ better then Objective-C? I don’t care. But C++ can cross iOS and Android easily, it fit my requirement.
  • Is JavaScript slower than C++? Yes, but it can easily cross HTML5 and mobile native (JSB).

Take a look at this data posted by the CEO of Kongregate’s tweet:

HTML5 has dominated other technologies on Kongregate games, especially compare to Flash and Unity.

On PC, there’re 2 big markets for games:

  • One is PC native game, like World of Warcraft, Overwatch.
  • Another is Web game, like Facebook Canvas and Kongregate.

I believe this situation will repeat again on mobile. Performance? It’s not the problem, it’s the chance. Today’s mobile CPU is going faster and faster, much close to PC CPU.

  • A10 CPU inside my iPhone 7: 64-bit, 4 cores, 2.33GHz
  • Intel CPU inside my MacBook Pro (Retina, Mid 2012): 2.3GHz Intel Core i7
  • Intel CPU inside my MacBook (Retina, 12-inch, Early 2016): 1.2GHz Intel Core m5

If JavaScript is totally OK on PC web games, in Facebook canvas, Kongregate, QQ platform, 4399 etc, there should be no technical problem on mobile devices too. We can’t use JavaScript to code a 3A level 3D game, but for most 2D social games, card games, gambling games, even RPG games, JavaScript is enough.

  • Turn back to 9 years ago, in 2008, is iPhone slower than PC? Yes. Is iPhone has more performance limitation than PC? Yes. But it’s a new market, a blue ocean.
  • Now back to 2012, is Android in China slower than iPhone? Yes. Is Android games hard to monetize comping to iPhone in China? Yes. But it’s a new blue ocean.
  • And today 2017, is HTML5 (Facebook Instant Games, WeChat HTML5 Games) slower than native C++ games? Yes. Is HTML5 games hard to monetize comparing to iOS and Android games? Yes. But it’s a new blue ocean, the history just repeat again. And I already show the power of fb instant games above.

Yes. so there’re already some web developers that started to use Cocos Creator to enter game industry. This follows our principle #3.

I send my good wishes to the Cocos2d team and will take this latest post a final nail in the coffin for quality c++ game development with Cocos2d going forward.

They’re going to try and continue support for C++, but the -lite version is specifically tailored to CocosCreator, which I’ve found to be fairly buggy in use. This is smart for business, but I don’t believe their choice of features will be useful to those who are or would use the current feature set of cocos2d-x.

I felt the need to write something, but I’ll leave it at this.

Anyway good luck, I’ll come here once a week for a while, and then wean myself off of visiting, to help where I’m able, but I’ll be joining Ricardo and Slackmoehrle on saying goodbye.

Godspeed.

7 Likes

@stevetranby wow! i don’t know what to say.
@walzer I think you missed the whole point of the topic. People love using cocos2d-x over unity because its c++,open source and “was” well maintained. By putting all your ppl for the support of creator you are following unity’s footsteps. And what makes you say unity will not have full html-5 support soon… If they have that, they will a far far better editor with html-5.

@stevetranby is right “They’re going to try and continue support for C++, but the -lite version is specifically tailored to CocosCreatore, which I’ve found to be fairly buggy in use. This is smart for business, but I don’t believe their choice of features will be useful to those who are or would use the current feature set of cocos2d-x.”
But you have to realise that market is very different for china and the rest of the world. When i open chinese cocos forum most posts are about cocos creator. But this is not the case in this forum.

being a loyal cocos2d-x developer for 5 years… this sounds very disappointing for me! But i hope the best for the cocos team and i hope they give more attention to cocos2d-x.

1 Like

Just look at the forum… most topics are about c++. That’s because little people are using js here. Also let’s compare js and c++ in terms of cocos game development:

c++:

  • better performance,
  • better documentation, more examples,
  • bigger community,
  • easier to debug, you don’t have to hit the wrong line in order to find an error,
  • a big plus for me: you have native projects, which you can open in Android Studio and Xcode (future proof for changes, especially from Apple). I used some other frameworks in the past and new iOS release always broken something. It is also possible in cocos2d-x, but at least you have xcode project so I shoudn’t be that hard to fix (and I can even fix it by myself, not waiting for some black-box-framework creator will fix it),
  • easy implementation of any native libraries and other stuff (google mobile tracking, some additional data in AndroidManifest etc.)

js:

  • can run on browser.

I don’t think js is easier - it’s the worst language I ever used (except Prolog and assembler :D). You’re writing code and you have to idea if it’d work until you run every piece of it.

Some time ago I had to create a port of very simple game in cocos2d-js (before creator existed). I created this game fairly quick (it was very simple game), but had tons of problems on different browsers (had to change some code in order to get it working) and also struggled with blurry stuff, especially on Android.

Yes, html/js is important, but for now c++ game have a lot more quality, performance and are very stable. But we have to keep making games and it’s being harder and harder with EOL’d Cocos Studio.

2 Likes

Fine, then you can use C++ and Lua support for Creator here.

will take this latest post a final nail in the coffin for quality c++ game development with Cocos2d going forward.

totally agree :pensive:

My personal opinion is:
moving into html5 just because its popular, its like saying “lets all create football soccer games only because its the most popular sport in the world” …

Im in pro of QUALITY and PERFORMANCE, low level control, other libraries inclusions, I mean… oportunities for move your game to ANY direction you want … for me… that is pricelss…lot more than just a casual fb game.

Every game that appasionated every one of you was made with quality, not a flappy bird game coincidence (if this is cocos2d goal).

I cant wait to see the new “wave” of websites, ooops, I mean, games.
Anyways… its not my company, im just a real GAME developer.

I love the new support from Creator to C++, its so sad to read that wont be for long

3 Likes

@walzer
I’m developing game in Xcode using C++ until it ready by 95% and then running it on android.
I want to bring a quality for iOS gamers and some for android. Todo so, I want to develop it in native environment and test, debug on a real devices(iOS) and achieve quality I want.

And so I’ll never make games not in it’s native environment as long as supported language in it. So, no please no javascript or other script…

But maybe it’s better you move that way to html and javascript, giving a chance for something new like fiber2d. With force of Apple pushing SWIFT, I think new engine for mobile 2d games should be developed in it.

@anon98020523, Big Fish Casino is using the tech stack of JavaScript + JSB to run on both iOS and Android natively. I just checked AppStore US, Big Fish Casino is on top grossing chart #19. Well, sometimes it can rank in top10.

It’s totally no problem of running a JavaScript Bindings on iOS Android natively. Big Fish Casino is a good sample. Perhaps you don’t know that in China, at least 60% of successful cocos2d-x games are using Lua script. Tencent started to port their 2D games onto HTML5 title by title.

I don’t mean HTML5 is the only thing, but to use JavaScript to cross both HTML5 and mobile native easily. After all, we have JSB technology for 4 years.

1 Like

Thats not an example, it’s simple game in terms of technical realization for most things.
Better to show games like Badland or Kingdom Rush developed in javascript. Anyone?

Again, I’m talking about developing, not just running. Not a question - how to developed games using javascript in Xcode?

And again, moving to javascript it’s moving engine back to China for those developers, ok for them. But again, it’s a chance for other engine… that market really needed at this time, with normal editor, performance, get started guide, tutorials and language…

2 Likes

@walzer like i said there is a big difference in what the Developers in China want and what rest of the world wants.

2 Likes

wait wat? [citation needed] :worried:

@walzer I must mention here that I support this overall shift towards javascript. Please add to your plans support for Cordova and Electron as an alternate to JSB. Then we can have ‘native’ javascript and use all the Cordova/Electron APIs/Plugins to keep more of our code cross platform in javascript, along with html/css support for building the UI.

Like most people here, I am a C++/Java/ObjC developer with a huge investment in existing apps and games built using C++ and Cocos2dx. Just the shift from Cocos2dx 2.x to 3.x was painful and took a lot of effort but overall it was worth it. We have been building using Cocos2dx C++ for 5+ years now, and are very happy with it.

But the world is changing, and javascript has established itself as the language of choice for full-stack development. For everything including client side apps and UI using Cordova, Electron or Ionic, Games using JSB or WebGL, server side code with Node.js, etc… The entire Visual Studio Code IDE is built in JS (using Electron) and same with Cocos Creator.

The advantage of not having to work with multiple languages is huge for individual developers. And it becomes even more important when there are multiple people in team. Companies can deliver much better and bigger projects with smaller team sizes. Instead of hiring 2 developers each for Cocos2dx C++, Android Java, iOS ObjC and Server C# etc… and then all of them switching between different projects for their ‘part’ of the project etc… Now a team of 2-3 JS developers can focus on only one project and do all of it. Much more productive and economical for businesses.

It will be a slow painful shift, almost a rewrite from scratch. But it needs to be done. We have moved many of our native java/objc projects to js/cordova/ionic etc and it takes time but worth it. We haven’t run into any app performance issues until now. We started working on this almost a year ago and it will take many more months for some of our projects. You can at least start the new projects in JS while you learn, and decide upon migrating existing projects later.

We are also reconsidering how and where we use cocos2d-js. There are many other js libraries like threejs which are better for some projects. But cocos2d-js is still the best option for many projects. And we are moving a lot of UI/HUD components like settings pages etc to plain html/css instead of building them with cocos2d UI components. That is 10x less code, looks better and less bugs.

And current Cocos2dx C++ is still well maintained with new features (android c++ debugging coming next) and updates so there is no rush or crisis. If you don’t want to move or want to wait some more time before the trend with js is more clear, you can continue to use Cocos2dx C++ for another year or more before deciding if you need to move or not.

Good Luck to all of us :slight_smile:

Farewell to our friends: Chukong U.S office is closing March 31, 2017.

1 Like

how big is the performance gap between cocos2d-x and cocos2d-js?