v3.0之后暂停对emscripten的支持,因为这个技术还不是太成熟。最大问题在于,编译出来的js代码不可阅读、不可调试。
我的方案是,cocos引擎分出两条runtime。Native Runtime运行于iOS, Android, WP;Web Runtime(也就是cocos2d-html5)运行于web。如果你用JavaScript来编写游戏,那么就可以一次编写之后发布到native和web两个runtime上。这个方案上,可阅读、可调试。
我理解emscripten最大的价值在于,把市面上存有的大量C++开源库,编译到JavaScript生态圈里面用,这样大家就不用重复造轮子了。
这个世界上绝大多数游戏引擎内核都是用C++开发的没错,但世界上绝大多数游戏逻辑都是用脚本开发的。C++不是游戏开发的未来,脚本才是(我一直不太理解Unreal为什么抛弃脚本回到纯C++)。用C++去开发跨平台的游戏,堆几十个昂贵的C++程序员去码几十万行甚至上百万行的游戏逻辑,这种事情只有超土豪超任性公司才能干得出来。所以C++编译到JavaScript不是正道,反过来,JavaScript编写后以Native速度运行才是趋势。