痛苦or無(wú)奈?開發(fā)者到底怎么對(duì)待游戲BUG
BUG,或者更正經(jīng)地說(shuō)叫程序錯(cuò)誤,最普遍的定義是指在軟件運(yùn)行中因?yàn)槌绦虮旧碛绣e(cuò)誤而造成的功能不正常、死機(jī)、數(shù)據(jù)丟失、非正常中斷等現(xiàn)象。BUG的原意是蟲子,史上第一個(gè)BUG的起因是一只飛蛾飛入電腦中引起了故障,人們因此用這個(gè)詞來(lái)指代程序錯(cuò)誤。
作為玩家,BUG幾乎和我們?nèi)缬半S形。人都說(shuō)只要是程序就要有BUG,那么游戲作為非常復(fù)雜的程序(而且隨著時(shí)代發(fā)展變得越來(lái)越復(fù)雜),BUG當(dāng)然就更是數(shù)不勝數(shù)了。我們一般說(shuō)的 BUG 在上文的定義中,指的是功能不正常。如果是死機(jī)、數(shù)據(jù)丟失或非正常中斷,那可就是無(wú)法容忍的惡性 BUG 了。至于剩下的情況,小到一點(diǎn)點(diǎn)貼圖出現(xiàn)錯(cuò)誤,大到游戲流程進(jìn)行不了,那都是 BUG。
BUG都是壞事嗎?還真說(shuō)不定。要說(shuō)游戲史上著名的BUG,那就太多了。拿國(guó)內(nèi)玩家比較熟悉的例子,那就是CS里的“甩狙”吧。“甩狙”最初的起源是在CS 1.3版中,當(dāng)玩家開槍瞬間鼠標(biāo)移動(dòng)速度過(guò)快時(shí),鼠標(biāo)移動(dòng)的那一段軌跡都算作“命中”。配合威力巨大的狙擊步槍,確實(shí)是很可怕?,F(xiàn)在它早已被修復(fù),“甩狙”已經(jīng)成為了一種游戲技術(shù),但仍為玩家們津津樂(lè)道。
很多影響游戲體驗(yàn)的BUG確實(shí)可惡,但也有幫助玩家更輕易過(guò)關(guān)的良性BUG,甚至有些還能讓高手們實(shí)現(xiàn)極限挑戰(zhàn),比如《惡魔城》系列特有的出城速通打法。一部分BUG讓游戲人物做出滑稽的表現(xiàn),讓玩家忍俊不禁。所以,我們對(duì)BUG的感受,真的是蠻復(fù)雜的。不過(guò)現(xiàn)在玩家們倒產(chǎn)生了一個(gè)共識(shí),那就是隨著網(wǎng)絡(luò)的發(fā)達(dá)和網(wǎng)絡(luò)游戲平臺(tái)的興盛,開發(fā)者變得越來(lái)越“懶”。
他們大可以把滿是BUG的游戲先放出去發(fā)售,然后再慢悠悠地出補(bǔ)丁修復(fù)。“現(xiàn)在的游戲那么多BUG,都是不作為的開發(fā)者們的鍋。”人們都是這么想的。那么對(duì)開發(fā)者們來(lái)說(shuō),BUG 又意味著什么呢?
開發(fā)者的復(fù)雜感受
對(duì)于“BUG”這個(gè)話題,曾在締造了《黑與白》、《神鬼寓言》的獅頭工作室任職過(guò)的克里夫·哈里斯(Cliff Harris)說(shuō):“我認(rèn)為有這么一個(gè)普遍的誤解,就是玩家認(rèn)為開發(fā)者并不關(guān)心BUG的存在,因?yàn)槲覀円呀?jīng)賺到他們的錢了……(但)我的游戲里出現(xiàn)的任何BUG,除非它是在中間件里的,那都是我的錯(cuò),是我搞砸了。我清楚這一點(diǎn),而且不能假裝那不是自己的責(zé)任。每一次看到一條BUG報(bào)告,或單純是一個(gè)詞’崩潰’,你都會(huì)感到自己的血清素水平暴跌。這真的很令人沮喪。”
想象一下在那個(gè)在線更新補(bǔ)丁還是天方夜譚的1983年,一款游戲在還有不到一個(gè)月就發(fā)售的時(shí)候,被發(fā)現(xiàn)了游戲運(yùn)行大概20分鐘后突然崩潰的BUG,開發(fā)者是什么感受?那就是在C64平臺(tái)的《Paradroid》這款游戲上發(fā)生過(guò)的事。開發(fā)者不得不連著三天看遍整個(gè)代碼,因?yàn)闆](méi)有任何線索顯示是哪出了問(wèn)題。
哈里斯認(rèn)為,所有的開發(fā)者都對(duì)自己的工作充滿了自豪,或者至少都在努力。所以當(dāng)有 BUG 被發(fā)現(xiàn)時(shí),他們都不會(huì)有很好的感受,即使大家都知道那是不可避免的。當(dāng)然最虐心的,還是在游戲已經(jīng)發(fā)售,但BUG反饋卻大量出現(xiàn)的時(shí)候。事實(shí)上很多開發(fā)者都是很積極去和玩家進(jìn)行溝通的,很多人會(huì)選擇在社區(qū)里回復(fù)這些帖子,認(rèn)真查看每一份玩家寄來(lái)的電郵。
但有時(shí)候哈里斯覺(jué)得玩家也有不對(duì)的地方——他們確實(shí)很憤怒,但只會(huì)反反復(fù)復(fù)地說(shuō):“游戲出BUG了,快點(diǎn)修啊!”但卻只字不提到底哪出了問(wèn)題。“這一點(diǎn)都幫不上忙。”哈里斯說(shuō)。
痛苦的BUG修復(fù)
對(duì)于開發(fā)者來(lái)說(shuō)一件很痛苦的事情就是,你知道了BUG存在,但想把它重現(xiàn)出來(lái)卻并不是那么容易,因?yàn)槟憧赡懿⒉磺宄@個(gè)BUG真正的觸發(fā)條件是什么。
一位FPS(第一人稱射擊)游戲的開發(fā)者說(shuō),他曾接到一份BUG反饋,稱當(dāng)敵人死亡,武器掉落時(shí),有時(shí)候它不會(huì)落在地上,而是直接穿過(guò)地面消失不見。這個(gè)問(wèn)題很嚴(yán)重,因?yàn)檫@款游戲強(qiáng)調(diào)玩家使用特定的武器來(lái)過(guò)關(guān),出BUG就意味著玩家拿不到武器了。
然而問(wèn)題在于,導(dǎo)致游戲中武器穿過(guò)地面的原因千千萬(wàn),光是偶爾看到BUG發(fā)生根本不夠,你必須得找到重現(xiàn)這個(gè) BUG 的方法,這樣才能鎖定問(wèn)題所在。于是開發(fā)者寫了一個(gè)代碼,讓游戲每一秒都產(chǎn)生一件武器掉落在地上,每一次的位置、高度、速度、旋轉(zhuǎn)狀態(tài)都是隨機(jī)的。系統(tǒng)記錄每件武器的狀態(tài),借此找到問(wèn)題所在。開發(fā)者讓這個(gè)代碼整晚運(yùn)行,第二天早上再來(lái)發(fā)現(xiàn)游戲已經(jīng)崩潰好幾個(gè)小時(shí)了。
不過(guò)好在他終于有發(fā)現(xiàn)——那是碰撞系統(tǒng)的鍋。當(dāng)武器掉落時(shí)旋轉(zhuǎn)得比較“斯文”的時(shí)候,碰撞系統(tǒng)會(huì)突然不起作用。這個(gè)過(guò)程已經(jīng)算是走運(yùn)的了,至少問(wèn)題順利得以鎖定,但大多數(shù)時(shí)候重現(xiàn)BUG都很痛苦。育碧游戲在玩家群體中那是以 BUG 著名的了,即使是受到好評(píng)的《刺客信條 2》也不例外。曾參與過(guò)本作開發(fā)的查爾斯·蘭德爾(Charles Randall)回憶說(shuō),《刺客信條 2》有一個(gè)頑固的BUG,那就是戰(zhàn)斗過(guò)程中有一部分動(dòng)畫會(huì)缺失的問(wèn)題。
它困擾了蘭德爾超過(guò)一年的時(shí)間,完全不知道是一系列什么樣的操作觸發(fā)了這個(gè)BUG。最后,蘭德爾還是沒(méi)修復(fù)它,而是用播放另一段動(dòng)畫的手段繞開了這個(gè)BUG。他表示,有時(shí)候比起修復(fù)BUG,讓這個(gè)BUG消失是最好的方法。只要電子游戲仍然存在,玩家、開發(fā)者和BUG三者的糾結(jié)就會(huì)一直存在。作為玩家我們當(dāng)然不想遇到那些討厭的BUG,但如果真的遇上了,我們大可以去進(jìn)行反饋。現(xiàn)在我們了解了開發(fā)者是怎樣想的,那就知道該怎么去幫助他們將游戲變得更好。