遊戲中的bug都是怎麼來的?

Cassie-Arts


BUG是遊戲設計中的錯誤。在如今動輒數十個G的大型遊戲中,它的存在不可避免。BUG的成因各不相同,種類也五花八門。不過,我們常見的就是下面這幾種:

身體錯位

為了方便給角色換服裝、髮型以及妝容,大型3D遊戲裡的角色模型都是用紙娃娃系統分部位拼起來的。當系統出錯的時候,就可能出現身體部位錯亂的情況。

比如輻射裡著名的180轉頭BUG:

像WWE裡這種臉部錯位其實也是同理的BUG:

再來一張FIFA鎮樓:

無臉症

由於面部貼圖渲染錯誤,導致遊戲中常常出現臉部消失的驚悚的畫面。

首當其衝的肯定是刺客信條大革命啦:

FIFA12:無頭症

數值錯誤

數值設定錯誤通常都是程序猿手誤造成的,當然也不排除數值策劃的鍋。既然是人做的,就很難根除這樣的問題。

最著名的例子就是古墓麗影一代裡勞拉那引人注目的胸部了。建模師在修改模型時不小心把胸部增大了一倍……不過也正是因為這個手誤才有瞭如今性感的勞拉形象。

數值錯誤可能出現在程序的各個地方,造成的後果也千差萬別,這裡就不一一舉例了。

穿模、穿牆

為了模擬真實的物理碰撞,遊戲中的模型會以一定頻率進行碰撞檢測。但如果檢測頻率不夠(或者失效),當你撞向邊界的時候就可能騙過檢測機制,出現穿牆的現象。

另外,為了減少運算量,絕大多數遊戲模型都不是直接進行碰撞檢測的。而是運用了一種叫做“包圍盒”的技術,把模型劃分成多個不同的部分再用一個個矩形盒子(或者球形)框住它。檢測碰撞時首先計算的是矩形盒子的碰撞。

由於包圍盒不可能完全貼合實際模型,甚至可能小於模型本身,就可能出現穿模的情況。

詭異的抽搐

在開放式遊戲,特別是大型沙盒類遊戲中,由於地形複雜又沒有太多限制,很容易觸發BUG。最常見的就是人物莫名抽搐或者屍體亂飛的情況。這其實都是因為物理引擎應用不到位造成的。

老滾5裡這種BUG尤其多:

在FIFA等有大量物理碰撞的體育遊戲中也很常見:

數據庫出錯

在大多數遊戲中,你撿起的每一個物品在程序內部都有一個單獨的ID標識用於存放到數據庫中。如果這套機制出現了問題,那就可能多出同類物品或者物品直接消失。

這是一類非常嚴重的BUG,有時候只能通過賬號回滾的方式處理。

除了上面這些常見的“小BUG”,我們在遊戲中還經常遇到黑屏,不能啟動,幀數過低等等嚴重影響遊戲進行的“大BUG”。這就涉及到太多複雜的機制了,只有開發者自己才能知道究竟出了什麼問題。


我是一個喜歡分享遊戲經驗的非資深老玩家,覺得這個回答有幫到你就點個贊吧,順便關注一下。


核遊


BUG這個存在,阻攔在開發者和玩家之間。遊戲中的每一個致命的錯誤,每一次突發的崩潰,對於開發者而言都是一次巨大的打擊。


那麼BUG是怎麼產生的呢?簡單來說,遊戲中會產出BUG大抵是下面三個原因造成的:

1. 程序員沒有能力修復,所以讓玩家來承受。

2. 可以修復,但修復的投入大於回報,那就當做沒看見。

3. 在測試當中沒有遇到,玩家發現了。

以上,就是玩家為何會在遊戲中看到BUG的原因。


BUG產生之後,一般由玩家反饋至開發者,但開發者也很苦惱啊,因為他要面臨一個問題——重現BUG。你找到一個BUG容易,但開發者要解決一個BUG時就需要從根源入手,測試BUG真正觸發的條件是什麼,這需要耗費大量的時間。

簡單舉個例子:

在一款遊戲中,開發者遇到一個玩家提供的BUG,他苦思冥想啊,日夜操作啊,嘔心瀝血地看代碼。發現自己的代碼都很正常,並沒有什麼錯誤的地方。檢查自己的代碼是個漫長的過程,同時很枯燥,開發者等於要推翻自己之前的想法重新排查代碼中錯誤的部分。

