这篇文章是我在知乎上的一个回答:网页游戏是如何做到媲美客户端的网络游戏效果的?


我不认为现在的页游的3D 效果能 “媲美” 端游,充其量只算是 “接近” 罢了。

网页游戏运行在浏览器框架下。浏览器是操作系统中的一个应用程序。

实际上,网页游戏作为一个应用,必须运行在浏览器的一个插件(或者一个引擎)之中。

可能用于开发 3D 页游的几个技术是:

其中,Stage 3D 、 Unity 和 Silverlight 技术对于页游来说,都是运行在浏览器插件中的,这比浏览器又低了一个级别。

Sliverlight 已死。

Chrome 的 native client 是运行在 Chrome 的沙盒中的,可能比前面几个技术要好些。

WebGL 则是浏览器直接提供支持,优先级上应该和 Chrome native client 处于同一个级别。

操作系统对浏览器这个应用软件有一定的限制,对于浏览器中的插件,操作系统不会给与什么资源上的特权。所以,浏览器中的插件的性能,不可能超过原生本地程序。

大多数的插件是跨平台的。以我相对了解的 Stage 3D 来说,它在 Windows 上使用的是 DirectX API,在 MacOS 和 Linux 上使用的是 OpenGL API,在 Android 和 iOS 上则是使用 OpenGL ES。为了使用一套语言兼容多套标准,Adobe 做了 AGAL 语言,程序员可以针对 Stage3D 以及 AGAL 编程,不用直接面向多个平台上不同的底层3D API。一个通用的插件还需要支持较老的显卡。

但这样做的问题就在于,管线支持变少了,功能也变少了。

WebGL 貌似可以解决性能问题,但等 H5 稳定了再说吧。

至于自己编写的浏览器插件或者微端的性能,就取决于程序员的能力了。

和上面这些技术比起来,原生的客户端游戏不必考虑多平台兼容。优秀的游戏基本上都是单平台独占的,即使是多平台也经过了二次开发。这是因为这样更能全力发挥平台的性能,甚至可以直接为平台做硬件优化。很多游戏主机都是这么做的。对于通用平台来说(目前也只有Windows算是通用游戏平台吧),针对Windows平台开发,原生程序不会有什么限制,能使用最新的显卡驱动(必须的啊),最大限度地发挥显卡和其他硬件的性能,得到操作系统的最大的支持。因此,端游的效果无论如何都会比页游好太多了。

当然,随着时间的流逝,这个 “接近” 会越来越接近,最终会转换为 “媲美” 吧。

留言

2014-11-27
次访问