從《塞爾達》說開去:構建遊戲中的生態系統


3樓貓 發佈時間:2023-05-12 11:07:35 作者:Bramasole Language

太長不看 - 視頻版鏈接:
《薩爾達傳說》是遊戲史皇冠上最璀璨的明珠,在數十載的歲月中,一部又一部的《薩爾達傳說》定義了一個又一個傳奇。在《王國之淚》的發售之際,我也階段性完成了學校的期末項目:這個項目起源於《塞爾達》設計師們對《曠野之息》於開放世界的一次分享,是我對於遊戲未來的一次不切實際的腦洞。
或許每個人都想過,如果我們能夠肆意妄為地改變遊戲世界本身,可以讓森林變成沙漠,讓雪山融水形成湖泊,讓敵人和敵人之間產生捕食關係,那麼遊戲又會將我們的想象力和創造力帶往何方?這份自由改變遊戲世界的妄想,便是我此次想要分享的實驗——構建遊戲中的生態系統

《曠野之息》 - 緣起於物理化學

在2017年的遊戲開發者大會上,《曠野之息》的設計師藤林秀麿分享了他們是如何將現實世界的物理系統和化學系統植入於這一代的《薩爾達傳說》的。所有的一切被抽象為一個簡單的公式:動作冒險遊戲 = 碰撞 + 移動 + 狀態,其中碰撞和移動屬於物理系統,而狀態則屬於化學系統。
我們可以很直觀地發現,林克的時間停止能力是對於物理學中“力”這一概念的運用,而磁力感應器則是對於“磁力”的遊戲化詮釋。這些由希卡之石提供的能力來源於現實生活,但是卻不是將現實中的物理學生搬硬套進遊戲世界中。遊戲所追求的從來都不是真實感,而是超越真實的玩樂。藤林等人在分享中解釋道:我們在《塞爾達》中構建的物理系統是一種作弊,它給予了林克超人般的能力,雖然在各種方面都欺騙了現實的物理學,但只要好玩一切就足夠了。
這次分享深深地震撼了我,也給予了我很多思考。我驚歎於《塞爾達》製作組將現實中的物理化學抽絲剝繭,整合成簡單的公式並運用到遊戲中。同樣的,我也吃驚於“系統性遊戲”基於這些簡單的公式所產生的無限種可能性。《曠野之息》不再是一個由有限的情況組成的遊戲,它變成了一個基於物理化學規則的現實世界,但是,更加好玩。
1 / 6
化學引擎的規則
由此,我也開始思考:既然遊戲中可以存在物理和化學系統,那麼“理化生”中的生物是不是也能作為一種系統被放到遊戲中呢?如果開放世界的世界本身不是固定的形態,而是可以被玩家改變的生態系統,豈不是一件很有趣的事情嗎?
一想到這個點子,我就立馬找到了教授Daniel Shiffman,沒錯,就是著名的程序設計書籍《代碼本色 The Nature of Code》的作者和 youtube 上的 Coding Training 博主,也是我正在上的The Nature of Code 同名課程的老師。他作為用程序模擬現實自然環境的帶頭人,在課堂上講述了很多用代碼簡化和重現現實世界自然效果案例,從力學引擎和軟體模擬,到細胞自動機 (Cellular Automata) 和遺傳算法 (Genetic Algorithms) 。
他也覺得這個將生態系統放到遊戲世界的想法很有趣,於是建議說:這個系統在短時間內很難實現,但我覺得,不如先對現實世界的生態系統進行調研,寫出屬於遊戲的生態公式;我希望你能給出的成果是一個合理的公式,和幾種基於這個公式所湧現的遊戲片段,對於現階段這就足夠了。

生態系統 - 從現實到遊戲

那麼,是什麼組成了現實世界的生態系統呢?
讓我們看看這張圖示:太陽光是能量循環的源頭,持續向生物提供著能量。生產者接受了太陽光,通過光合作用將無機物變成有機物,開啟了生物間的能量循環。消費者以生產者和異類的消費者為食,加速了能量循環的速度。在生產者和消費者死亡後,分解者通過將有機物再次轉換成無機物,為生產者提供了光合作用的原料。於是,生態系統在能量循環中誕生了。
在生態系統中,消費者因為捕食關係形成了食物鏈,而數條食物鏈又形成了食物網。
根據水元素的有無,生態系統可以被分為水系和土系兩種,而其中又誕生了數個細分。
與此同時,溫度、溼度和風也會對生態系統造成顯著的影響。
我們可以看到,影響生態系統的要素非常之多,而且要素和要素之間也具有相互作用力。在這種情況下,歸納出一個大一統的公式實屬不易。於是,我將公式拆分成了兩個,分別對應生物學方向和地理學方向。
bio-side equation

