在 2024 年針對遊戲開發者所舉辦的論壇「CEDEC 2024」裡,舉行了講座「把《
薩爾達傳說 王國之淚 》」的世界串連起來的技術 ~將天空、地面、地底以及製作都帶入無縫的領域~」。
在該講座裡,介紹了《
薩爾達傳說 王國之淚 》關於製作場景、無縫演出的製作過程及手法等內容。演講者為以下三位:
任天堂 企劃製作部 技術總監 堂田卓宏
任天堂 企劃製作部 程式總監 奧田貴洋
任天堂 企劃製作部 地形程式設計負責人 齋藤智久
在《曠野之息》裡,為了要以無縫技術來呈現出廣大的世界與實現高自由度的遊玩方式,首先選擇了必要的技術。舉例來說「為了呈現出廣大的世界」使用了在多邊形繪製上具有優勢的延遲渲染技術,而「為了實現具備高自由度的動作」則選用了無論在任何狀況下,執行物理運算皆難以出現失誤的物理引擎。
因此製作團隊從想要實現的遊戲元素中開始反向思考,在選擇技術的過程中,開發團隊最重要的課題,便是「廣大的世界」與「無縫式的移動」。關於前者的部分,在《曠野之息》開發初期所舉行的腦力激盪會議中,很明顯的整個團隊著眼的是「以平面的手法來呈現的廣大世界」,為此從以區域設計的觀點而言,世界是平面的,也就是被視為二次元的設計。
此外這種想法也連帶使得無縫式移動的設計變得單純起來,就結果來說,《曠野之息》的區域是透過「處理遠處的物件時較為省略細節,而面對近處的物件時則繪製的較為精細」、「使重要的物件即使在遠處也能出現,精細的物件則只有在玩家靠近時才會出現」的細節層次(Level of Detail)技術,搭配上載入玩家的二次元(平面)移動資料的手法所呈現出來的。
為了實現想要實現的目標而選出了技術,同時也帶來了「無法實現」的問題。透過在區域裡採用二次元的資料載入技術,會產生什麼無法實現的問題呢?那就是「三次元的立體構造」。
換句話說,《曠野之息》是一款有著可以爬牆,或是以滑翔翼進行滑翔等玩法的 3D 動作遊戲,但若是玩家仔細觀察遊戲設計跟實裝內容,就會發現這是一款在二次元的限制下所開發出的遊戲。
相對而言《王國之淚》則是從開發初期的腦力激盪會議階段起,便開始思索擴展地面、天空、地底等垂直空間的想法。重要的是,開發團隊有了想要挑戰在《曠野之息》裡所無法實現的問題的想法。
此外《曠野之息》必須得根據 Wii U 的硬體規格來進行開發工作,但《王國之淚》則因為是 Switch 專屬的遊戲,在硬體上的限制也比較少。回想起當時情況的堂田表示「要如何將在《曠野之息》裡實現的二次元處理方式,擴展至三次元的領域呢?這便是《王國之淚》所面臨的具體性技術課題了」。
體現出三次元無縫式表現的「洞窟系統」
要將《王國之淚》化為三次元的設計,除了地面外還會存在空島、洞窟、地底等區域,其結果便是有必要在三次元的思維下重新思考有關資料的載入及細節層次等技術。
為此團隊首先所著眼的部分是,不僅有著地面甚至還有著牆壁跟天花板的洞窟。為了運用無縫技術繪製出身為三次元空間的洞窟,並實現使用資料載入及細節層次等技術,開發團隊開發出了一個全新的地形系統「洞窟系統」。
洞窟系統的特色
也介紹了洞窟系統內的資料載入及細節層次等技術
製作團隊意識到只要使用洞穴系統,便可以無縫地建構出一個大型的立體空間,因此便製作出一個大型洞穴。透過將其設置在地下,便能建構出一個與地面無縫連接的巨大區域。當開發團隊在摸索在這個廣大的空間下能夠實現何種玩法時,催生出在黑暗中的探索跟只有存在於地底的強敵展開戰鬥、載具之間的戰鬥等點子。
經過反覆測試,開發團隊得出的結論是,如果地下有一塊巨大的區域,會更容易打造出上述的玩法。若地下跟地面之間有著聯繫關係,探索發現與遊玩的循環便得以進一步擴大,並催生出透過在實際上交叉探索地面與地底的過程中,獲得有關兩地間提示的體驗。
地底的製作原則。地底是根據地面的資料為基礎製作出來的,更依此訂定了規則,
像在地面上凸起的地方會在地底呈現凹陷的狀態,而地面上有著祠堂的地方,在地底也會存在著儲存點
就連空島的製作,也使用了洞窟系統
為了以無縫方式來連接區域而重新打造的載入系統
《王國之淚》的世界除了擴展至三次元的製作方向外,還同時針對系統面重新打造出比起《曠野之息》能更為靈活載入物件的載入系統。其中一項便是能根據遊戲的 Flag 來靈活地替換物件的設計機制,被使用在村莊地形因遊戲進度而產生大幅度變化的情況下。
另外,在《曠野之息》裡會在進入大型迷宮時穿插載入畫面,但在《王國之淚》裡則準備了事先載入獨立區域資料的泛用處理機制,因此才得以實現以無縫方式進入獨立區域的設計。
另一方面,由於載入系統的演算法本身就是直接拿《曠野之息》裡的演算法來使用,因此要如何載入地底或天空的資料也成為了一種全新的挑戰。例如在身處於地底的情況下,由於位於離地面相當遠的深處,因此就不會有機會出現同時看到兩種場景的情況。
為此,開發團隊認為在地面時就只載入地面,在地底時就只載入地底的資料,這種方式較能呈現出帶有高密集度且廣大的世界,首先當玩家抵達一定深度時,便會釋放地面的資料,並存取地底的資料。
然而在第一次實裝作業時,因為釋放跟載入無法及時完成的緣故,導致玩家在墜落至地底的過程中畫面會暫時停止。雖然這已經足以證明地底與地面相互連接,並能夠直接從地面前往地底,但就以作為一個遊戲商品而言仍有不足,所以產生了必須得讓釋放與載入足以及時運行,好實現以無縫方式呈現的墜落演出。
而開發團隊則使用了四種方法來加以改善。第一種是「透過分析器進行可視化與處理作業的重新排序」,它會將成為處理瓶頸的耗時處理作業,分割為立即需要處理的部分和不需立即處理的部分,並將前者重新排序至不執行載入時的空閒時段,而後者則會被重新排序至之後再處理等。
透過像這樣的重新排序來解除處理上的瓶頸時,製作團隊注意到檔案本身經常無法及時載入的緣故,於是製作團隊開始思考「減少需載入的檔案數量」這樣的方法。
在以二次元為基礎的載入系統裡,會根據每個物件所設定的顯示距離來進行載入的動作,包含懸崖底下等處實際上看不到的物件也會進行載入。因此開發團隊在玩家有可能到達的複數地點設置了拍攝點,只要使用被判定為無法從該處看到的物件的拍攝資料,就能夠減少需載入的檔案數量。
另外開發團隊也著手進行「縮小需載入的檔案大小」的方法。比如說判斷模組中使用的材質的解析度是否合適,如果降低解析度沒有問題,則會自動降低模組解析度。
不過由於仍舊存在著即使使用上列三種手法,還是無法及時載入的案例,因此開發團隊這次則選擇在「提前進行載入」的方法上下了功夫。
具體來說,首先將所有進入地底時需要讀取的檔案列為清單。然後當玩家接近洞口時,盡可能在記憶體容許的範圍下載入那些清單檔案。
正因有像這樣經調整後的結果,在正式版本裡才得以實現進入地底時的無縫式移動。
那麼在天空世界時的載入情況又如何呢?由於在試作設置階段時的空島是屬於遊戲設計師仍在進行反覆嘗試的階段,因此採用的是「姑且置之不理」的政策。這是因為要是在空島的設計確定前就實裝讀取方式的話,那就不能把無法對應該讀取方式的創意加入至空島裡了。
因此,遊戲設計師利用《曠野之息》的載入系統不受限制地測試空島,並逐步縮減出篩選出空島真正所需物件的環境。其結果,就是在空島上設置了眾多的物件與機關,並整頓出具備如與主線故事有關的大型設施、充當空中移動時航點的小型設施,以及需從中摸索該如何抵達該處的地方等功能的設計內容。
依照那些功能,配合玩家的行動,只載入一座大型空島、若周遭有小型空島,則會在載入多個小型空島的資料後,將其資料暫存至記憶體中,而未載入的空島,則是透過配置情報顯示出於事前繪製好細節層次的樣本資料等方針來加以進行實裝。透過以這樣的方式來定義單位,並於事前賦予定位的方法,就能將移除空島並替換為其他空島的過程予以高速化。
在講座的最後,還提及了「為了以無縫方式串連起世界所需的方法」跟「為實現無縫製作而改善的工作流程」等話題。
堂田在最後表示,在遊玩《王國之淚》的過程中若存在著俯瞰著世界的情景,當然也有著只專注於眼前事物的場景,透過反覆切換這些場景,便會令玩家的腦海中建構出一個遊戲世界。
而在遊戲開發的過程中,講者提到製作團隊有時會以製作週期這樣的長時間單位思考最佳化,也有時候會以 1/1000 秒這樣的極短時間單位來思考,或者是若以整個團隊的反覆運行週期為考量的話,則也有可能著眼於多邊形單位上,並在最後以「《王國之淚》的開發工作需要在宏觀和微觀的視角之間來回切換,這對想以無縫方式實裝廣大的區域來說是必要的」為本次的講座作出了總結。