直到最後,這位開發者拍著大腿跳起來:“老子終於找到了!!!”

各位猜猜他在哪裡找到BUG出現的原因呢?

原來是一個數據表中弄錯了一個索引值,就這一個數值導致了BUG的出現。當然他檢查數據表的過程肯定沒有我寫下來“數據表”這三個字那麼簡單。

一個數據表中包含了幾十種的類,用於儲存遊戲中的一切數據,同時還跟其它的數據表有關聯。問題就出在他關聯的那張表上只設定了接收16個值,但是他用於儲存遊戲數據表的設定了接收24個值。這中間一來二去,遊戲中就會丟失8個值的數據,這就導致了遊戲BUG的出現。

以上,還只是玩家提供準確BUG的效果。如果開發者收到的是這些郵件:

“我半個身子沉到地下了!!”

“我養的寵物走在路上突然死了!!”

“敲尼瑪!!!你遊戲又崩潰了,退款!”

那麼這些沒頭沒腦的郵件基本不會給予BUG修復有任何實質上的幫助,正確提交BUG的方式應該是:

1. 詳盡說明BUG出現的時間

2. 你當時在遊戲中做了什麼操作

3. 使用的是什麼設備

4. 問題出現的時間點

這些詳盡的BUG反饋能幫助開發者更快修復BUG。


PS:歡迎小可愛們微信搜索“任玩堂”或“appgamecom”關注任玩堂微信公眾號,更多新遊資訊盡在任玩堂!


任玩堂


既然是BUG,肯定不是製作者有意留在遊戲裡的,這和《魂鬥羅》那種上上下下左右左右BA這種後門是不同的。

我就拿我最熟悉的格鬥遊戲來舉例說明吧。大體上分為兩種一種是程序員沒有測試到的,另一種是程序員測試不到的。

先說第一種“程序員沒有測試到的”。

就拿大陸受眾最廣的《拳皇97》來說,絕對是沒有測試到的BUG就是著名的惡意浮空了。通常小題型角色或者女性角色通過一定的指令輸入,在版邊可以使自己的身體“漂浮”起來,與對方形成同一地形的高低差。這種高低差所導致的直接後果就是在擊打對手的時候,對方在版邊的時候沒有hitback,也就是己方不會因為攻擊而被拉開距離,這時候使用任意可以連打的輕攻擊便可以造成無限連。

另外角色浮空也是同樣,這都屬於影響遊戲體驗,可能體驗都不合適,確切的說是完成度的惡性BUG,這種BUG通常是遊離於遊戲底層系統之外的。

而像“程序員測試不到的”遊戲BUG則多數並不脫離遊戲系統,但在設計之初,程序員並想不到此種測試方法來驗證而導致的。此類遊戲BUG談不上惡性,因為是植根於遊戲底層系統,某些還會讓遊戲增加一定的樂趣。此類遊戲通常是判定或者幀數設計的不協調,會造成一定程度上的不平衡。同樣拿《拳皇97》來舉例的話,典型就是以特瑞為首的各種浮空無限連,這就屬於判定BUG。像八神的“鬼步”、山崎龍二的“無限踢沙”則屬於幀數BUG。嚴格來說大門五郎的頭上扶——超受身——地雷陣屬於幀數和判定BUG的綜合體,在《拳皇98》也是,也由於有了這套連續技,大門五郎的段位上了幾個臺階。所以在後來的《拳皇2002》中大門再次登場時,就嚴格修正了超受身的收招幀數。

順便一提的是《街霸2》最開始“連續技”本身也是BUG之一,但玩家的反饋良好,所以在後續作品中就保留了下來,可見BUG也是尤其積極意義的。


唐草大魔王


MC裡的bug是被我和herobrine入侵了,哈哈



風之痕一皮皮傭


本人自己研究過並嘗試開發過獨立遊戲,對於遊戲中bug,其實簡單的說,就是在編寫遊戲代碼的過程中,造成了失誤或者是粗心考慮不周,導致一些牆體穿插,無遮擋物,人體變形等等一系列的不正常邏輯行為,統稱為遊戲bug。


而這種遊戲中長見的bug,是可以修復的,但是需要逐一解決,需要在代碼的世界中逐一排查並修復,是個技術活。

這也是為什麼,許多國內的遊戲開發商,開發出一個遊戲後,需要限定內測一批玩家,求得激活碼,才可以進入遊戲體驗。而不是一開始就正版發行。


要知道,一個遊戲的好壞,除了題材,玩法,邏輯,和互通性等元素之外。遊戲體驗更為重要,直接影響到玩家心目中的評分。如果說一塊遊戲因為大量bug的存在,不僅嚴重影響體驗感,還會被玩家各種噴,極度影響正式發佈後的效果。

當然,即使國內知名的遊戲大公司,在經過層層核查和玩家體驗後,依然有不少bug會浮出水面,就好比一個優秀的人,始終有不足的缺陷。一句話,永遠沒有完美的遊戲,bug必定存在。



相信遊戲中經常遇到外掛現象吧,知道外掛是如何攻破遊戲防線的嗎?就是利用遊戲的bug,明確的說這是更深層次的,遊戲代碼不完善而產生的bug,因為代碼其實就是一種語言,而語言的嚴謹性永遠不會完美,必有漏洞,以上所屬均是bug的由來。


不知道讀友們怎麼認為呢?(謝謝大家觀看,別忘記關注一下哦!)


逍遙白帝


很多都是疏忽大意,測試時不全面。

以上古卷軸5的幾個bug為例子:

一,恢復藥水bug,偷懶,代碼直接複製粘貼,卻沒有把被複制的模板的特有數據給修改。

非常出名的bug,五分鐘可以讓你脫坑,因為五分鐘你就無敵了。

遊戲中有鍊金這個萬能的生活職業,可以製造各種功能的藥水,包括加攻擊的,加抗性的,加魔法效果等等。

復原術藥水就是強化恢復系魔法的藥水,按照描述,本來應該只強化恢復系魔法,比如驅散亡靈,加血等魔法的。可是當你嗑藥之後,卻發現不止恢復系魔法加強了,連身上的裝備的附魔效果也加強了。

其中一個裝備附魔效果是加強制造鍊金藥水時的藥效。

所以復原術藥水可以加強鍊金,鍊金可以做出更高的復原術藥水,無限循環下來,數據會以指數級增加。。。。然後遊戲索然無味。

bug的原因就是,大部分盔甲附魔居然都是恢復系魔法,包括加強單手,雙手,弓箭傷害的附魔,絕大部分降低魔法消耗的附魔,加血的附魔等等。

這個下載一個上古卷軸5的官方mod工具ck,打開遊戲文件skyrim.esm就能看到了。ck在stean的工具裡可以下載。

造成這個bug的原因我推測就是,程序員在做附魔的效果的時候,是批量化的以一個模板複製出足夠多的目標,然後一個一個修改。而模板就是一個恢復系魔法的效果——附魔效果(ench effect)和魔法效果(spell effect)同類,修改一些就可以互相替代的。

二,強大的吸血鬼和死靈法師perk的bug。技能的效果的限制條件沒有設置完整,導致吸血鬼這個例外居然可以享受恢復系魔法的perk的額外福利!

原版遊戲中,吸血鬼很強大,因為點亮恢復系的死靈法師 perk之後,吸血鬼會享受到更強大的buff加成,這個數值是25% 。諷刺的是死靈法師perk的描述包含兩個單詞against undead。

遊戲中很變態的一個buff叫做魔法吸收,有概率讓敵人的攻擊魔法無效,並吸收點轉化為mp,所有種族正常情況下可以獲得80%的魔法吸收,只有布萊頓種族由於有每天使用一次的龍皮技能,所以可以做飯100%魔吸。可是通過死靈法師perk加成的吸血鬼卻可以享受到100%的魔吸,80%*125%=100%。也就是吸血鬼可以無視99.9%的魔法,毒藥,龍吼,甚至可以在岩漿裡行走——因為岩漿的設定就是魔法攻擊。

遊戲的另一個設定是,玩家的抗性無法達到100%,這也突出了吸血鬼的強大,畢竟布萊頓每天只能有60秒。

造成這個bug的原因是什麼呢?

1.上古卷軸5裡的所有魔法都是一個模板改出來的,對敵魔法和自己加的buff沒本質區別,只是限定的釋放目標不同而已,特殊一點的就是,裝備附魔和很多buff在本質上也是等於自己對自己釋放的魔法。

2.死靈法師perk的描述是對抗不死族的時候魔法效果加強,實際魔法效果是增加自己釋放的魔法的效果25%,目標限定是不死族。

