BUG,或者更正经地说叫程序错误,最普遍的定义是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。BUG的原意是虫子,史上第一个BUG的起因是一只飞蛾飞入电脑中引起了故障,人们因此用这个词来指代程序错误。
作为玩家,BUG几乎和我们如影随形。人都说只要是程序就要有BUG,那么游戏作为非常复杂的程序(而且随着时代发展变得越来越复杂),BUG当然就更是数不胜数了。我们一般说的 BUG 在上文的定义中,指的是功能不正常。如果是死机、数据丢失或非正常中断,那可就是无法容忍的恶性 BUG 了。至于剩下的情况,小到一点点贴图出现错误,大到游戏流程进行不了,那都是 BUG。
BUG都是坏事吗?还真说不定。要说游戏史上著名的BUG,那就太多了。拿国内玩家比较熟悉的例子,那就是CS里的“甩狙”吧。“甩狙”最初的起源是在CS 1.3版中,当玩家开枪瞬间鼠标移动速度过快时,鼠标移动的那一段轨迹都算作“命中”。配合威力巨大的狙击步枪,确实是很可怕。现在它早已被修复,“甩狙”已经成为了一种游戏技术,但仍为玩家们津津乐道。
很多影响游戏体验的BUG确实可恶,但也有帮助玩家更轻易过关的良性BUG,甚至有些还能让高手们实现极限挑战,比如《恶魔城》系列特有的出城速通打法。一部分BUG让游戏人物做出滑稽的表现,让玩家忍俊不禁。所以,我们对BUG的感受,真的是蛮复杂的。不过现在玩家们倒产生了一个共识,那就是随着网络的发达和网络游戏平台的兴盛,开发者变得越来越“懒”。
他们大可以把满是BUG的游戏先放出去发售,然后再慢悠悠地出补丁修复。“现在的游戏那么多BUG,都是不作为的开发者们的锅。”人们都是这么想的。那么对开发者们来说,BUG 又意味着什么呢?
开发者的复杂感受
对于“BUG”这个话题,曾在缔造了《黑与白》、《神鬼寓言》的狮头工作室任职过的克里夫·哈里斯(Cliff Harris)说:“我认为有这么一个普遍的误解,就是玩家认为开发者并不关心BUG的存在,因为我们已经赚到他们的钱了……(但)我的游戏里出现的任何BUG,除非它是在中间件里的,那都是我的错,是我搞砸了。我清楚这一点,而且不能假装那不是自己的责任。每一次看到一条BUG报告,或单纯是一个词’崩溃’,你都会感到自己的血清素水平暴跌。这真的很令人沮丧。”
想象一下在那个在线更新补丁还是天方夜谭的1983年,一款游戏在还有不到一个月就发售的时候,被发现了游戏运行大概20分钟后突然崩溃的BUG,开发者是什么感受?那就是在C64平台的《Paradroid》这款游戏上发生过的事。开发者不得不连着三天看遍整个代码,因为没有任何线索显示是哪出了问题。
哈里斯认为,所有的开发者都对自己的工作充满了自豪,或者至少都在努力。所以当有 BUG 被发现时,他们都不会有很好的感受,即使大家都知道那是不可避免的。当然最虐心的,还是在游戏已经发售,但BUG反馈却大量出现的时候。事实上很多开发者都是很积极去和玩家进行沟通的,很多人会选择在社区里回复这些帖子,认真查看每一份玩家寄来的电邮。
但有时候哈里斯觉得玩家也有不对的地方——他们确实很愤怒,但只会反反复复地说:“游戏出BUG了,快点修啊!”但却只字不提到底哪出了问题。“这一点都帮不上忙。”哈里斯说。
痛苦的BUG修复
对于开发者来说一件很痛苦的事情就是,你知道了BUG存在,但想把它重现出来却并不是那么容易,因为你可能并不清楚这个BUG真正的触发条件是什么。
一位FPS(第一人称射击)游戏的开发者说,他曾接到一份BUG反馈,称当敌人死亡,武器掉落时,有时候它不会落在地上,而是直接穿过地面消失不见。这个问题很严重,因为这款游戏强调玩家使用特定的武器来过关,出BUG就意味着玩家拿不到武器了。
然而问题在于,导致游戏中武器穿过地面的原因千千万,光是偶尔看到BUG发生根本不够,你必须得找到重现这个 BUG 的方法,这样才能锁定问题所在。于是开发者写了一个代码,让游戏每一秒都产生一件武器掉落在地上,每一次的位置、高度、速度、旋转状态都是随机的。系统记录每件武器的状态,借此找到问题所在。开发者让这个代码整晚运行,第二天早上再来发现游戏已经崩溃好几个小时了。
不过好在他终于有发现——那是碰撞系统的锅。当武器掉落时旋转得比较“斯文”的时候,碰撞系统会突然不起作用。这个过程已经算是走运的了,至少问题顺利得以锁定,但大多数时候重现BUG都很痛苦。育碧游戏在玩家群体中那是以 BUG 著名的了,即使是受到好评的《刺客信条 2》也不例外。曾参与过本作开发的查尔斯·兰德尔(Charles Randall)回忆说,《刺客信条 2》有一个顽固的BUG,那就是战斗过程中有一部分动画会缺失的问题。
它困扰了兰德尔超过一年的时间,完全不知道是一系列什么样的操作触发了这个BUG。最后,兰德尔还是没修复它,而是用播放另一段动画的手段绕开了这个BUG。他表示,有时候比起修复BUG,让这个BUG消失是最好的方法。只要电子游戏仍然存在,玩家、开发者和BUG三者的纠结就会一直存在。作为玩家我们当然不想遇到那些讨厌的BUG,但如果真的遇上了,我们大可以去进行反馈。现在我们了解了开发者是怎样想的,那就知道该怎么去帮助他们将游戏变得更好。