《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

OMStuido 發表於 2021-09-07
演算法
前言

市面上將隨機地圖高度抽象表達的一般有 3 種:

1.第一種是最常見的類《殺戮尖塔》爬塔類地圖。優點:地圖流程容易把控,玩家能較為直觀地體驗遊戲推進過程,同時實現難度不大;缺點:同型別遊戲大部分都採用了這一種機制,從卡牌玩法到地圖機制都很難跳出《殺戮尖塔》的影子,難以做出差異化。

2.第二種是類似《月圓之夜》的翻牌子機制。優點:流程相對好把控,實現難度不大,同時翻牌子式推進能在翻牌子這點上做出不少微創新;缺點:翻牌子高度抽象化了地圖,玩家難以直觀地感受到空間推薦的過程。

3.第三種是《超越光速》類的隨機點線網路地圖。優點:地圖形式隨機性較大,玩家能較為直觀地體驗遊戲推進過程與地點上的變化;作為三種型別種較早出現的一種,採取類似的地圖機制的作品少之又少,能很好地做出差異化;缺點:地圖流程較難把控,需要額外機制來控制流程。實現難度較前兩種複雜一點。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

在遊戲開發早期曾希望採用上訴第三種《超越光速》類的隨機地圖機制。但鑑於一年多前作者才剛接觸程式設計與遊戲開發數月個人獨立開發萌新,抱著先把遊戲的所有基礎功能做出來,做好一個完整的遊戲的心態,決定採用最好實現的第一種類《殺戮尖塔》機制,而且還是高度閹割版(QAQ)。

隨著遊戲已經開發了一年多,遊戲內所有模組都已經接近完成並且作者也從一個萌新進化成了有點經驗的菜狗。距離遊戲 EA 階段還有三個月時間,決定抽出一點時間挑戰一下,將最初的想法制作出來。

實現

第一步:背景底層

遊戲設定是主角困於峽谷之中,因此繪畫了一張上下帶有崖壁的底圖作為地圖背景

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

第二步:劃分割槽域並生成地點 site

首先將地圖劃分六個區域,區域會在後面有其他作用。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

在每個區域隨機生成 3~5 個地點 site,總點數在 18~30 個之間,同時保證點與點之間有一定距離。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

下一步:以地點 site 為基礎形成三角形網路。

當初不採用這種地圖機制最主要原因就是覺得這一步太困難了無從入手,後來有一天想起自己本職工作建築設計做引數化設計時常用 grasshopper 裡常用的一個功能,點雲生成 mesh 網格。利用三角形剖分法(Delaunay)組織點陣。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

既然思路有了,只要用程式碼復現就好。(不知道大佬們知不知 UNITY 或者 C#有沒能處理大量幾何圖形問題的庫,類似 GRASSHOPPER 這樣的方便工具,有的話麻煩評論或者私信告訴一下我,萬分感謝 QAQ)。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

最後我們做得比《FTL》稍微複雜一點,抽取部分線路讓地圖更復雜化。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

重複上述隨機步驟,確保最短重點到起始點之間最短路徑少於或等於 7(方便把控流程)

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

第三步:場地 site 賦予屬性

場地內包含地形的概念,不同地形會遇到不同的怪物,同時亦會遭遇事件,有合成實驗室(商店),有危險的怪物聚集點等等豐富遊戲性。

只顯示初始點及其連線的 site、實驗室(商店)、和終點的位置,其餘地點隱藏。並在每個 site 下留下一個暗示位置和地形的圖案。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

隱藏的點在探索到與之相連的地點時會顯。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

第四步:追兵系統

《超越光速》中有一套追兵系統,當進入新地圖後經過一段時間,追兵就會從左往右追擊,與追兵戰鬥只會得不償失。這個機制能有效抑制玩家 full clear 地圖刷刷刷提升能力,把控地圖的整體流程。

在我的遊戲設計中,每個深度的地圖會有 4~6 天的安全期(每前進一個 site 消耗一天),安全期後就會有 Turmoil 由左往右追擊玩家。而 Turmoil 的推進方式就是前面定的區域,每天往右侵入一個區域。最終每個玩家逗留在地圖的時間限制在 10~12 天。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

小可愛 Turmoil 的立繪(很多近期有趣元素的縫合怪 QAQ)

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

最後一步:新增場地資訊提示,優化玩家體驗

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

搞了這麼久,我覺得我的 UI 設計總算像個樣子了。

結語

算是完了之前一個遺憾,地圖的事件和一些小功能還在編輯中,但是總體上是完成了,對比構思、前始,中期,到最後四個時期的地圖算是質變。

《伊萬博士: 進化》利用三角剖分演算法復刻《超越光速》地圖機制

過段時間 Steam 的商店頁面要重新稽核(當初為了快速通過參加新品節,沒有做 EA 稽核),會有一段時間商店頁面消失,同時 demo 也會關閉,所以要體驗 demo 和加願望單的朋友還不趕快行動 OwO。

最後,為了改地圖我把 BOOOOM 的 gamjame 鴿了,我有罪。


來源:indienova
原文:https://indienova.com/indie-game-development/replicate-ftl-map-algorithm-with-delaunay/

相關文章