整合优化 Intel软件技术负责人谈如何支持Cocos引擎

文/ Edie 2014-10-30 16:40:26

在近日召开的Cocos 2014 开发者大会(秋季)上,负责Web引擎的研发,以及H5标准推广和增强的Intel软件技术经理余枝强先生就开发者们比较关心的问题,在大会现场接受了媒体的访问。

P1.jpg

问:能介绍一下这个引擎本身和Cocos之间的一些合作点在哪?

余枝强:先从游戏领域说起,游戏的运行逻辑上分几个层次,最上面是游戏的程序本身,下面是游戏引擎,如果是Web程序的话,底下还有一层,称之为Web引擎,支撑的是HTML5相关规范的支持,还有运行的支持, Crosswalk 属于Web引擎这一层。从上到下,开发者用HTML5开发游戏在最上面,然后是游戏引擎的API,包括通用的游戏逻辑封装,音频、视频、图形等再往下就是Web引擎,去支持H5里面各种各样的标签(比如DOM/CSS/WebGL/等)以及Javascript代码这些需要Web引擎的支持。最后再往下就是操作系统中相应的Driver,以及硬件的芯片(CPU/GPU/等)、各种整合在一起。

Cocos引擎有几个系列,比如Cocos2d-x (c++) , Cocos2d-x JS Binding, Cocos2d-html5等. 我们和Cocos2d-html5有较强的互补关系。基于HTML5把游戏封装好,游戏需要用到比较前沿完整的HTML5功能的时候,就需要Web引擎来支撑。目前的现状是,现有的Web引擎(现有的浏览器以及Webview组件),在H5的功能和性能上都有各自的不足,我们的Web引擎-Crosswalk就是为了解决这个问题,提供较为完整的H5支持以及较好的性能,同时不断的优化和增强,涉及跟Cocos合作方面,我们还会针对游戏,尤其是利用Cocos2d-Html5 API的这种场景专门做针对性的优化。游戏还是有些特性的,针对这些特性,我们会在引擎方面做优化。

当用户玩一个游戏时,其实整个流程是需要软硬件配合,现在硬件在日新月异不断往前发展,进展很快。比如单指令多数据并行指令(SIMD),硬件多核等,如何把这些能力给Web开发者使用,这也是Web引擎要解决的领域。我们在这方面做了一些拓展,希望通过和Cocos的合作,让HTML5游戏开发者不但可以用到很丰富的H5功能,同时也可以充分的利用到硬件的特性,以及针对性的优化。现在市面上很多HTML5游戏引擎都只用到HTML5的一个子集,我们希望看到一个全集,去开发更加精美强大的HTML5 游戏。我们希望可以解决这些问题。

问:您的意思是否如果我是一个开发者,想开发一个H5的游戏,就必须要用到这个引擎?

余枝强:HTML5本身包括很多功能,很多API(DOM/CSS/WebAudio/WebGL/WebRTC/GamePad/等等)。目前市面上的H5游戏引擎,(包括Cocos2D-js),只包含了H5一个子集(主要是图形方面)。如果一个游戏只用到很小部分的API,不涉及到DOM/CSS/其他H5 API等,就可以不需要Web引擎,直接调到下面(一般是通过一个简化的Javascript引擎再加上一些Javascript Binding的API)。如果想用到丰富的HTML5功能,一个完整的Web引擎就绕不过,必须用Web引擎。

举个例子,如果我们把一个完整的游戏比作汽车,汽车有跑车、一般汽车,决定汽车跑得多快、多好,引擎是决定因素。在H5领域,Web引擎相当于汽车里面的引擎。

问:Cocos相当于什么?

余枝强:Cocos2d-JS模块可以认为是一个子集,某种程度上也可以说是这个HTML5子集的引擎。如果要用到HTML5的全集功能,就必须要一个Web引擎来支撑。如果只是选一个子集,那是另外一条路线,H5很多功能相当于丢掉了。所以我们跟客户合作时说,现在很多H5游戏蛮多是在子集上,大家针对子集就跑起来了,但是H5有很多丰富的标准的API,还有很多好用的HTML5软件库,这些想完整跑得非常好的话,就需要类似Crosswalk 这种Web引擎来支撑。

问:我和一些开发者聊过很多人都跟我说H5的性能完全无法和NativeApp(原生应用)相提并论的,所以他们可能并不是很看好这一块。

