编者按:本文来自斧子科技。文章是王峰在知乎问题“用Android系统做出的游戏主机为何与XBOX、PS的游戏体验相去甚远?”下的答案,内容由他和斧子科技研发团队的交流和总结后整理而成。
随着我们斧子科技计划推出“战斧”电视游戏主机的消息逐渐被大家所关注,关于我们采用Android系统做游戏主机是否合适的讨论也越来越多。目前市场上基于Android系统做游戏主机的公司,基本上是将目前的Android移动游戏直接移植到电视平台上,而市面上鲜有优质的移动游戏,可以很好地支持专业电视游戏平台上的产品表现,所以这一大批Android游戏盒子基本没有获得市场成功,没有能力对市场上现有或者潜在专业主机游戏玩家产生拉动。
游戏主机产品的成败,除去必须要考虑的游戏机性能和硬件体验外,很大的程度上是靠优质游戏内容来带动的。斧子科技从创办之初就立志做专业电视游戏主机,所以我们直接在目前XBOX和PS平台级的合作厂商中寻找专业主机游戏内容,把它们移植到我们自己开发的基于Android系统的平台环境上来。但很多人对基于Android系统运行的游戏主机抱有很多质疑,针对这些问题,我将斧子科技硬件设计、系统软件以及游戏移植等研发团队在过去一年里摸索和实践中形成的看法,做一个简要地整理,分享出来,与诸位探讨。
其实,Android和PS4、Steam所采用同的OS一样,也是基于Linux内核开发的操作系统,能够很好地完成CPU调度、内存管理和其他硬件资源的管理等OS最基本的任务。衡量其作为专业游戏主机的OS是否靠谱,就要从对图形API的支持能力、应用执行效率以及系统环境的兼容性和稳定性三个方面考虑。具体观点,我们在下文细说。
一、首先来谈谈玩家最为关心、直接影响游戏画质的图形API问题
图形API代表了不考虑硬件限制的情况下,理论最高画面水平。例如我们用Microsoft DirectX 9的API,就算用现在性能最好的显卡,也不可能做出一个Microsoft DirectX 11的画面出来。
很多人对Android的图形API规格上还停留在OpenGL ES 2.0的时代,由于OpenGL ES 2.0 API的限制,使图形芯片的特性无法得到发挥。这个期间,主流的商业游戏引擎不得不放弃一些高级渲染技术。
2014年11月,Google发布的Android 5.0开始支持 OpenGL ES 3.1+AEP,2015年8月份SIGGRAPH 2015图形大会上,Khronos组织正式发布了新一代的OpenGL ES 3.2移动图形规范,支持渲染多个缓冲区,有了浮点、深度、顶点等纹理格式和新版本的GLSL着色语言,还增加了引擎开发人员期待已久的MSAA Render To Texture。
我们回顾一下,在2014年Google IO大会上,UE4引擎在搭载了NVIDIA Tegra K1芯片的Android设备上的表现,就有了以下四点明显进步:
1.得益于支持渲染到多个缓冲区,引擎采用了延迟渲染技术,能够支持更多的实时动态光照,同时有了MSAA Render To Texture,GBuffer的锯齿问题能够更有效地解决。
2. 有了浮点纹理的支持,HDR效果的实现更加方便。
3. 深度纹理的支持,让纹理阴影实现更快速,留出更多的空间提升阴影质量。
4. 人物角色材质精细,采用多层细节纹理、法线贴图和环境贴图让金属质感表现得更好。
商业引擎方面,现在常用的游戏引擎如Unity、Unreal等对Android也是非常的友好。如自带打包工具链、提供运行时性能消耗分析等功能。
另外,NVIDIA的Tegra K1和X1直接支持跨平台的图形程序接口OpenGL 4.4,对游戏开发商来说跨平台移植门槛和成本都会降低。
二、再来看受到不少玩家质疑的Android执行效率低、跑不了好游戏这个问题
执行效率指的是软件能不能百分百发挥出硬件应有的能力。如果效率低,硬件的性能只能用出一半,那么同样的画面,原来能有40FPS,可能现实就只能跑到20FPS。
手机上一般的App由于对性能要求不高,为了开发方便,更多使用Java,由于Java虚拟机的存在,性能是受到一定的影响。
但是,对于性能要求高的应用,特别是游戏,都不会大量使用Java虚拟机,而通过NDK直接调用原生C/C++的库、代码和图形API,所有的游戏引擎包括Unity、Unreal都是这样。这种类型的应用执行效率并不低,与游戏在PS、XBOX或者PC的系统下运行表现并无区别。
所以,只要硬件性能带的动,Android不会成为问题。
有人要问了,既然Android执行效率并不低,为什么现在大家看到的Android手游画面质量都普遍不高呢?
一方面是因为手游开发商需要尽可能多适配中低端手机,加大潜在受众的量。另一方面是手游要考虑手持设备耗电量和发热的问题,画面做的好但是只能玩几分钟然后设备就发烫没电,这是不能接受的。
而且,由于目前手游生命周期都比较短,绝大部分开发商出于商业上的考虑,不会花大量时间精力去把画面做到极致,不符合投入产出比。
所以不能用目前看到的手游图形质量去衡量一个专门为了TV Console所适配的特定硬件产品的图形表现能力。
这也是为什么我们“战斧”游戏主机暂时将精力集中于引进和移植专业主机游戏内容,而不会在这个阶段就引进原生移动游戏的技术原因之一。
三、在移动端,Android系统的稳定性和兼容性一直都饱受争议,那么在游戏主机平台是否也会出现类似问题呢?
操作系统的稳定性兼容性,影响游戏主机的运行流畅程度,是作为操作系统给用户带来的直观感受之一。
在移动端,Android系统表现出的不稳定和兼容性问题并不是Android系统软件设计的问题,而是受Android生态系统的碎片化和开放性影响,加上Android阵营的开源体系(开源给任何硬件开发商,授权开发商做任意改动)造成的Android系统在移动终端表现不稳定。
Google的 Android系统对所有硬件厂商开放,每年基于Android的硬件数不胜数,硬件设计都不一样,厂商还各种深度定制自己的ROM,而且系统不会强制升级,要做到软件兼容性好是非常难的。质量不能保证的软件装得多了系统稳定性也就不能保证了。
相反,做硬件出身的Apple,他们采用的生态系统更为封闭,每年2到3款硬件且系统环境相似度非常高,系统只升不降,所有软件只能从其独有的官方商城下载,所以稳定性更高。
游戏机行业跟手机不一样,生态是个闭环的,不管是微软、索尼还是任天堂,都只能在自己的硬件上玩在自己平台上发行的游戏。主机平台硬件型号比Apple更少,游戏主机系统软件版本目前也是强制升级,保证不会有硬件和系统的碎片化问题。主机平台游戏数量比iOS App Store里应用的数量都要少,能够保证每一款主机平台上的游戏都经过充分的测试和检查和优化。
所以,虽然“战斧”游戏机基于Android系统,但我们所建立的生态,更类似于苹果iOS、微软XBOX及索尼PlayStation那样的闭环生态,即每款游戏都需要经过游戏主机硬件软件大量优化和严格测试,系统行为也为游戏机深度定制优化。没有用户在主机上安装大量的各种安卓应用,就不会有Android系统在移动设备上所出现的兼容性和稳定性的问题。
最后,我们谈谈针对Android游戏主机的游戏优化问题
大家常常把已经面世的Android游戏主机(一系列的盒子,包括华为、中兴、OUYA 等)不尽人意的游戏体验问题,简单归结成Android系统的问题,实在是一个不小的认知误区。但实际上,游戏内容的移植和优化才是真正影响了Android游戏主机的游戏体验的关键所在。
斧子目前已经有一支专业的团队在着手游戏优化方面的工作,一方面靠我们自己的技术力量,一方面靠我们的内容合作伙伴。我们正在继续加大投入,这方面的人才,大部分都在一线的PC游戏公司的技术队伍里,要对熟悉系统底层和游戏引擎,非常难找。
熟悉游戏主机的都知道,主机硬件性能是比不上同期顶配的PC的,但是由于游戏的优化很到位,所以整体表现能力上并不逊色。游戏移植过程中的优化工作,都包括哪些呢?
下面举些关于游戏优化工作的例子。
在资源利用方面,有些游戏不能把多核CPU尽量都用起来,负载都集中在1、2个进程里,部分CPU忙不过来,达不到理想的游戏体验,部分CPU空载,造成资源浪费。对游戏进行优化后,系统可以更加合理地分配资源,调动出最佳的CPU性能,从而改善游戏体验。
在优化绘制方面,如果多使用纹理图集,并尽量将相同类型物体集中一次性绘制,可以显著降低对底层图形程序接口的调用,进而提高游戏效率。
而将文本格式转化为二进制、用最佳贴图压缩格式、压缩网格体和动画数据等则可以减少游戏加载时间。
当然,游戏优化的难度不低,不仅依赖游戏优化团队对系统底层和硬件的充分了解,还需要耗费大量的时间和人力。尤其是国际上3A级别的大作,或者是使用自研的、对Android没有良好支持的引擎所开发的游戏作品更加如此。再加上传统主机游戏开发商和开发团队一般不熟悉Android,所以成功引进和移植一款3A大作到Android游戏主机是非常困难的,需要得到游戏大厂认可和双方大量的资源投入,针对Android游戏主机的硬件配置对游戏进行优化。我们曾披露的同日本光荣特库摩公司(KT)之间的战略合作,就属于这个范畴。
这是我们目前面临的最大挑战之一。