IGN独家:Xbox One向下兼容计划的幕后故事
这是一条超出想象的漫长而陌生的道路。
抢答题:说出你最爱的一届E3。
时间到!你心里有答案了么?希望每一届都有让玩家感到有趣的部分吧。不过对供职微软28年的老员工Kevin La Chapelle而言,他会不假思索、毫不动摇地说出这个问题的答案:2015年E3。
那一年微软的Xbox E3媒体发布会收获了有史以来最为热烈的欢呼。这些欢呼不是给新《光环(Halo)》或《战争机器(Gears of War)》的,甚至也不是给天蝎座主机(Xbox One X)的。与之相反,当Xbox负责人菲尔·斯宾塞公开了La Chapelle团队耗费数月时间所完成的工作——向下兼容(backwards compatibility)的时候,整个盖伦中心被欢呼声所淹没了。
“那绝对是我职业生涯最为自豪的时刻,”La Chapelle告诉笔者,他很努力地回忆着当时的情景。
“那绝对是我职业生涯最为自豪的时刻,”La Chapelle告诉笔者,他很努力地回忆着当时的情景。“整个现场都快瘫痪了,我泪如雨下,这是对我之前所有努力的完美认可。”
La Chapelle的助手、首席软件架构师Jonathan Morrison当时就坐在La Chapelle和Kareem Choudhry(微软Xbox软件工程副总裁,最初通过向下兼容计划的人)的旁边,“对我而言(最难忘的时刻)是那几个单词出现在提词器上的时候,菲尔还没念出来的时候,整个展厅的人就开始欢呼了,当时我汗毛都竖起来了。”
这一惠及粉丝的特性最早是由两个独立的微软研究团队进行的实验项目,之后整合成计划于Xbox One发售日推出的服务——完全是和主机同步的,不过之后Xbox One的政策发生了剧烈的变动(比如去除了全程在线的要求),让这项服务不得不回炉再造。
Xbox One X也加入其中,许多Xbox 360游戏得到了新主机的性能增强。
现在看这次回炉很成功,如今Xbox One能兼容一些初代Xbox游戏了。而且Xbox One X也加入其中,许多Xbox 360游戏得到了新主机的性能增强,拥有10-bit色深、各向异性过滤以及最多9倍的像素数量等加成。
笔者和Xbox向下兼容团队度过了一整天的时间,试图了解他们是怎样的人、为何做这件事、未来又将如何。笔者想注明的有两点:1.这个故事比你们想的还要有趣;2.这些让你能够在Xbox One上体验之前一两个世代游戏的人对工作的关心和热爱远远超出了你的想象。
平行实验
微软是一家大公司。虽然有许多团队紧密合作、分享成果,但也有许多部门一直静静地进行着自己的实验和研究项目,直到他们被整合到一起负责资源更集中的项目。Choudhry和Xbox核心平台团队项目经理Kevin Gammill发现了有两个团队能够推动新主机兼容Xbox 360的工作——他们已经能通过一个名为“Fission”的模拟器模拟初代Xbox上的游戏了。
时间回到2007年。其中一个团队正在进行模拟PowerPC CPU的工作——获取Xbox 360使用的32-bit代码,然后将其放到第三代Xbox可能使用的64-bit架构上运行。而另外一组位于北京的团队当时正根据Xbox 360的GPU架构编写GPU模拟器。“这就像是花生酱和巧克力,”Choudhry回忆道,“所以我们就想了,‘为什么我们不把他们合并到一起呢?’”
“我们得为[Xbox One]预先准备一些向下兼容功能。”
Choudhry也真的这么做了,所以说早在Xbox One确定名称、性能配置之前,相关的向下兼容工作就已经开始进行了。
随着Durango浮出水面,让新主机兼容Xbox 360的计划也在开展。“一开始只是软件测试,但我们需要想在硬件前头,”Gammill解释道,“我们得为[Xbox One]预先准备一些向下兼容功能。”这项工作是2011年做的。预先测试表明在仅有软件的情况下,支持最关键的Xbox中间件XMA音频(Xbox middleware XMA audio )和纹理格式是非常麻烦的事情。Gammill称XMA音频就占用了Xbox One 6个核心中的2到3个。但是SOC(系统级芯片)——基本上就是在Xbox One塞了一个Xbox 360,和PS3首发时内置PS2硬件类似——不仅很贵,而且会限制兼容团队的工作。“如果我们非得基于360的SOC来工作的话,那最后的效果很可能没什么两样,”他说道,“这可不是我们的目标。”所以他们最终把XMA和纹理格式做进了Xbox One的芯片组中。
从头再来
“我蠢到以为编写模拟器才是最困难的部分,”Choudhry说道。
在斯宾塞于2014年初接替Don Mattrick成为Xbox部门负责人后,他和Choudhry重启了兼容项目。“对我来说这是一个耽搁多年的工作,”Choudhry说道,同时提到了他很久之前就关注的“Trioxide”研究项目。不过有些意料之外的挑战出现了。“我蠢到以为编写模拟器才是最困难的部分,”Choudhry告诉笔者,然后他有点自言自语道,“你怎么能在一个新平台上重新发售不属于你的IP呢?”
他首先招募了La Chapelle,一个字面意义上的微软老司机(他的奥迪R8有着定制的Xbox绿色刹车钳和Xbox主题装饰的车牌,他办公室外面的墙上还裱着一张速度单,是他在一次合法赛事里将R8开到200mph的证明)。La Chapelle回过头来招募了Morrison,然后他们一起找到并招募了Barry Bond——原Trioxide项目的一员,而且依然在微软工作。在这之后Morrison建议拿一款小白鼠游戏作尝试。
“我们需要挑选一款看起来能在一定时间里做完的游戏,”他告诉笔者,“而且要有Xbox Live元素。”
所以La Chapelle只能秘密地寻找在The Behemoth能说上话的人,最终通过领英找到了。
所以他们选择了《城堡毁灭者(Castle Crashers)》,由圣地亚哥工作室The Behemoth开发的一款高人气4人联机合作闯关游戏。不过自然地,在新平台模拟运行一款老游戏肯定不容易。“我们很快就意识到遇上麻烦了,”Morrison说,“我们出现问题时屏幕上就会蹦出了一堆数字。”这些数字是符号——人类可读的“说明”是由显示问题的代码所组成的,然而单纯的符号可没办法解码、阅读。
所以La Chapelle只能秘密地——团队之外的人可不知道兼容项目——寻找在The Behemoth能说上话的人。他通过领英(“在微软收购之前”,他笑着解释道)和其CEO取得了联系,在确保NDA的情况下了解了这些符号的意义。“他们真棒,”La Chapelle说道,“他们给了很大的帮助。”他补充说因为了解了这些符号,整个团队的工作效率提升了10倍。
穿过针眼
但这不能解决另一个问题:在新平台不能使用存档的情况下测试后续的关卡。他们因此只能手动打游戏以获取需要的各种数据。“我们没法在游戏里存档,”Morrison回忆道,“ Kevin成了我们的存档机器,”La Chapelle笑着说道,“你是不会想为钱玩《城堡毁灭者》的。”
“我们有款游戏一开始只有1fps,”La Chapelle回忆道,“还好测试人员最终把它调好了。”
在可以将文件保存,从一个开发人员传输到另一个人后,团队决心赶上E3的发布会以及2015年秋的发售。第一批游戏顺利搞定了,但他们公开承诺在年底前发布100款游戏。只是在前往E3之前,许多游戏其实没法运行,或者表现很差。“我们有款游戏【一开始】只有1fps,”La Chapelle回忆道,“还好测试人员最终把它调好了。”
La Chapelle、Morrison和整个25人的兼容团队为这个问题绞尽脑汁,直到Morrison灵光一闪。他想到:Xbox 360和Xbox One的Fission模拟器最根本的不同是什么呢?调度程序——可以理解为CPU的内部交警,告诉数据去哪、速度多快——在360上是一个速度,但Fission使用的是Xbox One的默认调度参数。当Morrison在E3期间说出了他的突破性思考之后,La Chapelle告诉他,“好吧,我知道你回家都做什么了!”
对调度程序的改变起效了——比他们预想的还要成功。团队成员在Morrison周围忙忙碌碌,确保新的调度程序起效,他们在第一年里发布了104款向下兼容游戏。
《光环:致远星》是我们第一款没能做到承诺的游戏。我们因此了解到主观的测试并不够好。
不过《光环:致远星(Halo Reach)》一开始在Xbox One上问题频出。“我们不想隐瞒在《光环:致远星》上犯的错误,”Stillwell解释说,“我们拿出的方案不是我们期望的。”兼容团队被压垮了。“我们的目标是达到Xbox 360的水平,”La Chapelle说道,“《光环:致远星》是我们第一款没能做到承诺的游戏。我们因此了解到主观的测试并不够好,所以我们建立了一组客观的测试工具。”
《光环:致远星》在之后的更新中变好了,部分归功于由首席软件工程负责人Brian Spanton和其团队创造的Xbox兼容性能分析(XCPA)工具。“找到什么是bug是件很困难的事,”他说,同时提到一些错误是原版游戏就有的,一些是模拟器带来的。Spanton向笔者展示了这一工具,其中两个窗口运行着游戏——笔者看到的是《战争机器3( Gears of War 3)》——一张走线图显示了实时帧数。帧数其实是越低越好,他分析了其中一个场景,称帧数过高会让团队之前漏掉的错误不能被及时发现。
以退为进
在有了数百款Xbox 360游戏的经验、进度也达到新局面后——团队给Xbox的开发者们写了一份白皮书,告诉他们如何更好地编写代码以经历时间考验、方便兼容,团队还致力于让Xbox One X能够更好地运行360游戏——整个团队准备好迎接新的挑战了:让初代Xbox游戏在Xbox One上跑起来。这项计划的内部名称是Fusion,首席软件工程师Spencer Perreault在2016年11月把握机会让它变为了现实。
“有一天Perreault走过来跟我说,‘我觉得我能搞定他’,”La Chapelle说,“所以我们让他自由发挥了,是他充满热情的工作为玩家们带来了这一切。”
Perreault 2009年大学毕业后加入微软,首先在初代Kinect团队,后在Kinect 2.0团队。当2014年有机会加入兼容团队的时候,他抓住了这个机会。“我个人对模拟器一直很感兴趣。”他说道。
他一开始想尝试模拟Xbox 360的Fission模拟器,觉得这会失败——结果果然失败了,而且失败得“可以预料,”Perreault补充说。初代Xbox的内存为4kb增量,而Xbox One是64kb。这是一个需要解决的问题,而且初代Xbox用的32-bit CPU,Xbox One用的是64位的。根据Perreault的说法,“每一个清醒的时刻,”他都在解决或思考初代Xbox的兼容问题。
Dolphin——每个初代Xbox的debug和开发者套件中都有的开发者工具,是他首个成功运行的软件。
Dolphin——每个初代Xbox的debug和开发者套件中都有的开发者工具,是他首个成功运行的软件。“它看起来还不对劲,但它确实是海豚,而且还在游呢,”他笑着说道。接着La Chapelle拿来了他自己收藏的一堆初代Xbox游戏供测试。他的“命中率”——能够实际运行的游戏比例——他估计起初只有10%。一些游戏能够运行,另外一些则有严重的图像问题。
命中率在一两个月之后达到了90%。“尝试各种不同的游戏有利于让事情变顺利,”Perreault说道。确实如此,首批初代Xbox游戏已经登陆Xbox One,其中就有大热游戏《忍者龙剑传:黑之章(Ninja Gaiden Black)》和《星球大战:旧共和国武士(Star Wars: Knights)》。而且更厉害的是,它们不只是兼容而已,而是变得更出色了。所有的游戏都运行在1080p下,有着更高、更流畅的帧数。笔者对比初代Xbox(是的,初代Xbox)体验了《旧共和国武士》,其中的差距很明显。《忍者龙剑传:黑之章》原生支持宽屏,因而看起来尤为现代。你还可以在《王牌飞行员:复仇之路(Crimson Skies: High Road to Revenge)》中通过System Link进行多人游戏。笔者在初代Xbox上使用Duke手柄游玩,另一个人在Xbox 360上,再一个人在Xbox One S上,最后一个人在Xbox One X上。
“细节都已经有了其实,只是当时的技术限制了它。”首席软件工程师Eric Heutchy如是说道。
“细节都已经有了其实,只是当时的技术限制了它。”
不幸的是,法律问题将会限制Xbox One上能玩到的初代Xbox游戏数量,因为有些游戏的发行商以及不复存在了,其它一些游戏因为纸质合同丢失也没法处理,还有一些游戏出现了音乐或其他许可证过期的问题。兼容团队目前还在谨慎地兑现承诺,不过希望他们能早一点火力全开。
那么粉丝们能做些什么让更多游戏加入兼容列表呢?“支持这个项目,”Xbox主机营销高级总监Albert Penello说道,因为发行商会关心数据的。“让这些游戏的粉丝行动起来对于解决法律挑战很有帮助。”Stillwell也同意这一点。“粉丝们才是关键。我们一直在努力,有时因为法律问题事情没法成功。但越多粉丝向发行商反馈的越多,我们能做的也就越多。不过话虽如此,我们可不会抱怨,我们已经得到了非常多的支持了。”