余枝强:这是一个很好的问题,也是我们想尽力解决的问题。H5直观上来说跟原生应用相比多了一个中间层,性能打了个折扣,同时从API方面来看也是相对有所不足,但是Web引擎以及相应HTML5框架演进和发展非常快,这块差距在不断缩小。性能方面相对需要更多的努力。举个例子,在游戏方面尤其是复杂的游戏,有些非常经典的例子,比如说1000个精灵同时在屏幕上以各种形式运动,还有粒子系统,实现各种效果,比如烟雾弹出来的动画效果这些情况下,目前的Web引擎很难达到原生应用类似的体验。比如说Chrome内核,它在H5引擎里面是比较领先的 ,但是对上述两个例子的处理速度还不到原生应用的一半。Cocos里面提供了相应的测试用例。我们针对游戏这种情况做了优化,和Cocos引擎里面相关的代码做了一些深度整合,包括在我们引擎做针对性优化之后,初步的实验结果是:对1000个精灵的例子,性能可以提高50%,当然比原生程序(C++)慢20%-30%,但已经比较接近了;对粒子系统那个例子(烟雾效果),基本可以达到和原生程序一样的性能。我们还有更多的优化在进行中。游戏这种特殊产品,结合游戏引擎和Web引擎,我们做一些全栈式优化,这里还有很多机会可以做。性能差异目前是存在的,但不代表这个东西不可以逾越。而且根据目前的试验结果,我们有信心通过针对性地优化,让Web引擎的性能进一步提升,有能力去支撑重度游戏。。

另一方面也是Intel的优势,Intel包括芯片、系统性能优化,并行处理都有比较强的技术积累。,现在手机CPU 一发布经常都是4核、8核,GPU 更是多核,CPU还有类似SIMD(单指令多数据)的并行处理能力。这些能力目前在H5游戏领域基本都没有用到,我们正在在Web引擎里加一些支持,可以把4核、8核或几十个核以及SIMD这些能力衔接在一起发挥出来,让性能得到进一步的飞跃。,这也是我们另外一个优势。Web现在赶超非常明显。

我们前段时间做了一件事情,腾讯有个Web前端团队 (AlloyTeam)做了个开源图形处理库,这是基于H5开发的,可以方便的利用HTML5实现一些图形处理,比如粗糙效果/木雕效果等这些效果的处理,在台式机上性能还可以,而在在移动端需要4、5秒,有些复杂情况的处理(比如木雕效果)甚至需要40、50秒,这样的性能根本没办法在移动端使用。。我们用了并行技术优化后,在Crosswalk上可以达到2倍-20倍性能提升。原本木雕效果是40秒以上才能完成,优化后只需2秒左右。而且这样的优化是在引擎以及Javascript库这层实现的,对开发者比较透明,上层的HTML5程序无需修改就可以体验到性能提升。对开发者很简单。

我们可以看到,目前情况下一些看来用HTML5不可能实现的事情,通过这些些优化之后,突然变得可能了。我相信这块会有很多机遇在打开。如果大家听了上午的演讲,可以感觉到基于Web的开发正在慢慢崛起。通过软硬件结合,通过在Web引擎领域不断的创新和推动,我相信HTML5能做很多事情,到时候希望有更多的实例展示给大家。我们也希望跟游戏引擎、游戏开发者一起有更多的合作。

Web语言很灵活,导致高效的程序不容易写,需要更多优化,如果看到一个游戏性能很差,问题可能会发生在很多层次,可能是Javascript写的不好,没有对Web引擎很好了解的话很容易中招,也有可能是游戏引擎不够高效,也有可能是Web引擎的性能问题。通过不同层面的优化,会慢慢得到很大的改观,而且会做越来越多的事情。希望和大家一起努力推动HTML5前行。

Alex Matveev
2022-06-06 16:27:13
不合规
审核中
@苏某某: 她在音乐方面的喜好,以及对天文的兴趣,也源于这部动画的影响。一直很喜欢爵士乐的她突然开始想
乐方面的喜好,以及对天文的兴趣,也源于这部动画的影响。一直很喜欢爵士乐的她突然开始想,没有系统了解过此类音乐的她怎么会喜欢上 呢?后来听完《美少女战士》原声带后才发现,“原来我在那么小的时候
评论全部加载完了~