bio-side equation

這是生物學方向的公式:生態系統 = 太陽光 + 生命。這個公式有兩個規則。其一,太陽光作為能量來源,持續不斷向生命提供生存能量;其二,生命和生命之間通過食物鏈關係傳遞生存能量。遊戲世界的每個生命體都會被全局的太陽光數值影響,生產者最為明顯;如果遊戲中的太陽消失進入永夜的話,樹木都會枯萎死亡,而因為食物鏈的關係,所有其餘的生命也都將消失殆盡。
接下來,考慮進地理對生態系統的影響,我構造了地理學方向的公式:生態系統 = 風 + 水 + 大地。
geo-side equation

geo-side equation

同樣的,這個公式也具有兩點需要展開說明。首先,地表太陽光的分佈不均形成氣壓帶和溫度帶,而溫度的差異和熱脹冷縮也進而形成了風。其次,風、水和大地之間兩兩相互影響,比如水流和狂風可以塑造大地和山脈的形狀,從海面吹來的風會為大地帶來暖溼氣流,形成宜居地帶。在曠野之息中,我們已經可以看到設計師對於溫度和風的應用,但是卻沒有更深入的風、水、大地的系統間互動。

實踐演示 - 基於公式的三種情景

那麼,以上就是我對於現實生態系統的抽象化表達了。雖然感覺如果要在遊戲中實現的話還有許多需要考慮的地方,但我也姑且試著運用這個公式做了幾個遊戲片段。
第一個展示的是太陽光和生命的互動。在這個場景中,雜草和樹木都是生產者,但卻是競爭關係,而兔子則是食物鏈中的消費者。當玩家砍伐樹木後,雜草會增長,而兔子的數量也會隨著食物的增加而變多。但是,在一段時間後,雜草被兔子吃完了,生產者消失,能量循環被破壞,最後兔子也不可避免地滅絕了。
第二個情景是溫度和風的互動。在白天時,大地的溫度比海洋的溫度高,所以風是從右向左吹;但是在晚上,海面比地面的溫度更高,所以風是從左向右吹。如果你在晚上點燃火焰,風又會隨著溫度的差異而改變方向。
最後一個場景是風、水、大地相互作用的演示。一開始山脈阻擋了海風的前進;當玩家清除山脈後,海風便會帶著水汽到達內陸,逐漸將乾旱無風的沙漠變成青草遍地的草原。

後日談 - 發現自然的美好

在這次實驗的末尾,還是想談一談一些個人的想法。在遊戲中創造一種新的系統和規則是一件很困難的事,所以我並沒有想著要將這次實驗做到盡善盡美,只求它能映射出遊戲中生態系統的可能性。這之後我還會一步步改進我所創建的理論和框架,希望能在未來的某個時刻做出一個真正好玩且完整的生態系統的遊戲遊樂場。
其實,做這個實驗的過程中,我也逐漸發現了另一個道理:遊戲設計來源與現實生活,卻高於現實。這是一個簡單易懂的道理,但卻非常寶貴。在一次對《薩爾達傳說:曠野之息》的訪談中,當被問起如何設計開放世界時,設計者給出的答案是“個人的成長經歷 (formative experience)”:從現實世界和兒時的回憶出發,想要重現那種“兒時在鄰里山間玩耍和冒險的感覺”。
當看到這句話時,我一時間感慨萬分:想到宮本茂創作薩爾達傳說的初衷便是少年的鄉間冒險,想到Daniel Shiffman教授對於程序模擬現實的執著,想到我之前堅持100天每天設計一個遊戲機制時從現實世界尋找靈感……一切都收束到了一點。
用浪漫點的話來說,遊戲將現實中那些有趣、好玩、充滿美好回憶的經歷通過機制和故事放到了一個虛擬世界,將它們用另一種方式保存了下來,讓更多的人能夠體驗到你曾幾何時在現實世界經歷的這些好玩的有趣的事,產生共鳴。
身為遊戲設計師,不妨多多觀察現實世界吧,觀察那些被忽略的美好,將它們記錄下來,做到遊戲裡,並讓世界上更多人感受到這分美好和快樂吧!

© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com