浅聊程序化世界构建流程
游戲開發(fā)中的過程化生成技術(shù)(Procedural Generation)讓開發(fā)者能使用少量的代碼,生成一個無限可能的空間,隨著目前大世界沙盒生存游戲的發(fā)展,PCG相關(guān)的技術(shù)剛開始在國內(nèi)大公司引起重視沒幾年,盡管這種理念已經(jīng)在國外作為游戲工業(yè)化生產(chǎn)的標準,以前國內(nèi)傳統(tǒng)的場景制作流程一般還是先出個layout白模,然后由場景地編將游戲世界中的一草一木都是手工精心調(diào)整,需要大量的人力來維護和更新,一旦遇到整個場景的迭代,所有時間與過程將浪費,大量成本人力會急劇的上升。不同這些的是PCG的理念是通過配置一些生成的規(guī)則,然后由生成算法自動去生成游戲世界,運用得當可以進行快速迭代,節(jié)省大量的美術(shù)的工作量和成本。它的完整的設(shè)計的目的就是為了允許在項目的任何階段都可以進行快速的迭代。
對于技術(shù)的使用通常需要在游戲的原型設(shè)計階段開始介入,從游戲大世界內(nèi)容制作到游戲批量內(nèi)容迭代一直貫穿,在制作流程上,需要拆分成不同的模塊進行制作,這樣不同模塊之間可以根據(jù)需要相互協(xié)同,并且有可以進行復(fù)用。從介入時間和模塊化劃分的好處是可以保證整個流程的制作是與項目所需的美術(shù)風(fēng)格是一致的,同時可以根據(jù)必要的美術(shù)需求進行定制化工具的開發(fā),而作為整個工具鏈的目標產(chǎn)出是幫助美術(shù)可以使得所有內(nèi)容通過極少的參數(shù)和輸入進行控制并以這種方式來加速美術(shù)內(nèi)容的制作。希望使得在相同的參數(shù)的輸入下,輸出的內(nèi)容一定是完全一致的。
我們在實際的操作中可以把所有的美術(shù)制作內(nèi)容都可以歸類到幾個不同的抽象層,按照不同抽象層之間的依賴關(guān)系,制作每一個抽象層本身的生成規(guī)則,當每一層的規(guī)則足夠復(fù)雜時,就可以一定程度上去仿造美術(shù)的制作流程,綜合所有抽象層的輸出,完成對一個完整游戲關(guān)卡世界的按照規(guī)則參數(shù)的輸出。
?
而在實際的操作時候不同的分層之間其實是有依賴關(guān)系的,必須需要按照依賴關(guān)系來處理。生成的時候需要要遵循一定的順序進行比如道路的生成是需要地形相關(guān)的數(shù)據(jù),而后道路的生成又為村莊的分布提供了基本數(shù)據(jù);再比如需要根據(jù)地理環(huán)境的數(shù)據(jù)例如草地、土壤、巖石、房屋等分布,來布置整個世界上的草地、樹林和沙灘的位置。
下面說說我們在游戲項目中實踐的Pipeline,基本可以歸納為五步走:
1.游戲概念設(shè)定:為了保證整個場景風(fēng)格一致,需要統(tǒng)一的概念設(shè)定和參考,通常由原畫和文案一起給出相應(yīng)的概念稿給KFZ全員,統(tǒng)一大家對于游戲的認識
2.分析建立規(guī)則:其實對于大部分的設(shè)計都可以轉(zhuǎn)換成一系列規(guī)則,手游賬號買賣平臺關(guān)卡美術(shù)或者關(guān)卡策劃用自然語言提煉出相應(yīng)想做的世界的規(guī)則,這些規(guī)則比如:高緯度的樹應(yīng)該比低緯度樹矮,道路兩邊草應(yīng)該比較稀疏,并且有大量裸露地面。有了這些自然的規(guī)則TA或者程序才能去分析,然后根據(jù)這些規(guī)則去構(gòu)建程序化的分層規(guī)則,從而構(gòu)建出規(guī)則引擎。
3.模塊化劃分:第二條的規(guī)則既然已經(jīng)可以被程序所表達出來,那么通過這些規(guī)則就可以制作對應(yīng)的模塊了,我們的規(guī)則越豐富則效果越接近預(yù)期,模塊的建立輔助引擎搞定從美術(shù)的DCC到正式可用資源之間的橋梁。比如公路這個模塊就可以拆分為:直線公路組件,彎曲公路組件,十字路口和三岔路口模型組件,已到達生存公路的目的。
4.關(guān)卡布置與參數(shù)調(diào)整:完成的模塊組件可以通過mask圖或者曲線劃定區(qū)域在場景里大量布置,并通過對應(yīng)的參數(shù)進行調(diào)整。
5.最終效果調(diào)整:最后必然會存在需要美術(shù)或者關(guān)卡策劃特別關(guān)注和表現(xiàn)的區(qū)域,這里就需要人工進行干預(yù)了,由人來對最后的效果進行細化來提升,保證最終的交付效果。這樣的區(qū)域也可以提前就MASK圖層建立,防止在自動化生成結(jié)果沖掉這些需要特殊表現(xiàn)的區(qū)域。
最后以我們熟悉的FPS大世界類游戲為例來說說實際開發(fā)中的階段的劃分:
1.游戲開發(fā)初期:這個時期我們需要快速驗證游戲的原型,確認游戲的風(fēng)格,前期就可以快速的自動生成整個包括植被、道路和村莊布局的8km*8km的地圖,這樣就可以幫助策劃就可以對玩法和地圖進行快速想法的驗證。
2.堆量和細化中期:這個時期主要是量的產(chǎn)出問題,由于規(guī)則建立的靠譜那么全地圖的樹木、灌木和各種掩體以及所有刷新點的密度和分布都是通過幾個參數(shù)快速調(diào)整的,還可以快速填充野外非建筑區(qū)域的資源量。
3.全地圖效果后期:這個時期主要是配合測試反饋進行各種細節(jié)的調(diào)整階段,內(nèi)容包括了根據(jù)反饋調(diào)整障礙物、掩體密度,根據(jù)優(yōu)化反饋調(diào)整全地圖過于密集的物體,在上線前快速大量添加延期的外包美術(shù)物件,根據(jù)已有場景物件大量布置三級物件,如果有需要還可以做對全地圖的所有樹木密度和分布進行了大規(guī)模重新分布。
技術(shù)本身看似美好,但是想要做好也是蠻有挑戰(zhàn)的一件事情,下面幾篇是近幾年來在GDC上分享的很有價值的文章,大家可以一看:
從上面那些大作中可以獲知模塊化工具的技術(shù)積累是非常有必要的,這就要包括積累日常美術(shù)制作流程相關(guān)的工具,以提高制作效率,積累復(fù)雜關(guān)卡的生成邏輯來實現(xiàn)更高質(zhì)量關(guān)卡的制作。所有的工具都需要考慮以減少美術(shù)制作人員的學(xué)習(xí)成本為目的,最好能幫助美術(shù)在制作時加快預(yù)覽效果與實際效果對比和最終資源的生產(chǎn)效率,而做好所有這些真的不是靠一兩個項目就能夠一蹴而就的,它需要一個長期探索與摸索的階段,還需要一直穩(wěn)定且互信的團隊。
最后說點題外話,如何在游戲項目中推進一個新的事物,那么你就需要把基本的道理說透徹,且讓團隊成員都能明白這個道理是對的,如果團隊成員不理解靠強壓推進的方式也是不行的,到后來只會出現(xiàn)相互的抱怨,每個人的角度和立足點畢竟是不同的,還有就是有成功項目去支撐你的觀點肯定能事半功倍,當然你如果有足夠的個人影響力那是另外回事情,那么事情就能好辦的多。
總結(jié)
以上是生活随笔為你收集整理的浅聊程序化世界构建流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从零开始做一个SLG游戏(二):用mes
- 下一篇: 从零开始做一个SLG游戏(一):六边形网