發(fā)布時間:2024-01-24 18:31:18 瀏覽量:151次
文/兔四
概述:文章基于一種基礎(chǔ)的地圖,來討論三套不同的地圖生成方案。
文章不會出現(xiàn)跟代碼相關(guān)的內(nèi)容,會以較為通俗的語句和不少簡單的示意圖來表示迷宮的生成方案。其中不少方法來自于游戲界前輩,我根據(jù)自己的基礎(chǔ)地圖做了不少修正(畢竟迷宮和地圖的形式多種多樣,適合自己游戲的才是最好的)。
根據(jù)方案生成地圖之后,還可以加上一些靜態(tài)分布來豐富地圖表現(xiàn),大家就自行發(fā)揮啦!
地圖基礎(chǔ)
地圖的形式很多,這里我使用的地圖是以tile塊為單位分割的地圖,地圖上的tile塊形式很多,但主要分成三種:
A:陸地,可以在上面分布一些角色啦物件啦;
B:過渡,根據(jù)物理框可以在上面移動,不過一般不會分布物件;
C:水域,不可移動的區(qū)域,可以理解成為迷宮的“墻”;
在后文的迷宮生成方案里,會以水域作為分割,主要圍繞陸地的分布來設(shè)計迷宮,過渡的地塊根據(jù)游戲?qū)嶋H需要再去生成。如果你不希望地圖用水域來分割,那只需要把水域改成傳統(tǒng)的墻壁即可。
本文用來展示的地圖,面積都比較小,方便表達(dá)迷宮的生成規(guī)則。在實際游戲制作時,按需求去鋪量就行。
方案一:主路扭曲型
1、首先,按照下圖的間隔規(guī)則來生成基礎(chǔ)的大地圖,1為陸地,0為水域。
2、然后,選擇一個靠近邊緣的1作為起點,在它的周圍隨機(jī)找另一個黃色的1(這里的“周圍”指的是上下左右4個方向,斜邊不算)。找到就把他們聯(lián)通,即把兩個1之間的0變成陸地,這里用紅色來表示。
3、把上一步“終”的格子作為新的一個“起”格子,不停循環(huán)第二步的過程,直到找不到周圍有黃色的1。
4、這時候,原路往回走(即不停去找前一個格子),直到找到一個格子,這個格子周圍有黃色的1,那么從這個格子開始重復(fù)前兩個步驟。
5、接下來就是不停重復(fù)上面的步驟,找到就聯(lián)通,找不到就往回走。
6、填充完整個地圖之后,迷宮就算是制作完成了,根據(jù)需求加上終點即可。
總結(jié)一下,這種方案生成的迷宮會有一條明顯的主路,即一條特別長、貫穿大部分區(qū)域的路線,同時,迷宮的路線一般比較扭曲。
方案二:自然分岔型
這個方案的雛形來自于隨機(jī)prim算法,具體步驟如下:
1、跟方案一一樣,生成一個基礎(chǔ)地圖。格子先用黃色1和灰色0來表示,暫時不區(qū)分水陸。
2、隨機(jī)取一個地圖邊緣的黃色1,把它標(biāo)記為紅色1,即變成陸地。然后把它旁邊的灰色0標(biāo)記成藍(lán)色0,表示“待定”。(注意的是,大地圖四周的灰色0固定不變,作為地圖邊緣而存在)
3、敲黑板了??!這里是重點!??!
隨機(jī)選一個藍(lán)色的0(這一步很重要,會使這個方案明顯區(qū)別于上一個方案),然后看紅色1隔著這個藍(lán)色0對面的格子,是否是黃色的1:
如果是,則把對面的黃色1標(biāo)記成紅色1,即變成陸地,然后把藍(lán)色0變成紅色的0,即也變成陸地;
如果不是,就把這個藍(lán)色的0變成灰色的0。
最后,把新創(chuàng)建的紅色1周圍的灰色0,標(biāo)記成藍(lán)色0。
4、繼續(xù)重復(fù)上面的步驟
5、對比上圖和下圖,這里取一個藍(lán)色0生成一個紅色1之后,新生成的紅色1旁邊,有兩個藍(lán)色0的兩邊都是紅色1了,那么就根據(jù)第三步的規(guī)則,在稍后取到這些藍(lán)色0時,就會把他們變成灰色0。
6、繼續(xù)重復(fù)上述步驟,直到整個地圖沒有藍(lán)色0了,地圖就生成完畢。
總結(jié)一下,對比方案一,這套方案不會出現(xiàn)明顯的主路,迷宮相對比較自然,但迷宮的分岔路會比較多,所以迷宮可能會更復(fù)雜,即玩家需要做選擇的次數(shù)可能比較多。
方案三:塊狀分割型
上述兩個方案有個共同的特點,就是道路永遠(yuǎn)都是1個格子寬,如果游戲需要給地圖創(chuàng)造一些小型地塊或者更寬的道路,需要在迷宮生成之后再用各種分布的規(guī)則來豐富迷宮。
而第三個方案則以小型地塊作為出發(fā)點來設(shè)計迷宮,這套方案的雛形來自于國外大神Bob Nystrom,有興趣的可以去查看他個人主頁。
1、首先,在大地圖(還是之前那個大地圖)上生成若干小型地形,保證邊長是奇數(shù)且不重合就好(示意圖全部使用了正方形,實際上可以做成長方形讓地圖更加自然)。注意頂點要在黃色1格子上即可,這里我用橙色1來表示這些小型地塊。
2、然后,根據(jù)之前方案一的迷宮生成方案,在非小型地塊的區(qū)域里,用迷宮來填充。這一步完成之后,迷宮和小型地形是分隔開來的。
3、在橙色1的小型地形周圍,隨機(jī)取點以連接黃色1,連接點的數(shù)量可以根據(jù)需要來確定,建議是不要吝嗇連接點的個數(shù),因為這種地圖之下,分岔路遠(yuǎn)比前兩種方案要少。
4、接下來是簡化地圖,目的是去掉一些死胡同,因為這種方案的核心在于小型地塊,沒有必要讓玩家在迷宮的路上繞。方法是把一些3邊都是灰色0的黃色1去掉即可,具體數(shù)量也根據(jù)游戲需求來制定,我這里只去掉了一部分。
5、最后,給地圖加上出口和入口,地圖就做完啦!
總結(jié)一下,這種方案比前兩種多了小型地塊,這一點比較適合設(shè)計玩家的階段性反饋。同時地圖的分岔路明顯減少,玩家在這種方案下的選擇次數(shù)會明顯降低。另外,由于這個方案的步驟相對多且獨立,所以對于設(shè)計者來講會比較容易控制地圖的結(jié)構(gòu)。
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點擊咨詢報名。
2. 手機(jī)游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進(jìn)步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費、一鍵制作炫酷特效,適合新手小白??靵碓囋嚕?/span>
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點,幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動漫建模全過程,不是一般人能學(xué)的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
8. 如何自己開發(fā)一款游戲(游戲開發(fā)入門必看:五大獨立游戲開發(fā)技巧)
?游戲開發(fā)入門必看:五大獨立游戲開發(fā)技巧無論您是剛剛起步開發(fā)自己的第一款游戲,還是已經(jīng)制作了幾款游戲,本篇文章中的5大獨立游戲開發(fā)技巧都可以幫助您更好地設(shè)計下一款游戲。無論你對游戲有著什么樣的概念,都
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會推出《巫師4》。因為《巫師》系列在策劃的時候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
10. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅固
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計技巧,讓你輕松掌握!
最新文章
同學(xué)您好!