與其他開放世界遊戲相比,《荒野之息》的Bug之少令人驚訝。不信?我們看看隔壁的《寶可夢朱紫》的各種哭笑不得Bug。
更不用說曾被給予厚望的《電馭叛客2077》中那個引發玩家熱議的黑屏BUG。
那麼,為什麼《荒野之息》的Bug如此之少?比起籠統的"多年精心開發"或者縹緲的"日本的精益求精匠人精神",真正的答案藏在2017年8月31日的一次演講中。
這一天是日本最大的遊戲開發者技術交流會CEDEC演講,任天堂的丸子良太和大礒琢磨發表了題為「《薩爾達傳說:荒野之息》的QA:最大化遊戲樂趣的工具和Debug的介紹」的演講。
本文根據IGN的《「ゼルダの伝説 BotW」にバグが少ない理由》和《【CEDEC2017】「ゼルダの伝説」作成を裏から支えたエンジニアたち》的新聞稿進行整理和分析而成,特此鳴謝。
QA專業領域特別感謝QA業內人士逐煙和木菻的指正,謝謝!
(備註:原文的デバッグ本文翻譯為調試)
演講者介紹
首先我們介紹下登台演講者。
>
丸子良太
在非遊戲行業任職後,2009年加入任天堂。負責開發和支持遊戲開發工具,包括本地化、序列控制和關卡編輯器。
>
大礒琢磨
早稻田大學畢業後,加入任天堂後參與了內部項目的開發。在《薩爾達傳說:荒野之息》擔任QA工程師。
開發早期就進行調試
新聞稿中沒有記錄最開始的演講者是誰,但根據前後文推理應該是丸子先生。
在進行《荒野之息》的QA工作前,團隊認識到品質不僅僅包括沒有Bug,還包括遊戲的趣味性,這是QA團隊的方針。
QA的方針可能是指,如果一個玩法有趣但容易出現Bug,解決方法有①經過調試在保證玩法的前提下解決Bug,或者②乾脆刪掉玩法,顯然《荒野之息》團隊選擇的是前面這一種。
為了增強趣味性,團隊將開發周期定為儘可能多的循環,將提供和維護這種環境作為QA的職責。
這裡的循環可能是指下圖所示,開發遊戲的玩法並確認玩法是否有趣的開發循環。
此外,本作是開放世界遊戲,預計是一個需要處理多樣且龐大的數據的大型項目。因此,團隊需要根據遊戲定製開發工具來提高開發效率。
為了實現人員、數據和工具的連接,並使其易於使用,開發人員將編輯數據、工具、需求和操作者的各種數據進行資料庫化,數據生成時會錄入資料庫,之後也會定期錄入資料庫。
當工作時,如果數據、人員和工具之間沒有建立有效連接,那麼在尋找這些工作目標時會遇到困難,這將浪費設計師寶貴的創作時間。
為了解決這個問題,團隊開發了開發工具"Zelda Editor"(參見《
任天堂的開放世界工業化流程——以薩爾達為例
》)。通過它,開發人員能夠減少尋找工作目標的時間,提高開發效率。
為了全面了解整個遊戲並提高品質,團隊設計了可以讓任何人查詢資料庫的機制。創建一個可視化的世界圖表來顯示與場景相關的資訊,並設置了場景需求瀏覽器,通過圖表和列表的形式來了解整體工作的進度。
下圖是世界圖表(左側)和資料庫瀏覽器(右側)的介紹,兩種方法優勢互補。
比如世界圖表的優勢是:
可以知道關於場地的資訊
把握神廟、資源等元素在地圖上的密度和分布總量
分享數據的整體和平衡
支撐策劃想法的論據
這裡結合其他演講進行分析,世界圖表可能是指,其他演講提到的根據測試人員行走軌跡對開放世界進行調整的一種模式。
資料庫瀏覽器的優勢則是:
適合呈現和地圖配置無關的數據
數值型的數據
以管理項目為目的的數據
自動檢查處理的任務化
演講中舉了一個具體例子,在世界圖表的「Game Over View」中記錄了經常出現Bug的位置,可以在這些位置設置自動保存,來防止崩潰對開發的影響。
此外資料庫瀏覽器還設置了數據共享功能。可以分享和重複使用查詢。
在這裡,不僅可以分享其他人創建的查詢,還可以讓非程式設計師也能夠在開發中使用,自動將有問題的數據轉為需求的功能。通過這些工具的協作,能夠更頻繁地進行提高遊戲趣味性的創作循環。
開發早期就進行調試
然後是大礒先生的演講。
大礒先生是2010年加入任天堂的QA工程師,而《荒野之息》是他首次參與的《薩爾達傳說》系列遊戲。
之前,他在《nintendogs cats》(下圖)和《New超級瑪利歐兄弟U》等遊戲中擔任開發系統部分和開發環境的程式設計師。
換句話說,大礒先生並非是專業的QA工程師。
但在《荒野之息》項目中,為了確保這個遊戲順利完成,大礒先生自願接受了QA工程師這個重擔,從開發早期就參與遊戲開發。
製作人青沼英二曾提出「重新審視《薩爾達傳說》系列中那些理所當然的設定」的開發理念,而大礒先生也是從QA的角度去審視「那些看似理所當然的開發流程」的成員之一。
迄今為止,《薩爾達傳說》系列通常是在開發後期時才進行調試。
改變這種方式的契機是在開發早期進行的"遊戲趣味性驗證階段",也就是前文《
任天堂的開放世界工業化流程——以薩爾達為例
》中的原型階段,可能包括最初的2D版薩爾達原型(下圖)。
也包括下圖最左側的粗模階段。
當時,整個團隊的約80人成員花了兩天時間從頭玩到尾,驗證玩法是否實現了他們的預期。
結果是:儘管預期的玩法得到了實現,但測試工作非常困難。由於測試中發生了各種各樣的Bug,遊戲短短兩天內就崩潰了617次。
據大礒先生說,團隊內部甚至形成了"經常保存"的口頭禪。
大礒認為:「這樣下去不行。」
他意識到,如果像往常一樣在後期才進行調試,即使再努力也無法消除bug。因此,他提出了從開發早期就開始調試的建議。
把調試分為兩個階段
但是「開發初期就開始調試」遭到很多人的反對,他們認為如果有時間去調試,不如去推進實際的開發工作。
任天堂內部有員工認為,由於不確定開發過程中的bug是否會留在最終產品中,同時進行開發和調試會浪費時間。
這句話也很有道理,比如《荒野之息》早期計劃製作小人國,但最終取消了。
然而,大礒先生堅持認為應該將"早期調試"和"最後階段調試"分開進行考慮。因為bug並非只影響玩家的遊戲體驗,還影響了製作團隊的開發效率。
不僅測試這樣驗證玩法趣味性的工作,由於大量bug的存在導致開發效率明顯下降,在開發的各個環節中,bug也會對開發產生負面影響。
從早期開始調試的目的不僅僅是為了在成品中消除bug,更重要的是提高開發效率。此外,遊戲能以良好狀態進入最終階段調試,可以說一舉多得。
在早期調試階段,團隊並不需要修復所有bug,而是重點關注那些對開發造成困擾的bug。
修復困擾程式設計師的bug,以及其他人希望修復的bug,對於那些由於時間關係或原因不明難以調試的bug暫時擱置;對於當前階段尚未對開發造成困擾的bug,在開發早期也不予修復。
發現bug後能夠輕鬆報告的機制
那麼,為什麼《薩爾達傳說》系列在過去一直沒有採取大礒先生提出的早期調試方法,卻幾乎沒有bug呢?
大礒先生表示,的確有些遊戲在最後階段才需要進行調試。但是,《荒野之息》這樣的開放世界遊戲,在數據的種類和數量上都是一個比以往作品更加龐大的大規模遊戲項目。
在這種擁有龐大數據量的遊戲中,連自己的bug都很難發現,這些沒發現的bug有時也會給其他工作人員帶來麻煩。
正因為如此,大礒先生提出了整個團隊應該提高質量管理意識,並設計一旦發現就能夠輕鬆報告bug的機制。
在過去的《薩爾達傳說》系列中,Bug主要由測試人員報告,而遊戲開發發布"需求"(Task)和"Bug"在不同的工具中進行管理。然而,在像《荒野之息》這樣由多個不同地區的團隊共同開發體制下,這樣分開管理的開發流程並不理想。
(備註:《荒野之息》有任天堂外部團隊Monolithsoft參與開發)
為了避免"因為是Bug所以以後再處理"的想法,他們將Bug和需求的管理工具進行整合,並從一開始就報告了所有的Bug並設置了優先級。為了提高Debug的意識,除了引入系統外,還舉行了團隊全體的說明會。
下圖為混合了需求和Bug的Zelda Editor開發工具,這個開發工具在《
任天堂的開放世界工業化流程——以薩爾達為例
》有介紹,有興趣可以閱讀。
我們看一下這個管理工具呈現的資訊:
其中的A級Bug是「木製寶箱燃燒會崩潰」,影響遊戲運行的Bug需要儘快修理。而B級Bug是「不知什麼時候開始滑翔傘的飛向距離變了」,不影響運行的可以暫緩處理。後面的參數是Bug的提出者和委託者。
為了減少Bug的產生,他們引入了在遊戲中檢測Bug的機制"ZELDA_ERROR"。開發者在代碼中對可預見的問題打了6000多個「埋點」,如果觸發問題,那麼這個系統可以在發現Bug時輕鬆地進行報告。
下圖是一個"ZELDA_ERROR"的案例,開發人員可以很輕鬆地提交「砍倒樹木但沒有樹樁模型」的Bug。
由於只需點擊"提交"就可以輕鬆地報告Bug,即使很忙也不會增加工作負擔,此外,玩家的坐標、場景切換、事件和迷宮等資訊會自動插入報告中,。減少了Bug報告者的工作量。
此外,Bug報告者不需要確認Bug是否已修復,這也是一個重要的因素,這樣就避免了"確認Bug是否修復很麻煩,那我不報告了"的情況。
這個設計很人性化,「Bug報告者需要確認Bug是否修復」這個機制看似能督促Bug修復,但也為開發者增加了額外工作量,難以得到開發人員的響應。
不僅如此,QA團隊使用熱重載來直接修正錯誤的數據,可以減少程序更新時停止和重新啟動所帶來的風險,從而減少因此導致的錯誤或異常。
結語
通過在開發早期排除影響開發的Bug,可以提高開發效率,同時還能以良好的狀態開始最終階段的調試。
下圖是《薩爾達傳說》系列隨開發時間(橫軸)和Bug報告數量(縱軸)的對比。
左側為過去的《薩爾達傳說》遊戲,可以看出遊戲前期完全不進行Debug,臨近E3展和最後階段緊急Debug,而本作全程都在做Debug,曲線相對平滑許多。
而且,Bug的報告者比例中,專職測試人員(紅色部分)報告的Bug是最少的,其次是自動測試(AI測試,綠色部分),大部分Bug由開發成員(藍色部分)報告,而且比例不斷增多。
由於QA團隊的努力,這讓《荒野之息》成為了開放世界遊戲工業化的優秀案例。