手机游戏,微软的终极街亭?
一般说来,“大事大非”上,微软(Microsoft)都是个杰出的追赶者而不是首发者。在微软看来,首不首发不重要。重要的是追赶的过程。微软可以是龟不是兔。但它却能一天 24 小时,一年 365 天不停地走。再快的兔子,一年总要歇个百八十天吧。那不就成了。
作为追赶者,微软既有成功,也有失败。最成功的两个战役就是浏览器之战和编译器之战,两战战况之激烈,如今还可以感受到,因为浏览器的首发者 Netscape 就此消失得无影无踪,而 Borland 这个曾经响当当的名字如今已经很少被提起。游戏主机之战,通过微软长时间的坚持,如今无论是在气势上还是 Market Share 上都要优于老对手 Sony 的 Play Station 。关于失败的战役,较为明显的是 Zune 与 iPod 之战,其次是 Bing 与 Google 之战。当然,对于后者,目前而言,至少还不算大败。
诸葛亮的失街亭之战,对于后来的魏蜀之争产生了重大影响。不但使蜀国损失了智谋之士,更重要的是,魏国在原本防守空虚的西线部署了更多的兵力,使蜀汉从此失去了奇袭魏地的机会,此后诸葛亮伐魏再也没有建树。类似于诸葛亮的街亭之战,微软应该是有好几次。幸好不似蜀国偏安一隅,财大气粗的微软,并没有到伤筋动骨的地步。都说吃一堑,长一智。微软似乎并不在意这些,它始终相信它那后发先至的凌波微步。这不,一个不小心,在移动操作系统平台上,它又重新开始了它的新的追踪。
Windows Phone 最近很热。到处都在讨论它,很多文章在议论它。那么本文就稍微偏离一下热点,我们来讨论一下手机游戏这个移动平台上也算比较热的话题。当然,为了显得更深刻,让我们再深入一下,进入到游戏的背后,看看它们的图形 API 的故事。
在讨论移动游戏的图形 API 之前,先让我们来回顾一下位于 PC 这个领域上 PC 游戏产业上曾发生过的一场图形 API 之战。即微软的 DirectX 与 SGI (Silicon Graphics)的 OpenGL 之间图形 API 标准之战。这场战争始于上世纪九十年代末,彼时使用 OpenGL 开发的 id Software 的 Quake Engine 达到了极为惊人的绘图效果,因此使得所有绘图显示卡的制造商,都必须提供完整的驱动程式支援 OpenGL 标准,才能够符合游戏开发者与游戏玩家对于显示卡硬体的期望。 所以OpenGL 在 John Carmack (id Software 创始人之一) 的支持下风头甚劲。微软的图形 API 始自于 Windows 95 的开发。1995年,DirectX 1.0 release 。从那开始,微软用它无以复加的韧劲开始了 DirectX 从弱小到称霸的历程。回首往事,历史上有太多相似的地方。DirectX 和 OpenGL 争斗的历史,和编译器,浏览器甚至操作系统本身争斗的历史在路径上是一致的。某种程度上来说,微软这个公司确实值得尊敬。
限于篇幅,关于 DirectX vs OpenGL 之战更细节的地方,有兴趣的读者可以去这里 OpenGL 3 & DirectX 11: The War Is Over 一探究竟。
让我们从历史的忧郁中回过头来看当下。如果说在 PC 领域上微软是无可争议的霸主,那么在如今炽热的移动平台之争上,微软就是江河日下了。我们先来看看一个关于美国智能手机系统的数据分布图。
可以看到微软手机系统的市场占有率是逐年下降,到目前为止甚至已经低于 5% 了。在桌面领域,微软无疑是霸主,但在移动领域,现在则是个小菜鸟了。历史上,在桌面领域的任何一场跟微软相关的战争,微软都可以挟操作系统已令诸侯。给对手以致命打击,获得最终的胜利。2012年,在移动战场,角色却悄然对换了。
实事求是地说,微软在 DirectX vs OpenGL 的战役过程中倒没怎么利用在操作系统上的优势。微软赢也是赢在了类似于当年吵得很凶的软件开发模式 – 大教堂和集市究竟那种研发模式更好上。DirectX 是微软的图形程序开发接口,微软可以控制一切。OpenGL 则是一个开放的图形 API 。所谓大教堂的优势就在于微软可以根据自身对图形编程发展的预判来调整 DirectX 的研发,而 OpenGL 是一个开放的图形编程标准,其规格标准的发展,往往会受到各软硬件厂商之间的利益冲突因素牵连而迟迟无法达成共识。而微软这方,却仅仅需要与 ATI 以及 Nvidia 两间公司合作制订 DirectX 的 API 规格,并且拥有最终的关键裁量权,因此能够相当顺利且迅速地持续发展。与其 Windows 及 Visual Studio 一样,微软的东西开始可以不怎么样,随着时间的流逝,却会越做越好。DirectX 就是在版本 8 和版本 9 开始不但赶上而且开始拉开与 OpenGL 的距离。其中最重要的变革就在于引入了对于整个电脑绘图界来说极为重要的创新与变革:Vertex Shader 以及 Pixel Shader。从此, OpenGL 开始了其追赶 DirectX 的步伐而不再是之前的被追时那种满意的感觉了。
“三十年河东,三十年河西”
OpenGL 在个人电脑领域上失意,在移动领域上如今却春风得意马蹄轻。无论是 Apple 的 iOS 还是 Google 的 Android ,都使用 OpenGL ES 作为它们的图形 API 渲染引擎。而大家都知道现在这两个系统在移动智能手机领域一如微软在个人电脑般具有垄断的地位。OpenGL ES 是 khronos Group 针对手持设备、嵌入式设备的三维图形渲染需求而制定一个编程接口标准。目前为止, OpenGL ES 一共发布了三个版本,分别是 1.0 ,1.1 ,及 2.0 。其中 2.0 相较于前两版有着较大的变化。从 2.0 开始,OpenGL ES 不再支持 fixed function pipeline 而引入了 OpenGL ES SL (OpenGL ES shading language)及 Vertex Shader 与 Fragment Shader。也就是说使用 OpenGL ES 来开发多媒体应用和游戏的厂商必须自行实现原来在 1.0 ,1.1 版本上提供的一些基础渲染例程。虽然在这点上,OpenGL ES 2.0 比 1.x 版本增加了难度,但好处是,厂商就此可以充分的发挥智能设备上越来越强劲的硬件功能来使自己的游戏图形更为出色。
我们都知道,游戏的开发,尤其是大型的三维游戏开发是非常耗费资源且投资巨大的。游戏公司通常会为它们所要研发的游戏建立和维护各种各样的工具,包括关卡编辑器,游戏资源管理器,还有最为重要的 3D Game Engine 等。当这些公司日复一日,年复一年的在一个平台上开发游戏,那么它们所获得的不仅仅只是游戏本身,还包含了创作游戏所需要的不断完善和改进的工具集。这样的结果就是平台和游戏厂商之间日久生情产生了黏性。这种黏性对于后来的平台而言就是一种难以逾越的壁垒。因为为一个新的平台制作出一个好用的有效率的工具集是需要时间和经验的积累的。
就如大教堂和集市,开源和闭源曾经所引发的剧烈争论一样,关于在图形 API 上,是支持 DirectX 还是支持 OpenGL 有时并不仅仅是技术上的事情,更多时候变成了一种个人喜好及情感的问题。就拿 id software 的创始人之一,个人电脑上 FPS 之神 John Carmack 来说,他就是个坚定不移的 OpenGL 的支持者,而类似他的人应该还有很多。正如那些曾经为 Linux 向桌面进军,为开源的普世性摇旗呐喊,为 OpenGL 在个人电脑领域上的抗争的人们,却被微软挾闭源系统之优势和垄断霸主的地位通通击败。你说这些人这些年来他们的内心中就没有残留一丝苦楚吗?现在好容易 Google 开源的 Android 系统终于在移动领域扬眉吐气,呼风唤雨,微软却要挾闭源的 DirectX 再次来触动许多人那敏感的神经,他们会允许吗?
好吧,你们不允许我也要干。这向来是微软的风格。那么这次闭源系统能再次战胜开源系统吗?列位看官,说了那么久我们竟然忽略或者忘记了还有一个比微软有过之而无不及的更为封闭的苹果了。微软好歹只是软件系统封闭,苹果却是从硬到软上都封闭。但谁叫人家早已将自身的生态系统建筑得完完满满,所以在移动领域上目前也能和 Android 不分伯仲。然而,无论是苹果的 iOS 还是 Google 的 Android ,它们使用的都是 OpenGL ES ,这会让很多人高兴不已。这下糟糕了,在移动领域里,微软被夹在开源和更封闭之间了。走向开源嘛,微软绝不会同意。走向更封闭嘛,它又没有这个能耐。人家苹果为了更封闭可是付出了数十年的心血的。
微软是从操作系统起家的公司,它深知掌控 API 掌控标准的重要性。所以它不会轻易地放弃抗争,但它得有抗争的本钱。就目前而言,在移动领域,微软的本钱在那呢?靠自身都难保的 Nokia 来帮它获得更多的移动操作系统份额?就当下的形势,这可能吗?
究竟是鸡生蛋,还是蛋生鸡?这放到那都是永恒的哲学命题。在 Windows Phone 不超过 5% 甚至更低的市场份额,在当前无论是在 Android 还是 iOS 平台上游戏厂商之间的竞争日趋激烈的情况下,有那个游戏厂商会冒着风险把巨大的资源放到未来并不明朗的 Windows Phone 和 DirectX 上?按经济学的 trade off 原则,厂商把资源放在了 Windows Phone 和 DirectX 上,必然会削弱它们在 Android 和 iOS 上与其他竞争对手战斗的力量。反过来,如果没有太多的游戏厂商支持 Windows Phone ,Windows Phone 又靠什么来吸引用户使用它呢?当 iOS 上能玩到无尽之剑 2 ,现代战争 3 等大型 3D 游戏时, Windows Phone 却只能玩一些初级的或者是 Xbox Live 上一些轻量级的游戏。即使是轻量级的游戏,iOS 上也比 Windows Phone 要多很多精彩得多。目前情况是,iOS 上是我开发我赚钱 (也有不赚钱的,但这不是普世现象么?),Windows Phone 上是我先赔钱开发还要当下不赚钱未来可能赚钱,这当真是微软你要别人怎么办?
总之,以微软这种巨无霸公司的文化来看,手机游戏上,它还是想再创辉煌的。但问题是此次远远落后的它用它的凌波微步是否还能追得上逐渐远去的 iOS 和 Android ?它在移动操作系统上的街亭之战是否是其在移动战场上的终极之战?让我们拭目以待。