我們粗略的看看2裡的描述和實際效果,似乎這樣就沒問題了,遊戲實際也就是這樣的。

但是我們再看看1裡的東西,自己對自己的buff也是自己釋放出去的魔法,所以當自己是吸血鬼的時候,又會怎麼樣呢?會出現bug。

上古卷軸5的bug數不勝數,以上只是著名bug裡中的2個而已。

大型遊戲複雜,邏輯關係和腳本多,所以衝突也多,疏忽也多,一個不小心,bug就出現了,有些還會直接讓遊戲崩潰。


不可名狀之玲


遊戲都是程序員一點點寫出來的,所以遊戲出的bug必然跟他們有關

1.程序代碼有漏洞

2.測試的時候不全面,導致bug無法反饋到程序員那裡,bug也就一直存在

以上兩點基本上是遊戲出bug的主要原因,至於bug會不會修復,得看這個bug的影響有多大,對於涉及金錢或者日常必要功能如交易、組隊等,像DNF廣西三區的“複製門”,雲冪卡金幣,卡喇叭等,會第一時間修復,其他的一些小bug看官方心情,比如某個建築物穿模了。

還有這種,估計官方不會修復😂:


呂不歸


BUG專指電腦系統或者是系統缺陷,而遊戲裡面的bug就是遊戲裡面的系統缺陷產生的漏洞。
bug一詞原本的意思其實是蟲子或者是臭蟲,那為什麼現在這一詞被稱為是電腦漏洞呢?原來,第一代的計算機是由許多龐大且昂貴的真空管組成,並利用大量的電力來使真空管發光。可能正是由於計算機運行產生的光和熱,引得一隻小蟲子鑽進了一支真空管內,導致整個計算機無法工作。研究人員費了半天時間,總算髮現原因所在,把這隻小蟲子從真空管中取出後,計算機又恢復正常。後來,Bug這個名詞就沿用下來,表示電腦系統或程序中隱藏的錯誤、缺陷、漏洞或問題。


其實現在大部分都採用成熟的遊戲引擎。出現最多bug出現最多的bug一般都是邏輯上的錯誤和因為環境造成的bug。如果說任務走不下去,一般很多都是邏輯上的錯誤。而對於那些走著忽然之間就掛了,還有明明打到裝備卻過會兒就沒有啦,這一般都是網絡傳輸錯誤或者是服務器跟不上,處理不了那麼多請求造成的。
如果喜歡我的回答可以點個關注,以後經常會有優質回答,提供給大家。


電玩說


遊戲中出現BUG,有多項原因。我還是是聽一個程序猿舍友曾經天天講得,我也就聽一些我們普通人能夠理解的大白話,職業詞彙說出來我也不懂,大概有這麼幾回事:有可能是程序員的錯誤代碼,程序員代碼寫錯了那自然肯定會出問題。代碼這個東西,就像是機器上的零件,嗯,差不多。修復代碼就像給一個出現問題了的東西重新修復。

聽說寫外掛就是這樣的,用CE鑽空子我還有點了解。這東西一開始主要是修改數據,我之前就用CE修改過賽爾號,然後回到曾經,弄了一些曾經絕版的活動。使用難度也不是太難,先搜索內存,然後找到基址(看教的視頻基址,那個對於我這個小白是什麼都不懂),接著再修改下一下數值。一開始是各種浪,刷什麼“龍族金幣”(遊戲道具)那個爽啊。第一次感覺用輔助道具鑽遊戲BUG的空子是真的爽。



弱網環境處理,網絡質量較差導致丟包和延遲。意思就是卡的時候就容易出BUG,這個我舉一個例子大家就清楚了:在穿越火線手遊,曾經最常用卡BUG的方法就是“斷網重連”,這個卡過這類BUG的玩家應該深有體會。看過此類卡BUG的視頻也多多少少見過,容易上手。我在手遊剛出來的時候就用這一招玩藏貓貓,一局各種BUG,卡進箱子、牆壁,瞬間斷網一下就有開局這樣的效果。雖然說不上百試百靈,但是成功率不低。因為跟不知道什麼時候在一個拐角會卡進去,固定的點不多。但是新的跳跳樂這招好用。

