余枝强:Cocos2015秋季峰会——HTML5游戏 VS 原生游戏(挑战与机遇)
(来自【Gad】带来的Cocos峰会现场内容)
H5游戏在手机的移动领域有什么大致的区别以及一些挑战在哪里。
我们过一下H5本身的进化,同时H5本身的挑战以及特点,以及现有的解决方案以及相应的案例说到H5你可以发现本身的进化速度非常的快,包括各个层面。从规范上来讲,从游戏的角度来说2D和3D支持的能力以及音频的处理和视频的通信,还有各种访问的能力,访问能力还没有完成,但是不断的在发展。这是本身H5有的能力。同时还有软件库的配合,比如Cocos2d,还有一些比较高级的助力引擎,比如Box2D的支持。同时还有很多的插件的机制,比如说在H5标准之外的插件,可以有数百个Cordova插件。这极大的促进了H5本身的发展。
Cocos Studio的演进。不断的提升性能,比如硬件加速的图形和视频等等都是让H5往更健康的方向发展。这里举一一个非常简单的例子,这个是描述一下纯H5的游戏大致能做一些什么事。这是一个3D类似赛车的游戏,是赛飞机,可以支持引擎的深入的实时处理的碰撞,还有一些传感器,同时可以多屏显示。这样纯H5就可以做这样类型的,而且是最简单的情况。然后我们在简单剖析一下这个的内部结构大致是什么样的。基本上来说的话,一个是游戏本身是H5写的,在中间的阶段有一些游戏引擎。既然是H5的话,有主要的引擎就是Web引擎,Web引擎在移动上是很多样化,有各种存在的形式,一般来说是第三方浏览器,或者说是寄生于游戏的超级APP里面,比如游戏中心。我们再聚焦一下游戏引擎本身的话,有几个主要的模块,本包括人工智能、图形、特效、动画等等。如果这些涉及到H5的话,蛮重要的一部分,就是虚线的部分。正是因为这里面有很大的程度是Web,我们发现也存在一些不足,最大的问题是H5能力不一致,平台API访问能力有限,界限整合交互不容易做好。
基本上来说,H5在不断的发展,游戏也在不断的提升,但还是有很多的差距。本身的主要解决方式是有哪些?有两种:第一种在H5 JS层面提供优化好的库,而且把浏览器的视频做掉了,这是一个比较好的例子。这种方式比较好的解决了一致性的问题和性能的问题,但是还不够完整,因为性能还没有办法做的更深入。第二种是绕开Web,渲染引擎,直接做JS绑定到系统底层库,这个最大的好处就是交互型的游戏可以达到很好的体验,这样的话,对游戏的质量的提升好。这里面其实有一定的不足之处,我们知道H5其实有很多的API以及有很多的数据都是基于CSS,通过这种方式,如果直接绑定引擎,就导致内置API不行。我们的基本思路是这样,我希望在这两种方案之间能不能寻求第三种方案,希望能解决性能的问题,同时能够比较完整的支持H5的规范。
因特尔开发的Crosswolk-Web引擎我们是希望有更多的标准,我们是基于Chromium内核,API扩展以及cordova插件的支持。我刚才说到Crosswolk完整的H5支持,如果想到原生的效果的话,纯Crosswolk的方案还是有一定的差距。现在我们常用的方案可以有非常好的性能提供,我们就想怎么把这个方案怎么和Crosswolk和H5结合,这是我们优先考虑的问题。我们基本思路是这样子,就是说我们把那些游戏引擎里非常耗时的操作,需要耗费大量时间的操作也做了一个封装,如果只做API封装的话,会导致H5的很多功能得不到支持。封装之后,我们做到了一个桥,这个“桥”接到了API里面去,这样最大的效果是我对那些非常耗时的操作基本可以接近原生的速度。同时因为整个渲染会桥接到H5的引擎当中,这样API都可能得到很好的支持。
这里是一个例子,我们验证我们的想法,我们和触控做了比较深入的合作,就是拿性能密集型的游戏来做。如果用这种方案的话,3D游戏也可以大家类似原生的效果。其实做一个完整的H5开发,做一个平台是必不可少的。因特尔XDK H5对引擎方面也做了很多的工作,可以做一些游戏资源的处理,同时打包还有模拟以及性能的调试,包括性能的检测都可以做到。我们简单看一个视频,就可以知道整个的流程。
小结:H5标准以及实现的演进以及游戏典型的问题以及解决方案。还有第三种模式,就是我们希望拥有完整的H5游戏的性能,这方面我们也跟客户做了一些尝试,同时我们也提供了XDK一站式的解决方案。我们也希望和更多游戏厂商等一起合作,在H5可以做一些不断的优化。我们也希望去接近靠近原生的游戏。除此之外,我们也希望发挥H5的游戏,怎么通过游戏和游戏引擎的配合,把这方面做的更好!