標籤:

遊戲為什麼會出bug?

看過同樣問題的回答,但是計算機應該不會出錯的,不是嗎?


複雜系統哪有不出錯的?計算機當然會出錯,只是容錯能力大小的問題。

要提高容錯能力,得設想各種極端條件,得針對這些用例進行測試,得設計額外的邏輯處理它們,這都是得堆成本的。如果說做一個功能花一分力,給這個功能做容錯處理往往需要花十分甚至百分力才能弄得比較完善。硬體和驅動層面由於功能相對單調,覆蓋起來也簡單些;應用軟體可就難了,功能太多複雜度太高,資源通常不足以完成無限度的全面測試,結果測不到的部分就容易出問題。

舉個例子。你開發某個格鬥遊戲,為了提高趣味度,你設計了一種浮空性質的攻擊技能,可以把對手打飛起來然後追打。照直做出來以後你測了一下發現玩家可以使用這個技能無限連,一套直接打到死,遊戲反而變得很無聊。為了避免無限連你又加了一個邏輯,把敵人打飛起來以後先判斷自己這邊接下來的出招,如果是同一個技能就不允許追打,別的技能就能打。這樣看起來很ok了對吧,於是遊戲就這麼發售了。然後就有玩家發現了浮空以後可以先用其它攻擊空揮一下把追打判定騙出來再用浮空技成功追打的邪道操作……

再舉個例子。你開發某個大型網路遊戲,其中有一種職業可以學一種被動技能,效果是挨了敵人的一次暴擊以後獲得一個能疊加的buff,每層buff可以使自己下次攻擊時多算一次傷害。然後各種測試刷怪啊打架啊玩來玩去感覺還行,沒特彆強也沒特別弱,就這麼上線了。結果又碰上了一幫腦迴路清奇的邪道玩家,先找個暴擊高的同夥用沒攻擊力的低級灰字武器哐哐哐猛戳,自己坐著不動也不還手,攢上幾千層buff,然後帶著buff去見boss怪,一鎚子上去直接把boss秒了……

所以你看,大部分遊戲bug都是這麼出來的。畢竟遊戲是人做的,而人的直覺思維本來就充滿了bug。

附一些以前寫過的關於bug的東西~

當年星際爭霸 1 的「小狗變飛龍」屬於 bug 還是製作組有意為之??

www.zhihu.com圖標街機遊戲《懲罰者》中無敵秘技的原理是什麼??

www.zhihu.com圖標《荒野大鏢客:救贖2》中有哪些細思恐極的細節或故事??

www.zhihu.com圖標平滑的戰爭迷霧效果是如何實現的??

www.zhihu.com圖標KOF98 裡面利昂娜為什麼要給陳國漢敬禮?是什麼劇情?

www.zhihu.com圖標


瀉藥

計算機硬體不出錯(當然這也只是絕大部分情況下,畢竟0和1的界限是人為對模擬量制定的界限,比特位是有翻轉的可能性的。不過這裡姑且認為不出錯),但是程序是人寫的,程序有邏輯錯誤的話,自然就會出bug。

舉一個例子,例如求某個角色的運動方向。往往會把上一幀和本幀的角色移動的向量進行歸一化(長度變為1),要把向量每個分量除以向量的長度。但是如果向量是0(上一幀和這一幀相同),長度也是0,那麼就會產生除以零。根據平台不同,程序會把除以零的結果算為正無窮,或者拋出異常,或者算為0。無論是哪一種其實都產生bug了。

我們以前出現過角色突然消失的bug,其實就是算成正無窮之後,這個錯誤的運動方向值被反饋到下一幀的角色位置了。


作為一名遊戲開發人員來回答下這個問題。

遊戲研發是一個非常複雜繁瑣的過程,不僅涉及到程序代碼,還有美術資源,音頻資源,遊戲數據等,而這些內容都是人產出的(程序,策劃,美術集體的勞動成果),那麼只要是人產出的內容就會有差錯。

程序的代碼存在漏洞,極限情況超出設計預期,或者產生不可預計的結果,或者把測試用的代碼直接推到線上。

策劃填寫的數據出錯,譬如填錯一個數據這種,看上去是小錯,實際上可能一旦面向玩家就是無可挽回的致命bug。

美術資源的使用錯誤,圖片信息錯誤,音頻的使用錯誤。3D模型穿插,特效穿插,動畫跳幀滑步等

甚至上線後,在線更新遊戲的流程差錯,運營人員手抖,等等等等

所以一個遊戲有bug非常正常,解決bug最好的辦法是優化研發各個環節流程,尤其是測試流程,我們自己也做的不好,還在慢慢摸索。


寫十萬個字的文章,難免有一個錯別字。

寫代碼也是如此。

對於文章來說偶爾有個錯別字不算什麼。代碼有個錯誤很可能影響100%的遊戲體驗。

ps:咱做的遊戲叫selenophobia~steam有售。


那麼大個項目,出bug太正常了

你要寫個hello world肯定不會有bug


計算機只有0和1

但由於某些外界因素。比如CPU老化了,使有時候應該寫1卻寫0,那麼計算機就出問題了

雖然很少 但存在。不過這個不算軟體的bug了。你說的bug應該是指狹義的軟體bug。這個是程序員的邏輯錯誤,有的是邏輯不達標,比如拳皇97的各種cancel無限連,有的是手誤但通過了編譯比如拳皇97kim對choi的投技二次傷害,有的是故意為之。

一般說bug只要不嚴重影響軟體體驗或者不頻繁造成軟體崩潰,都是可以接受的。


遊戲更像一個數學題,尤其是競技類遊戲,比寫應用更麻煩,有時候必須利用工具模擬所有的數據來保證公平性,不會因為某件裝備的不合理使用而導致公平性喪失。

當然bug不屬於這個範疇,一般是是不合理操作導致的。


計算機不會出錯

但程序員會出錯啊!


推薦閱讀:

有人以「魯榮漁2682號慘案」為原型做了一個文字冒險遊戲
數據分析《賽博朋克2077》:已是最可行的VR AAA遊戲
愛琳的變遷史:devCAT更新大事記(二)
寡頭遊戲史里,Cocos-BCX類靠譜項目或將帶來變革
猜到開頭卻沒猜到結尾

TAG:遊戲 | Bug |