bug測試工程師他只是一個“攻城獅”,城外的人想進去(找各種遊戲BUG的玩家),他是一個遊戲工作者來尋找BUG的。而我們這些遊戲玩家,是從快樂中發現BUG,並且去操縱它、駕馭它。BUG對於他們來說是敵人,而對於我們是朋友。

總之,只要是個遊戲,它並不是100%都是沒有BUG的,只是沒有被人發現而已。想想當時我玩過的所有類型的遊戲都經歷過遊戲出現BUG然後瘋狂佔便宜,沒有不透風的牆。不管是回合制遊戲還是射擊遊戲、動作遊戲,它都有BUG,我一開始從沒想到過反恐精英OL有BUG,穿越火線BUG倒是不少(不是黑騰訊,的確它的BUG多,但是騰訊的修復能力強啊)。不像蛋拐的一個“三斧兩炮”修復了多少年?手機上還修復快一點,電腦上有的BUG重新修復一下不知道的花多長時間。BUG是什麼?我覺得BUG存在的意義很大,只有發現BUG,技術才能提升。我蛋拐就是靠著這些“騷操作”玩到至今,沒錢,韭菜黨就是有技術,遲早刷幾個號能出。不會卡BUG,我認為在蛋拐就是小白進階高手的必備技能,槍沒有可以,但是能力得有。而這些個BUG正是拉近差距的必備因素。


雪碧說賽爾號


嗯,遊戲的BUG是怎麼來的。我們通常說,世界上只有兩種軟件,一種是沒人用的軟件,一種是被人罵的軟件,其中被人罵的很重要的一個原因就是存在BUG。

從嚴重程度來講,BUG根據其嚴重程度分為阻斷,嚴重,一般,建議級。所謂的阻斷級就是無法執行的BUG,例如接收整型的參數你傳一個字符串進去,自然就無法執行了,這類BUG通常是最容易被發現的,因為最明顯的編譯都不會通過,有些單元測試就可以知道問題的所在了;所謂嚴重級就是影響程序正常的BUG,我們通常遇到的都是這類BUG,因為其在一般運行狀態下或者程序員比較一根筋的邏輯下,通常不會出錯,但是面對大量用戶,面對不同環境的條件下,這類BUG就會爆出來;所謂一般就是不影響正常使用的BUG,這類BUG通常在UI層,比如職務寫成了植物;所謂建議級就是相對於當前的算法,有更好的處理方式的BUG,比如受限於當時的技術或者程序員的能力,有些算法比較耗時間,那麼有更好的算法可以更高效,其實這也算一個BUG,姑且稱之為建議級別的吧。

根據BUG重現的頻率我們又會把BUG分為常現,易重現,偶然重現,不易重現,不重現類型。所有的BUG都是被發現的,這個不難理解,不被發現的Bug那就不是BUG了。根據BUG出現的原因,通常它們有些很容易就被發現,有些偶然會出現,有些是不容易被發現,有些是就是比挨雷劈還要小概率的不重現。各舉個例子吧,程序員把性別寫成姓別,你只要不改,那這個BUG就在那裡,所以這個BUG就是常現。還有一類BUG,是在某種特定條件下才重現的,這種條件比較經常,那就是偶然重現。比如驗證身份證,如果程序員沒考慮到身份證最後一位有X的情況,那麼就是易重現的BUG。還有一類BUG是在比較苛刻的條件下才出現的BUG,比如整型有個長度限制,如果你存款大於了這個值那麼才能出現這個BUG,前幾天看過一個新聞貌似就是這樣。還有一類BUG是他妹的就不重現,這類BUG出現的條件一般都是極度具有偶然性的,幾乎不重現的,怎麼測都不重現的,那對於這類BUG只能通過BUG出現的結果,分析其原因,然後努力創造這種條件才能把這個BUG揪出來了。

至於原因,那就多了,人為因素,環境因素等等。好累,準備吃飯了,不想寫了。說說遊戲的BUG吧,其實,現在遊戲大部分採用成熟的遊戲引擎,出現最多的BUG主要是邏輯錯誤和因為環境造成的BUG。如任務走不下去,很多原因是邏輯錯誤。而對於那種所謂走著走著掛了,明明打到裝備,過會沒了,這一般都是網絡傳輸錯誤或者服務器性能跟不上,處理不了那麼多請求造成的。當然,不要忘了了最大的BUG,回檔。。。。這個說白了就是數據壞了,服務器重新還原了數據而已。


分享到:


相關文章: