遊戲開發中使用的過程生成技術(Procedural Generation),經歷了怎麼樣的發展?
最近留意到到一款遊戲,用過程生成技術作為賣點。所以想了解一下這方面的知識。
鏈接:No Man』s Sky:演算法生成的龐大世界其實,遊戲商家一直都在考慮,如何用計算機技術生成或者模擬一個環境,甚至是動態的、可演變的環境,來提高遊戲的體驗感。
過程生成技術(Procedural Generation),使用少量的代碼,生成一個無限可能性的空間(引用遊戲商家的描述)。
據說,這項技術在遊戲中應用已經有幾十年,但是網上有人說,過程生成技術還停留在二三十年前的水平。
到底是因為技術上太簡單所以發展到盡頭呢?還是因為其他原因?又或者說,停滯不前的說法是錯的?下面的帖子提到了過程生成中用到的遞歸和分形。從數學上來說,原理並不是很複雜的。
鏈接:Infinity核心技術「過程生成」專題帖(更新2樓)當然,我可以很容易的在網上找到一些離散的資料,或者是一些技術上的paper。
但在知乎上,好像沒找到相關的介紹(有一兩個回答中提及到),quora上找到的也很有限。所以,我希望可以有遊戲界的大牛,能系統化的介紹一下這項技術,介紹一下它的發展歷程和現狀。
thanks
研究過,實踐過,運用於商業遊戲過。
未來的願景也是創造自動構造遊戲世界的某機關~
但題主需要明白的是,這件事的終極缺陷並不是演算法不夠完善。
不同層面的世界用不同演算法進行生成,noise只適合大世界,而且要結合地理知識。國外的例子除了海拔,也用到濕度,水系等很多概念。但除去demo性質遊戲,都還沒用到真正的遊戲中。
微觀層面的地圖手段比較多,比如《diablo1》那樣的隨機地城,就不再適合粗獷的noise了,《風來之西林》則是另一種丟箱子然後連起來的方式。構成不再是以「創造一片高度錯落的自然風貌」為主,就需要考慮很多遊戲性了。
當然,題主也許覺得《上古捲軸》那樣的遊戲可以使用生成地圖。其實也不行,因為有很多故事要發生其上。生成地圖真的只是很小很小的一份工作。不說那些設定,但一個姓名庫就是程序搞不定的。一個姓氏來源於斯堪的納維亞還是高盧,一個名字的源流是來自於帝國,還是象徵日耳曼各部落的天際諸城。
演算法生成地圖,即使再像腳下這顆星球,也不過就是做成一個漂亮的屏保而已。談不上過程生成。
而遊戲,販賣的是人的創造力。
除了純粹的沙盒遊戲,或者《diablo1》那樣服務於遊戲設計,緊貼其核心教條的特殊規則地圖生成。其他沒有意義。
「動態的、可演變的環境」實際上無法產生「無限可能性的空間」,因為即使你的地圖是在變化。人腦也會在不長的時間內適應其變化模式,感知到其變化背後的演算法。從而對其變化本身厭倦。大約會比對固定地圖的厭倦慢一點,但總還是會厭倦的。
嗯~真的拿這個往商業遊戲里做過就明白了。最後的最後,遊戲賣的是創造出來的獨特,美術素材的每個像素是創造,每一行代碼是創造,坑錢的數值也是創造。優秀的地圖生成演算法當然也是創造。但,也會隨著被消費而失去生命。我不是做遊戲的,不過以前有興趣研究過類似的技術。首先這個技術的適應場景(至少在遊戲中)是有限的, 比較適合沙盒式的遊戲,而需要精巧的場景的地方就難以和手工生產的相比。
提供一個比較靠譜的連接,上面提供了大量的資料:Artificial Terrain Generation,比大部分遊戲中用到的程度要強多了。
再補充一點點,這個方法的核心是產生noise。一個靠譜的噪音分布讓你生成的環境看起來更容易接受,可以參考 libnoise我差點忘了……之前在群里問過,我就不@大大們打擾了
《Visual Basic 4.0 高級圖形設計教程》有講生成地形
by vczh 大大
基於Perlin雜訊的高解析度地形模擬方法
by belleve 大大提供的關鍵詞:perlin 分形
一個規則引擎,一個場景腳本引擎,然後就是各種隨機分布演算法決定一些基礎元素的分布,然後就是根據規則和基礎元素決定附加物 etc
參考 HH3 的代碼
by 我忘了是哪位大大了
先一句話占坑:停滯不前的說法是錯的。但是使用頻率不高是真的。
因為從設計的角度講,過程生成技術優缺點都非常明顯,因此應用的範圍受到很大的限制。
這種技術僅適合於:
對遊戲內容量要求大,而對內容特殊性要求不高遊戲
而當前已經上市的遊戲中,Minecraft 就是使用了過程生成技術來構造遊戲世界的一個代表。
可以參見一下這個問題:
Minecraft 的地圖是如何儲存的,能夠做到壓縮到很小的尺寸同時保證無損?
=加班狗不知道什麼時候才能回來填分割線=
Procedural generation
Procedural character animation:
NaturalMotion
http://www.allegorithmic.com/technology/what-is-substance
v0.34:Advanced world generation
這個是矮人要塞的地圖生成演算法,完全隨機,非常詳細,結合了高度圖、濕度圖、季風甚至土壤等元素對地形的影響。
推薦閱讀: