馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。
您需要 登錄 才可以下載或查看,沒有帳號?注冊帳號
x
本文首發騰訊GWB游戲無界
編者按
《銀河破裂者》是一款深受各種游戲類型影響的游戲。游戲的基地建設和基地防御方面讓人回憶起了經典和現代的即時戰略游戲。掠奪和制造系統類似于知名動作 RPG 游戲中的系統。動態天氣、時間變化和獨特的生物群落都是偏探索和生存的游戲的重要組成部分。而能將眾多游戲類型串聯起來,靠的就是由地圖多樣性帶來的游戲玩法。接下來,本作的開發者將會為大家介紹游戲的程序化地圖生成。
作者:Piotr Bomak
校稿:shushudai
本文內容首發Game Developer,經由GWB編譯
https://www.gamedeveloper.com/disciplines/systematic-chaos---procedural-map-generation-in-the-riftbreaker
(轉載請征得同意,文章僅為作者觀點,不代表GWB立場)
《銀河破裂者》的最大優點是不會有兩局完全相同的游戲。即使知道會發生什么,玩家每次開始新游戲時也必須從頭探索每個任務的具體細節。實現這種多樣性的唯一方法是通過程序地圖生成。此功能一直是《銀河破裂者》的設計支柱之一,也是整個項目最重要的任務之一。該游戲使用我們自己的 Schmetterling 引擎,它也幫助我們進行了之前的項目 Zombie Driver 和 X-Morph: Defense。但是,這些游戲使用了預先設計的、固定的關卡。在本文中,我們將談及我們為《銀河破裂者》設計的世界生成系統。
地圖生成過程是在每個新的生存模式開始之前執行的。這種模式的前提是每個會話都是獨立的體驗,而程序生成的世界對此有很大幫助。該過程分為幾個階段——讓我們來看看具體每個階段。
一、生物群落隨機化
該過程開始于用戶對生物群落的選擇。對于玩家來說,生物群落的選擇將影響他們將要遇到的生物類型、可用的動態天氣事件池,以及資源的可用性以及游戲區域的整體外觀和感受。然而,對于游戲本身,生物群落定義了一組將影響世界生成過程的總體參數?!躲y河破裂者》中的每個生物群落預設都包含有關光照參數、天空盒及其屬性的信息,以及一組用作地形基礎紋理的材質。生物群落還定義了在生成地圖時可供游戲使用的地塊。
叢林生物群落的紋理選擇示例 玩家在戰役中會遇到的多種生物群落片段:叢林,沙漠,酸地和巖漿
生物群落沒有“固定”配置,這意味著兩個“叢林生物群落”的地圖可能看起來非常不同。我們靠生物群落隨機化實現了這一點。我們沒有為游戲提供一組它必須使用的屬性,而是為它提供了一組預配置的隨機選項。因此,游戲幾乎不可能為任何給定的兩場游戲選擇一組完全相同的材料、天空盒和照明。雖然仍然由我們的設計師預先定義,但生物群系屬性的混合重組,從一開始就為世界生成引入了一些多樣性。
二、地塊生成
在選擇了所有生物群落參數后,算法開始對地塊執行第一次操作。地塊是我們在《銀河破裂者》中生成地圖的基本構建方塊。它們是我們的關卡設計師手動準備的最小的可編輯模塊。它們的最小尺寸為 128x128 米(或 64x64 游戲內網格。我們游戲中的每個網格都是 2x2 平方米)。地塊在準備投入游戲之前需要滿足一些基本標準。當然,這些要求很容易滿足,并且可以通過一些創造性的方式來滿足,這樣它們就不會限制設計師的自由。
地塊的設計師只需要用幾種類型的遮罩來覆蓋地形紋理將從可用組中隨機選擇
其中一項要求是使用地形混合來掩蓋表面。表面積可以由三種全局材料之一覆蓋——為簡單起見,我們將它們命名為 A、B 和 C——在生物群落隨機化過程中選擇的材料。設計師不選擇具體的材料,他們只是使用材料組 A(例如沙質類)、材料組 B(例如草地類)和材料組 C(例如巖石層類)指定游戲將覆蓋的區域。也可以用真實的紋理來繪制一個區域。在這種情況下,隨機化過程不會影響它。
如果設計師選擇使用常規紋理而不是蒙版,則該區域將不會受到隨機化過程的影響。這在物件下添加細節很有用
在這之后,地圖制作者可以開始為游戲的邏輯元素放置生成點。他們決定玩家可以從哪里開始旅程,在哪里放置資源(及其種類),以及將生成的游戲內 NPC 的位置。
三、預制體隨機化
在這里你可以準確地看到哪些區域被標記為會由預制體替換,以及哪些物件已被自動放置
我們決定在《銀河破裂者》的世界生成算法中加入的另一個隨機元素,也就是所謂的預制體。在我們的項目中,預制體是一個特殊的手工場景,由設計師填充各種物件。它們的目的是填補設計師留下的地塊的空白空間,并標記為由預制體遮蔽。換句話說——預制件藏在常規地塊底下,當有上面留有足夠空間時就會跳出來,以隨機方式用物件填充該區域,而無需任何額外的人工輸入。
使用預制蒙版繪畫可讓你立即獲得外觀獨特的地塊
設計師選擇他們希望在新地塊上使用的預制場景。每個預制體都有自己的遮罩,而設計師會決定在哪里使用它。然后來自預制場景的物件將填充遮罩區域。生成地圖時,預制體的位置和方向是隨機選擇的。然后,將預制場景的多個副本縫合在一起,位于游戲世界的整個區域下方。這樣,我們可以確定無論創作者指定的區域如何,預制蒙版都能夠用物件填充設計師標記的區域。定位、方向和預制選擇的細微差異可以極大地改變地塊的感覺。
預制場景有幾種變體,其中擠滿了物件,因此無論處于何處,它們都可以完成自己的工作 這是同一張地圖。唯一改變的是預制隨機化的生成器種子。差別可以非常細微,也可以大相徑庭
四、地塊地圖生成
現在地塊已經隨機化了,是時候生成地圖了。游戲會檢查地圖應該有多大——我們支持各種地圖尺寸,從單地塊到 12x12 塊的龐然大物?!躲y河破裂者》當前版本為生存模式生成 5x5 地圖,為戰役模式生成不同尺寸的地圖。地圖的大小會影響游戲選擇和引擎性能。戰役中的探索任務需要更大的可玩區域,而基地防御目標可以適應更小的世界,以實現更精簡的游戲玩法。
設計者還應為地圖的每個邊分配信息以進行匹配。只有當它們的邊匹配時,地塊才會相互連接,從而防止連接錯誤。地塊隨機化過程選擇將用于生成地圖的地塊、將使用哪些生成點以及地塊將如何旋轉(我們支持 0、90、180 和 270 度的旋轉)。地塊在地圖生成過程中可能會重復,并且它們的屬性可能因實例而異。
這個游戲世界是通過解決“王的地塊問題”的一個版本而產生的。您可以在此處閱讀有關此概念的信息。在最初的問題中,地塊的彩色邊必須相互匹配而不執行任何旋轉。由于我們允許旋轉,因此我們的案例稍微簡化了一點,但是,當涉及到側面時,相鄰的地塊仍然必須彼此匹配。這需要相當多的操作才能使這一切奏效,但由此產生的組合數量非常高。
創建更大面積的地形也是可行的。游戲仍然將它們視為一個地塊,將整個結構視作一個整體,并在地圖生成過程中將其與其他地塊配合。它允許設計師創建跨地塊結構,如山脈或峽谷
值得一提的是,并非所有地塊都需要是 128x128 平方米。我們還支持多個‘基礎’地塊的組合,以支持跨越多個地塊的獨特結構,例如巨大的巖層、大型湖泊或河流。如果像這樣的特殊地塊結構被選擇作為生成世界的一部分,它會被完整地放在地圖上,以保持設計師準備的道具的連續性。然后像往常一樣用隨機地塊填充周圍區域。
五、資源和玩家出生點隨機化
最后,在算法通過上述所有步驟生成地圖后,我們可以繼續進行資源分配?!躲y河破裂者》中的每個任務都定義了應該向玩家提供什么樣的資源。但是,它只指定了任務期間可用的資源數量,而沒有指定位置。這部分再次進行了隨機。游戲為資源存儲選擇可能的重生點,并根據相關規則進行分配。
這是資源分配規則集的示例。所有游戲模式和地圖都需要自己的規則來改變和平衡游戲體驗。
一旦算法選擇了資源生成點,該過程就相當簡單了。選擇資源類型,然后是存儲點的‘密度’——可供玩家使用的資源量。該值是任務邏輯文件中定義的最小值和最大值之間的簡單隨機。然后,游戲嘗試確定資源存放的中心。該領域將是最豐富的中心,它將由不同的物理模型表示,以便于視覺識別。
資源可以在標有紅色的區域生成。游戲將確定資源存放的中心和產量,然后相應地調整網格
分配完所有資源后,游戲會檢查所有玩家重生點,并選擇一個最接近基礎資源區的。一旦這個地點確定,玩家就可以開始游戲了。
我們對我們為《銀河破裂者》開發的地圖生成系統感到滿意。它使我們能夠在相對較短的時間內向游戲世界引入多種變化。甚至在生物群落池中添加幾個新地塊都會為新玩家和回歸玩家帶來有趣的體驗。添加隨機預制體,使地圖地塊每次都具有略微不同的外觀和感覺,這樣你就有了構建游戲的堅實基礎。
目前這套系統非常實用,但仍然可以通過許多有用的功能進行改進,以使游戲世界更加逼真。我們正在研究動態 NPC 放置,它將根據生物群落、所選難度級別、一天中的時間以及玩家在游戲中的進度進行調整。有了這樣的系統,《銀河破裂者》將會鼓勵玩家根據局勢隨時制定和調整對策,而不是每個任務都背板。
來源:騰訊GWB游戲無界
原文:https://mp.weixin.qq.com/s/LXfetOoX5CnU3zJtrEw-mA
|