於遊戲開發者會議「CEDEC 2024」舉辦期間,任天堂開發團隊舉辦了「《
薩爾達傳說 王國之淚》打造地圖與 QA ~通天術的背後~」講座,講述貫徹作品的功能與效率化的重要性。
本次講座登場主持的是在任天堂的企劃製作部擔任 QA 工程的大礒琢磨,負責環境程式設計的朝倉淳,以及負責地形領銜美術的竹原學。本次講座以「通天術」為主題,只要是玩過本作的玩家就一定會時常用到的這項功能,三位演講者將分別介紹在本作開發時究竟是如何進展的呢?
-
通天術是如何誕生的呢?
講座首先由大礒進行通天術的講解。
所謂通天術,指的是在《
薩爾達傳說 王國之淚》(以下簡稱《王國之淚》)登場的主角林克能夠使用的能力之一,只要一發動就能讓林克從現在的地點垂直往上穿越天花板,並直接爬到天花板上。雖然在林克頭頂的垂直空間為非安穩空間的話就無法使用,但是在具有厚度的天花板,或是洞窟內等地方都能使用。就算是在地底世界也能透過連結到地表的石柱進行垂直移動,直接回到地面世界。
這個功能一見之下很容易產生問題或是 BUG,讓人覺得要加入遊戲中很困難。但實際上,很簡單的就製作出來了。而能夠完成通天術的理由,據說是三人各自以別的目的推動的工程促成的。那麼,三人各自做了什麼嘗試呢?
一致的構造在應用上很有效率
核心部分放在最後再說明,首先由朝倉發表自身的嘗試。
身為環境程式設計師的他,在前作《曠野之息》主要負責讓世界中的物體能夠燃燒、通電和起風的「化學引擎」,以及可以長出自然的草的生成程序程式設計。
在《王國之淚》中,也著手開發了能讓世界中的花草與生物在正確地區出現的動植物生態系統管理程式、控制氣候和天氣的程式等。
而朝倉推動的就是「一致的存取地形資訊的方法,也就是提供體素資訊」。
在前作《曠野之息》的地形資訊,當然也是有各種起起伏伏的地形,但若是以世界整體來看的話可以將其概括為平面。也因為這樣,如果準備了單純的二次元平面資料的話,就可以把各地的座標對應的資訊整合匯集起來。
地形資訊中,包含了生物距離水或熔岩的距離還有森林密度等資料,遊戲內的程式隨時可以參照這些資料。依據這個功能就可以改變出現在森林或熔岩周邊的動物種類,或是也可以避免熔岩裡出現了動物,且在出現的同時直接被燒掉的窘境。
但是在《王國之淚》,由於追加了空島與洞窟等特殊的地形,讓整體世界擴張了垂直方向。也因此讓長期使用的二次元平面資料無法對應。
既然這樣,那就在複雜構造的場所使用專門的平面資料不就好了嗎?然而,若使用這項方法的話勢必會讓好幾層資料疊加在一起,也就會變成更容易釀造出 BUG 的溫床。以防萬一,朝倉便開始考量不透過特殊方式就能解決問題的方法。
最後得出的結果,就是將地形的表面粗略體素化,並且將資料匯集到這些體素。
為了將地形表面的資料匯集到體素,首先需要將玩家可以到達的地表全部找出來才行。為此,必須要模擬玩家的移動、並逐步追蹤。接著在可到達的地表按一定間隔進行 Raycast(取得光線照射到的座標的方式)的話,也許就能一次調查清楚。而且生成的地表面座標已經依照一定間隔排好的關係,也可以直接使用在體素的位置。
當然,如果要對遊戲內整個世界採取這個方式,龐大的計算是必要的。但如果使用專門針對幾何處理的 DCC 工具.Houdini 就可以高速進行。將幾何資料與材質屬性等匯入,並在 Houdini 內重現跟遊戲內同樣的地形衝突,就能以 Raycast 處理。如此一來就能找出玩家能夠到達的地表,並成功生成其體素。
因為這項計算處理十分快速,對全世界的地形處理只在一夜之間就能完成。因此在開發期間,對於每天都有變化的地形,體素的更新也能持續進行著。
而且因為體素裡的資料,也包含了地形的材質資料,所以能在 Houdini 進行計算。如此一來不論是洞窟或在建築物內,只要參照周圍的體素,就能夠處理所有的情況。
雖然這已經達到了當初的目的,但是體素化後的資料超越想像地能用在各式各樣的地方。由於比起在地形衝突使用 Raycast,對體素進行 Raycast 的方式快了十倍不止的關係,就算只是想大概參照周圍的地形也能方便使用。例如在處理音效等就能充分利用這個方法,連在洞窟內的聲音回音等效果也都能利用。
在畫面方面,想要用流體模擬器驅動霧氣特效時,計算流體用的網格也能利用。除此之外還有許多應用實例,能夠做到這個地步,正可以說是因為在最一開始就統一了構造。
如果減少回報與修正的負擔,遊戲就會好玩
接著換 QA 工程師的大礒進行發表。
接續前作繼續擔任 QA 的大礒,在本作有了新的發想。那就是「身為 QA 工程師只要追求無 BUG 的遊戲就對了嗎?」如果為了減少 BUG 的產生而砍掉有趣的功能,豈不是本末倒置了嗎?
但又說回來,能讓遊戲變得有趣的作業,是什麼樣的東西呢?那就是不斷地重複「將點子試作出來,實際確認好不好玩」這樣的循環;而這也跟 QA 的作業相像。去除掉產生 BUG 的原因後,親自確認有沒有徹底解決。不斷重複這樣的作業確保遊戲品質越來越好。也就是說只要雙方不停地循環這些動作,BUG 就會變少,進而誕生出有趣的遊戲。
但是在這循環裡重要的,就是對 QA 工程師來說很常見,能讓製作與確認的工程效率化的除錯功能。不論是隨意生成敵人,或是直接傳送到地圖特定位置的方便功能,不僅限於除錯的時候,也能活用在遊戲製作中的各種場面。
在本作的除錯功能,也追加了顯示負責的難度設計師與美術的要素。有了這個小功能,在發現 BUG 的時候不只是能立刻知道要找哪個負責人,當難度設計師要向別的開發者說明新的事件等的時候也能活用。像這樣不僅限於除錯的主要功能,在開發上也陸陸續續加裝了能派上用場的功能。
此外也準備了針對除錯的功能。例如當電腦玩家發生遊戲崩潰的時候,應該都有看過一個錯誤報告的視窗跳出來對吧。本作的測試環境也有同樣的功能,當遊戲崩潰時,就會自動收集各種資料,並匯集成一份報告。再加上也有手動追加備註資料的功能,如果是已經回報過的 BUG 就能迴避遊戲崩潰繼續進行作業。
收到錯誤報告的人,也能根據回報資料有效率地調查、修正,還可以從統計資料知道 BUG 是在什麼時候開始發生,又或是在哪個區域發生的。
而這些功能也能活躍在在地化用的工具上,像是為了能讓人清楚分辨應該翻譯的單字是出現在哪個場面,所以有自動拍攝截圖的功能。並且跟可以確認劇本流程圖的工具等連動,提高翻譯品質與讓作業更加效率化。
感受到除錯作業提高效率的大礒,甚至考慮想要將這個功能開放給測試人員。但是要能完全使用這些功能的話,必須要讓測試人員與開發團隊擁有同等的權限與共享資訊。而且若是改成對開發者來說越是好用的東西,對測試人員來說就會越難操作,他也察覺到了這樣兩難的情況。
那麼,只要消除掉彼此間的差異就好了吧。於是大礒提出了這項改革,往後讓測試人員與開發團隊擁有相同的權限、共享同樣的資訊,並且整理了能夠使用同樣工具的環境。接著打造能夠適當使用工具的實踐環境,且配合連同付費認證的工具 —— 也就是上述提到的 Houdini 與管理版本的工具等,一併提供給測試人員。
採取這樣的方式之後,讓測試方能夠做到發現只在特定條件出現的稀有 BUG,甚至連八爪怪章在每一種攻擊模式下的傷害量等遊戲平衡,都可以提出回報。
大礒最後提到,以結果來說,在有限的時間內將遊戲打磨得更加完善完美,這些都是非常有用的方式,不僅於此,讓開發人員與測試人員擁有團隊意識這點也具意義。並不是對立,而是能夠從同樣的方向面對作品,致力於製作得到的成果才能變得豐碩。
找出只有人力才能處理的部分,其他全都自動化
接著,最後來到地形領銜美術的竹原發表。
在前作監修與製作全體建築物,到了本作負責地形美術的整體監修與製作的他,摸索了能夠一面確保地圖品質一面讓作業效率化的手法。
當然,如果可以將各種情況都效率化的話自然是最好的,但身為美術的責任就是不能犧牲品質。不過《王國之淚》為了要給玩家全新的體驗,必定會用上數不盡的美術資源。遊戲世界的地面面積比起前作多了 2.5 倍,如果還照著以前的方式那麼人力不足的問題必定會發生。然而,如果貿然增加人手又會變得難以控管品質。為了對應如此大量作業的新體制、工具、工作流程都是必要的。
其中最要求效率的就是洞窟了。藏在海拉魯世界多達 200 個以上,且每個都有附加各種不同玩法的洞窟,為了讓玩家有良好的遊戲體驗,重複試錯更是必要的。是個不斷進行檢討、製作然後體驗的循環。但是如果在還沒摸清就進行自動化的話,失去重要東西的可能性也會隨之提高。於是,首先要思考的就是「不能自動化的東西是什麼」。
首先無法割捨的,便是創造玩法的難度設計,同時也是遊戲體驗的核心部分。接著,是伴隨難度設計而配置資源素材的作業,也就是小道具跟敵人據點配置等。加上洞窟內會出現的美術設計,也希望能讓美術可以控制。簡言之,能夠自動化的作業,就只有跟玩法無關的部分。
遵循這個原則,跟程式一起討論如何將洞窟的工作流程最佳化。得到的結果就是「洞窟系統」。這個系統能夠控制不影響難度設計的裝飾部分,且能讓美術控制,經由程序程式生成。
在洞窟系統登場之後,變成能夠同時進行難度設計與裝飾的作業。如果是像以前直線型的工作流程,在前面的工程完成之前是很難進行其他作業的,所以光這部分就可以說是很大的進步。而雖然說是為了洞窟專用而誕生的系統,但回過神來也能利用在生成鐘乳石或空島地圖,作為工具來說的成效相當高。
而且,美術們的觀念也產生了變化。原本對手作業很執著的他們,也會開始提出自動化的點子。在實現了能不動到創意要素的自動化系統這件事之後,也能分清楚該保護的部分與不用保護的部分。
不過地形的除錯也是個難題。特別是確認克洛格的位置無法自動化,因為這是必須要人力親眼確認的作業。那麼,可以省略的部分在哪裡呢?那就是從現在地點前往目標的移動時間。
這部分就利用了開發基礎團隊製作的自動拍攝功能,製作了拍攝克洛格的系統。並且附加了直接傳送到照片地點的按鈕,以方便親眼確認。
而配置在地圖的資源素材要全部確認的話也是個很龐大的作業量,於是除了需要親眼確認的部分也都用工具自動化,並透過分享資訊避免其他人重複作業,讓作品進度能按照計畫前進。
衝突(地形碰撞判定)的確認也必須要自動化。如果地形有破洞的話,林克跟道具就有可能會從那邊掉落造成遊戲妨礙,是無論如何都需要消滅的錯誤。但是,要發現這樣的破洞不僅困難,地圖的規模還多了前作的 2.5 倍之大。雖然在專案初期便找了工程師商量,但一時並沒有找到好方法。
不過到了開發中期完成的,就是能夠標示破洞地點的「找洞工具」。效果如何實際用用看就能一目瞭然,有問題的破洞大多能靠這個方式簡單修正。只是其他對遊戲進行沒有什麼影響的破洞也找到了數千個,也煩惱過該拿這些洞怎麼辦。以結果來說,考量到成效的最後就是對這些洞的修正先置之不理。如果是安全的破洞,那也不會讓遊戲嚴重到無法進行。
就這樣,在把危險的破洞填補之後,海拉魯也迎來了一時的安寧……
-
結果,通天術到底是怎麼誕生的呢?
回顧前面的內容和說明雖然完全沒提到通天術的部分,終於在這裡回應開頭的話題。通天術的發想是在開發中期,全員在玩了遊戲確認感想的階段時提出的。探索完洞窟之後,大家幾乎都覺得要回到入口實在是太麻煩,解決這個問題的手段而誕生的就是通天術了。
這個點子,首先由朝倉提出的。通天術的終點,必須要是玩家可以到達的地點。朝倉也很快聯想到這可以活用體素化的資訊。
但還是有一個問題。那就是殘留在地形的那些衝突破洞,有可能會變得妨礙通天術。因為 Raycast 會進入那些小破洞,並產生體素。
也就是說,如果不把全部的破洞塞完,通天術就不可能實現。但是要把破洞塞起來,就必須要靠地形美術的手作業。如果不使用找洞工具跟 Houdini 的話,是不可能把破洞塞起來的。但是人力不夠。畢竟當初就是因為人力問題才把那些小破洞放置不管的。…… 不,等等,說起來使用 Houdini 的部隊,除了地形美術之外不是還有別人嗎?
最後也因為有方便使用的除錯工具之力,構築了測試員部隊尋找破洞後回報,地形美術再把破洞修正的作業流程。因此殘留在海拉魯各地的小破洞全都埋了起來,並終於實現了通天術。
像這樣,通天術便是由一致的構造,以及改善工作流程進而實現的能力。不過像這樣的案例在《王國之淚》開發過程多少都有發生過,只是規模問題或大或小。在本次介紹的通天術案例,也不過是開發故事的其中之一而已。大礒在最後總結,結束了本次講座。