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