正在阅读:全硬件加速的HTML5游戏引擎是这样炼成的全硬件加速的HTML5游戏引擎是这样炼成的

2013-09-26 18:23 出处:PConline原创 作者:佚名 责任编辑:wuweilong

  由于HTML5具备跨平台、易移植、部署简单、节省成本等优点,所以从2012年甚至更早的时候,HTML5游戏就被炒得火热起来。但事与愿违,这一年多来,由于HTML5的性能瓶颈,导致成功的HTML5游戏少之又少,市场情绪低迷。正是在这样的背景下,2013年2月在西班牙巴塞罗那世界移动通信大会上正式发布的全球首款基于硬件渲染的HTML5游戏处理引擎——Sphinx,于近日开放公测和上线开发者社区,正式吹响了全硬件加速HTML5游戏引擎的进攻号角。

  《程序员》:大家都看到HTML5的好处了,那么在HTML5游戏遇阻之后,大家又是怎样的反应?

  罗志宇:有三种情况。第一种最普遍,就是观望,等待整个产业进步以后,再继续跟进。第二种是基于现状的妥协,比如不做重度网游,只做休闲游戏;不做Android版,只做iOS版。因为从性能上来说,苹果是所有厂商里图形做得最好的,可以反过来抵消一些浏览器游戏展现能力的缺陷。第三种是不妥协,积极寻求可行的解决办法。这种团队认为自己已在HTML5游戏上花费了大量心血,而且也小有成绩,他们不想在用户体验上打折扣,所以就想寻求突破。在这点上,他们与欧朋做Sphinx的初衷非常切合。

  《程序员》:所以想到了要做Sphinx?

  罗志宇:可以这么说。我们当时的出发点非常简单。作为浏览器平台厂商,天生就要做HTML5,而如果游戏厂商想用HTML5,却失望而归的话,平台就很容易衰败。所以我们想解决HTML5游戏存在的问题。

  分析之后,我们发现导致HTML5性能瓶颈的主要原因是在HTML5和底层硬件之间隔了一个浏览器,而浏览器的首要任务是展现网页,而非游戏。

  由于我之前是做渲染技术出身的,所以很了解游戏一般会卡在两个地方:一个是CPU效能,另一个是GPU效能。CPU效能更多的是通过JavaScript发挥出来,而想真正大幅提高游戏性能的话,必须要充分利用GPU效能。

  其实,早在2007年我还在Opera总部时,就对Sphinx引擎相关的渲染技术进行了验证。第一版用在Opera移动浏览器上面,Sphinx是第二版。由于渲染技术对浏览器性能提升明显,所以当时从Opera Mobile 9直接跳过Opera Mobile 10,发布了Opera Mobile 11。同期的浏览器在卷动页面时都会有马赛克一样的方格,然后才慢慢填清晰起来,而使用渲染技术的Opera Mobile 11没有马赛克,这可以说是第一次尝试硬件加速。所以,Sphinx的开发不是一蹴而就的,经历了长期的技术沉淀。

  《程序员》:Sphinx的架构是怎样的?为何称为全硬件加速引擎?

  罗志宇:开始时,我们认为JavaScript引擎会有很多问题,但后来发现似乎并没有那么多,更多的原因在于开发者自己没有做好优化。只要做好优化,帧率完全可以从10帧提升到35帧。但要想从35帧提升到70帧,就要靠提升渲染引擎来实现。

  以前网页渲染引擎是偏文字渲染精确度的,经常会出现网格对齐这类问题。而游戏更多的是追求速度。因此,这两种渲染引擎的架构完全不同。在Sphinx中,整个浏览器分成前端和后端,前端主要执行页面、JavaScript、CSS,后端是正儿八经的图形渲染引擎。所以,Sphinx的结构很简单,就是一个标准的HTML5前端加上一个强大的游戏级别的图形引渲染擎。

  说起来简单,做起来并不那么容易。因为之前的图形引擎并非是为了游戏而设计,而我们要做的Sphinx较之复杂得多,需要非常精确的调整。实际上,硬件加速GPU的演进只和游戏有关系,整个GPU在最开始发明时就是为了游戏,游戏和GPU之间是一种互相促进和演进的过程。所以游戏引擎用GPU用得最狠、最恰当。整个工艺里,游戏引擎和图形引擎是最好的。浏览器很晚才开使用GPU,所以无法做出游戏引擎的效果。我们所做的就是将游戏引擎所有的设计模式和工作方法都拿过来放到浏览器里面,做出真正意义上的全硬件加速游戏引擎Sphinx。

  《程序员》:Sphinx研发团队是怎样组建起来的?

  罗志宇:这个团队规模蛮小,只有9个人,他们之前专门给联发科定制浏览器。因为内核非常复杂,所以人数越多,沟通成本越高,迭代速度就会降低。我们一般会把整个系统框架和原型梳理出来之后,再根据工作量的情况考虑人员调整。如果一开始就黑压压扑上来一片的话,每个人都不清楚自己要做什么,连开会都变得像打酱油一样。

  欧朋的工程师是一个奇怪的群体,我们对他们本身没有什么特殊要求,但都一专多能。我们不会给每个人贴上固定标签,因为一旦贴上就会对他的职业发展或知识发挥有很大限制。在同一客户端里,所有工作都是交织的。

  《程序员》:Sphinx研发过程中遇到了哪些困难?

  罗志宇:研发Sphinx是一项大工程,为了确保每个环节正确性,我们从技术和人员上做了很多。

  在技术层面,为了确定插入游戏渲染引擎中的东西是否破坏了浏览器的整体性能,我们内部做了很多回归测试,整个Opera有14万的测试用例,每一次改动都是全部重跑一遍。

  在人的层面,我们经历的挑战更大。由于是全新的团队,他们对做这样一个高性能的游戏引擎并不自信,但又很容易满足于一点小小的成绩。为了解决这个问题,我会给他们树立一个理性的高目标,然后推动他们去挑战自己。这个过程经历了两个大困难。第一,项目刚开始时,渲染游戏帧数多在10帧以下,当时大家很沮丧,随便挑一个游戏,涨个5~6帧就开心不已。后来我说,不应该去追求这种表面的东西,应该从结构上分析问题到底出在什么地方,保证整个结构在逻辑和数学上是合理的。这个周期让他们把方向摆正,向前走。第二,Sphinx Beta版正式发布,大家松了口气,觉得前途一片光明。然后,2013年4月,《三国时代OL》制作人张哲带着新游戏《不江湖》来了。跑了一下,只有10帧!所有人都郁闷了,一系列问题浮出水面——GC、渲染合并算法都出现了问题。考虑到之前确实短视一点,我告诉他们,这阶段能做什么,而且会很长一段时间都在这种架构里进行探讨,怎么来解决这些问题。经过努力,我们终于将《不江湖》提升到了70帧,即使在普通浏览器上也能达到30帧以上。

  总体来说,研发Sphinx是一个自然而然的过程,因为工程师喜欢这种更先进的东西,喜欢享受成就感。

关注我们

最新资讯离线随时看 聊天吐槽赢奖品