暗黑破壞神的地圖
這里的隨機指是模仿暗黑破壞神3隨機的方式,方法主要有二:一是路徑式的,而是房間式的。路徑式的思路在于地圖的活動空間狹小,不利于戰(zhàn)斗展開,但是路徑通道周圍的空間可以用來做大量地造景設(shè)計。房間式正好相反,縱深感覺比較弱,但是戰(zhàn)斗區(qū)域開闊,適合種植大量怪物。
暗黑3的隨機地圖被玩家詬病很多,主要在于隨機性少,設(shè)計師的思路在于隨機考量上做出區(qū)別,暗黑2曾是廣闊地形、隨機的地下城、和終點的不確定性,讓玩家多了許多探索的樂趣。暗黑3則是體現(xiàn)在事件的隨機上,暗黑3擁有眾多的固定地形,玩家在熟悉游戲之后,可以很輕易地從場景推斷出終點的位置,在一路奔波的過程中遇見不用的怪物,不同的特殊任務(wù),和不同的財寶。
一開始接觸到暗黑3,以為是由于3d場景的制作問題,導(dǎo)致了隨機性不足,但隨著秘境的不斷完善和修改,可以看到暗黑3一樣擁有無限隨機的可能,值得一提的是,暗黑2的地上世界,更多采用房間式的隨機方式,這會遇到一個問題,場景的每個區(qū)域在世界的位置提前布置好,可以產(chǎn)生很多無縫的效果,雖然這不是必須的,而暗黑3沒有制作這樣的隨機特性,因此每個區(qū)域聯(lián)通地形是固定的,變換區(qū)域的時候,是相對獨立的空間(切地圖),因為擊殺愛得利亞的入口,永遠都向著北面如此的印象不斷地被印證,讓人忍不住遺憾缺少出口不可知特性帶來的神秘。在暗黑2中一樣有類似的限制,比如擊殺梅菲斯托的地牢,但是由于區(qū)域隨機的特性,可以將單個房間式的地城加入?yún)^(qū)域隨機,讓地下城充滿了未知數(shù)。
從結(jié)果上看,暗黑2的地圖,從給玩家?guī)淼娜の缎陨巷@得更為成功。但是仍然不能否認暗黑2玩家碰見死胡同并沒有得到相應(yīng)的財寶帶來的挫敗感,因為從其隨機的思路來看,判斷死路不是如此的簡單易行。暗黑3也沒能回避這個問題,在往終點疾馳狂奔的時候,有可能一路上并不會遇到怪物,當(dāng)玩家明明知道終點在東方,仍為了尋找怪物跑向北方的場景,地毯式的掃圖也讓玩家感受到惡心,還不如暗黑2就讓玩家放開去找吧!
路徑式的隨機地圖
路徑式的隨機,指的是把整個地圖當(dāng)做一個聯(lián)通的圖,每個圖的節(jié)點就是一個房間,房間之間通過圖的連接關(guān)系保持相連,由此還可以針對通道做一些獨特的設(shè)計,比如:突然斷裂,比如各種明門暗門傳送門或者單向門等等?;蛘哚槍Ψ块g做特殊的設(shè)計,每個房間都有一個不同的特殊任務(wù)、突發(fā)事件、神秘人物,可以把出現(xiàn)的頻率做的很均勻。
廣度優(yōu)先生成
最常用的生成圖的辦法應(yīng)該就是先生成樹了。廣度優(yōu)先的思路是這樣的:先把初始生成放進隊列里,然后遍歷這個隊列,一直到隊列為空才停下來。每訪問到一個節(jié)點,都適應(yīng)一個固定的算法 f( node ) 計算出新的生成節(jié)點放進隊列里。 在這里,我們可以把生成的房間當(dāng)做每個節(jié)點,也可以維護通道的隊列,以下用房間隊列來說明。

把中心點當(dāng)做根節(jié)點先創(chuàng)建好,并隨機生成4個方向的通路,加入到隊列中,然后遍歷隊列直到隊列為空。遍歷隊列獲取每個節(jié)點時,先把從上一個節(jié)點來的方向排除掉,然后對剩下的三個方向進行隨機判定,如果隨機通路存在,則把通路后的房間創(chuàng)建好,并也加入到隊列中。這里有個需要注意的地方,假如通路對面的房間存在,就不再需要創(chuàng)建通路了,而是直接連通2個房間。為了讓地圖可控,一般隨機方向的時候,需要進行衰減,根據(jù)創(chuàng)建好的房間和預(yù)定地圖的參數(shù),對隨機的通路進行干預(yù),直到最后大多數(shù)房間不產(chǎn)生新的通路成為葉子節(jié)點。隊列不再增長,循環(huán)結(jié)束。
但是此種方法有種劣勢,就是不好確定終點,不好控制規(guī)?!,F(xiàn)在考慮的方法如下:記錄每個葉子節(jié)點,就是不會再產(chǎn)生通路的房間,當(dāng)然并不是一定就是某條死胡同,因為在生成過程中相鄰的房間有可能會把墻壁打通形成通路,這時候終點就有可能不在死路里,變化更多。而對于不好控制規(guī)模,就真的沒有什么好的辦法了,通路數(shù)量的衰減函數(shù)只能通過經(jīng)驗去構(gòu)建
固定終點生成
為了解決不好確定終點的劣勢,可以一開始就確定好終點,如下圖生成一個固定的路徑,可以假定這條是玩家經(jīng)歷的一個比較正常的路徑。

生成好路徑后,將每一個房間節(jié)點加入到隊列里,再通過廣度優(yōu)先搜索的辦法,生成出子路徑,比如思路啊,比如環(huán)路之類的。
房間式的隨機地圖
待續(xù)....