《伊万博士: 进化》利用三角剖分算法复刻《超越光速》地图机制
前言
市面上將隨機(jī)地圖高度抽象表達(dá)的一般有 3 種:
1.第一種是最常見的類《殺戮尖塔》爬塔類地圖。優(yōu)點(diǎn):地圖流程容易把控,玩家能較為直觀地體驗(yàn)游戲推進(jìn)過程,同時(shí)實(shí)現(xiàn)難度不大;缺點(diǎn):同類型游戲大部分都采用了這一種機(jī)制,從卡牌玩法到地圖機(jī)制都很難跳出《殺戮尖塔》的影子,難以做出差異化。
2.第二種是類似《月圓之夜》的翻牌子機(jī)制。優(yōu)點(diǎn):流程相對(duì)好把控,實(shí)現(xiàn)難度不大,同時(shí)翻牌子式推進(jìn)能在翻牌子這點(diǎn)上做出不少微創(chuàng)新;缺點(diǎn):翻牌子高度抽象化了地圖,玩家難以直觀地感受到空間推薦的過程。
3.第三種是《超越光速》類的隨機(jī)點(diǎn)線網(wǎng)絡(luò)地圖。優(yōu)點(diǎn):地圖形式隨機(jī)性較大,玩家能較為直觀地體驗(yàn)游戲推進(jìn)過程與地點(diǎn)上的變化;作為三種類型種較早出現(xiàn)的一種,采取類似的地圖機(jī)制的作品少之又少,能很好地做出差異化;缺點(diǎn):地圖流程較難把控,需要額外機(jī)制來控制流程。實(shí)現(xiàn)難度較前兩種復(fù)雜一點(diǎn)。
?
在游戲開發(fā)早期曾希望采用上訴第三種《超越光速》類的隨機(jī)地圖機(jī)制。但鑒于一年多前作者才剛接觸編程與游戲開發(fā)數(shù)月個(gè)人獨(dú)立開發(fā)萌新,抱著先把游戲的所有基礎(chǔ)功能做出來,做好一個(gè)完整的游戲的心態(tài),決定采用最好實(shí)現(xiàn)的第一種類《殺戮尖塔》機(jī)制,而且還是高度閹割版(QAQ)。
隨著游戲已經(jīng)開發(fā)了一年多,游戲內(nèi)所有模塊都已經(jīng)接近完成并且作者也從一個(gè)萌新進(jìn)化成了有點(diǎn)經(jīng)驗(yàn)的菜狗。距離游戲 EA 階段還有三個(gè)月時(shí)間,決定抽出一點(diǎn)時(shí)間挑戰(zhàn)一下,將最初的想法制作出來。
實(shí)現(xiàn)
第一步:背景底層
游戲設(shè)定是主角困于峽谷之中,因此繪畫了一張上下帶有崖壁的底圖作為地圖背景
?
第二步:劃分區(qū)域并生成地點(diǎn) site
首先將地圖劃分六個(gè)區(qū)域,區(qū)域會(huì)在后面有其他作用。
?
在每個(gè)區(qū)域隨機(jī)生成 3~5 個(gè)地點(diǎn) site,總點(diǎn)數(shù)在 18~30 個(gè)之間,同時(shí)保證點(diǎn)與點(diǎn)之間有一定距離。
?
下一步:以地點(diǎn) site 為基礎(chǔ)形成三角形網(wǎng)絡(luò)。
當(dāng)初不采用這種地圖機(jī)制最主要原因就是覺得這一步太困難了無從入手,后來有一天想起自己本職工作建筑設(shè)計(jì)做參數(shù)化設(shè)計(jì)時(shí)常用 grasshopper 里常用的一個(gè)功能,點(diǎn)云生成 mesh 網(wǎng)格。利用三角形剖分法(Delaunay)組織點(diǎn)陣。
?
既然思路有了,QQ購買只要用代碼復(fù)現(xiàn)就好。(不知道大佬們知不知 UNITY 或者 C#有沒能處理大量幾何圖形問題的庫,類似 GRASSHOPPER 這樣的方便工具,有的話麻煩評(píng)論或者私信告訴一下我,萬分感謝 QAQ)。
最后我們做得比《FTL》稍微復(fù)雜一點(diǎn),抽取部分線路讓地圖更復(fù)雜化。
?
重復(fù)上述隨機(jī)步驟,確保最短重點(diǎn)到起始點(diǎn)之間最短路徑少于或等于 7(方便把控流程)
?
第三步:場(chǎng)地 site 賦予屬性
場(chǎng)地內(nèi)包含地形的概念,不同地形會(huì)遇到不同的怪物,同時(shí)亦會(huì)遭遇事件,有合成實(shí)驗(yàn)室(商店),有危險(xiǎn)的怪物聚集點(diǎn)等等豐富游戲性。
只顯示初始點(diǎn)及其連接的 site、實(shí)驗(yàn)室(商店)、和終點(diǎn)的位置,其余地點(diǎn)隱藏。并在每個(gè) site 下留下一個(gè)暗示位置和地形的圖案。
?
隱藏的點(diǎn)在探索到與之相連的地點(diǎn)時(shí)會(huì)顯。
?
第四步:追兵系統(tǒng)
《超越光速》中有一套追兵系統(tǒng),當(dāng)進(jìn)入新地圖后經(jīng)過一段時(shí)間,追兵就會(huì)從左往右追擊,與追兵戰(zhàn)斗只會(huì)得不償失。這個(gè)機(jī)制能有效抑制玩家 full clear 地圖刷刷刷提升能力,把控地圖的整體流程。
在我的游戲設(shè)計(jì)中,每個(gè)深度的地圖會(huì)有 4~6 天的安全期(每前進(jìn)一個(gè) site 消耗一天),安全期后就會(huì)有 Turmoil 由左往右追擊玩家。而 Turmoil 的推進(jìn)方式就是前面定的區(qū)域,每天往右侵入一個(gè)區(qū)域。最終每個(gè)玩家逗留在地圖的時(shí)間限制在 10~12 天。
?
小可愛 Turmoil 的立繪(很多近期有趣元素的縫合怪 QAQ)
?
最后一步:添加場(chǎng)地信息提示,優(yōu)化玩家體驗(yàn)
?
搞了這么久,我覺得我的 UI 設(shè)計(jì)總算像個(gè)樣子了。
結(jié)語
算是完了之前一個(gè)遺憾,地圖的事件和一些小功能還在編輯中,但是總體上是完成了,對(duì)比構(gòu)思、前始,中期,到最后四個(gè)時(shí)期的地圖算是質(zhì)變。
?
過段時(shí)間 Steam 的商店頁面要重新審核(當(dāng)初為了快速通過參加新品節(jié),沒有做 EA 審核),會(huì)有一段時(shí)間商店頁面消失,同時(shí) demo 也會(huì)關(guān)閉,所以要體驗(yàn) demo 和加愿望單的朋友還不趕快行動(dòng) OwO。
最后,為了改地圖我把 BOOOOM 的 gamjame 鴿了,我有罪。
總結(jié)
以上是生活随笔為你收集整理的《伊万博士: 进化》利用三角剖分算法复刻《超越光速》地图机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 也分享自己做的JS扫雷小游戏
- 下一篇: 虚幻引擎学习资源汇总