《星之卡比·探索發(fā)現(xiàn)》是《星之卡比》本篇的第一款3D動(dòng)作游戲,我們預(yù)計(jì)地形的制作和調(diào)整成本會(huì)增加。
我們最終的地形制作流程如下。
由關(guān)卡設(shè)計(jì)師在地圖編輯器上放置塊狀部件來(lái)創(chuàng)建地形的形狀。
使用能夠快速展示游戲畫(huà)面的簡(jiǎn)單地形功能,不斷進(jìn)行地形的調(diào)整迭代。
調(diào)整好地形后,按下地形模型輸出按鈕,自動(dòng)生成正式使用的地形模型。
放置角色、噱頭和裝飾部件。
另外,在這個(gè)工作流中最大的特點(diǎn)是使用Autodesk Maya程序化地自動(dòng)生成生產(chǎn)地形模型。本次講座詳細(xì)介紹了這個(gè)地形生成系統(tǒng)是如何創(chuàng)建的,如何實(shí)現(xiàn)的,以及運(yùn)行過(guò)程中遇到的問(wèn)題和解決方法。
地形生成系統(tǒng)—黎明期—
前作《星之卡比·新星同盟》中也使用了3D模型,但與本作不同的是,它是一款2D動(dòng)作游戲。這是當(dāng)時(shí)的地形制作流程。
關(guān)卡設(shè)計(jì)師在地圖編輯器上放置塊狀部件以創(chuàng)建地形。
美術(shù)創(chuàng)建的 3D 模型會(huì)自動(dòng)沿著地形放置。
美術(shù)微調(diào)地形模型放置。
放置地形以外的裝飾物。
而作為 3D 動(dòng)作游戲的本作,它的工作流程最初是這樣想的。
關(guān)卡設(shè)計(jì)師創(chuàng)建地形設(shè)計(jì)圖。
在此基礎(chǔ)上,由美術(shù)創(chuàng)建地形模型。
但是,這么做的話會(huì)導(dǎo)致關(guān)卡設(shè)計(jì)調(diào)整困難、美術(shù)工作量大等問(wèn)題。這對(duì)關(guān)卡和美術(shù)來(lái)說(shuō)都是個(gè)壞消息。
到這就誕生了三個(gè)任務(wù)。
關(guān)卡設(shè)計(jì)師始終能夠調(diào)整、打磨地形形狀。
顯著降低美術(shù)的生產(chǎn)成本,以便他們能空出手來(lái)做其他事情。
在上面兩項(xiàng)的基礎(chǔ)上,地形模型的質(zhì)量沒(méi)有下降。
換句話說(shuō),目標(biāo)是“在繼承2D時(shí)代文化的同時(shí),自動(dòng)創(chuàng)建可以直接放到成品游戲中的高質(zhì)量地形模型”。為了實(shí)現(xiàn)這些目標(biāo),我們決定開(kāi)發(fā)一種新的地形模型自動(dòng)生成工具。
首先,我們把游戲中第一個(gè)場(chǎng)景“おなじみの草原”來(lái)嘗試地形模型自動(dòng)生成的可行性。由于它是該系列的第一款 3D 動(dòng)作游戲,因此有各種選擇和考慮,例如“制作什么樣的地圖”和“如何創(chuàng)建地形的形狀”。
由于美術(shù)、關(guān)卡、開(kāi)發(fā)之間崗位不同,用到的地形圖像也不同,所以需要先共享圖像。在這款游戲中,先由關(guān)卡策劃使用地圖編輯器來(lái)創(chuàng)建他們想要的地形,然后由美術(shù)在其上繪制了一張圖片,在紙上重現(xiàn)他們想要的東西。在這個(gè)過(guò)程中,成員之間的形象得到了統(tǒng)一。
作為一個(gè)具體的實(shí)現(xiàn),我們首先從給舞臺(tái)的“邊緣”添加一個(gè)蓬松形狀的部分開(kāi)始。它是通過(guò)使用 Maya 的Curve Warp功能排列零件模型來(lái)實(shí)現(xiàn)的。另外,如果將尖角90度變形,Mesh會(huì)破碎。
地形本身是由關(guān)卡策劃通過(guò)組合塊狀部件來(lái)創(chuàng)建的。采用這種方法是因?yàn)樗子谶M(jìn)行微調(diào),并且接近 2D 的制作方法。
既然草原現(xiàn)在可以生成了,我們著手處理沙漠和購(gòu)物中心的場(chǎng)景。起初,我認(rèn)為有必要對(duì)每個(gè)表面進(jìn)行專(zhuān)門(mén)處理,但經(jīng)過(guò)嘗試后,發(fā)現(xiàn)只需要更改“Moco(邊緣的蓬松形狀)”和材質(zhì)就能生成非常不同的地形了。
之后,就是開(kāi)發(fā)這個(gè)地形生成系統(tǒng)了。同期,也決定了開(kāi)發(fā)和美術(shù)之間的角色劃分。
地形生成系統(tǒng)—發(fā)展期—
地形生成系統(tǒng)的雛形至此已經(jīng)完成了,但還是很簡(jiǎn)單,沒(méi)有達(dá)到美術(shù)想要的質(zhì)量。接下來(lái),將說(shuō)明為追求質(zhì)量而添加的功能,最終創(chuàng)建的地圖以及這一代游戲的工作流程特點(diǎn)。
道路的表示
首先,增加了“創(chuàng)建道路的功能”。我們準(zhǔn)備了幾個(gè)方案,比如用道路模型等等,到最后,我們采用了頂點(diǎn)顏色(Vertex Color)的方法。
使用頂點(diǎn)顏色有一些優(yōu)勢(shì),比如可以在紋理之間使用相同的UV,并且可以將其用于標(biāo)記地形的角落。
通過(guò)頂點(diǎn)顏色可以改變局部的外觀,例如本作品中的水坑和混凝土劣化。
自然的地形
接下來(lái),我們添加了一個(gè)使地形看起來(lái)自然一些的功能。地形形狀是由幾十種方塊組合而成的,所以雖然被Moco緩和了一些,但還是給人一種機(jī)械的、塊狀的感覺(jué)。尤其是墻壁的輪廓和與地面的交界處,我可以清楚地看到直線。
為了使地形自然一些,增加了“山體組件”、“扭曲功能”和“鏤空組件”等內(nèi)容。
“山體部件”可以和其他塊狀部件組合形成緩坡等等更自然的場(chǎng)景。
“扭曲功能”是一種通過(guò)在地形頂點(diǎn)添加Noise參數(shù)來(lái)實(shí)現(xiàn)的。目的是讓墻體輪廓沒(méi)那么直。
“鏤空組件”是一種切掉重疊地形的功能。它特別適合本作荒廢的世界觀,在很多地方都有使用,對(duì)于噱頭和裝飾部件的放置也很有用。
另外,作為提高模型細(xì)節(jié)質(zhì)量的一種方式,介紹一下在倒角、地形的角落和Moco周?chē)鷳?yīng)用頂點(diǎn)顏色的例子。
再說(shuō)明一下“用于破壞的空心部件”。這是賦予重疊地形可破壞的功能。與鏤空功能類(lèi)似,將邏輯乘積所取的網(wǎng)格復(fù)制,劃分為Voronoi,并在運(yùn)行時(shí)作為片段進(jìn)行控制。
*Voronoi,泰森多邊形,是一組由連接兩鄰點(diǎn)線段的垂直平分線組成的連續(xù)多邊形。
借助開(kāi)發(fā)準(zhǔn)備的這些功能,美術(shù)創(chuàng)建了大約40種主題數(shù)據(jù),包括草原、建筑、沙漠、混凝土、商場(chǎng)、冰山、火山和寶藏之路等等。
至此,關(guān)卡負(fù)責(zé)地形形狀,美術(shù)創(chuàng)建并設(shè)置詳細(xì)的形狀、紋理、材質(zhì)、倒角、扭曲等參數(shù),再由開(kāi)發(fā)將兩個(gè)部分橋接起來(lái),自動(dòng)生成地形模型的工作流也就建立起來(lái)啦。
地形生成系統(tǒng)的實(shí)現(xiàn)
接下來(lái),從工程師和技美的角度來(lái)說(shuō)明如何實(shí)現(xiàn)地形生成系統(tǒng)。
這一代的地形生成系統(tǒng)是在 Maya 中實(shí)現(xiàn)的。在地圖編輯器后臺(tái)啟動(dòng) Maya,創(chuàng)建 3D 模型,輸出并轉(zhuǎn)換數(shù)據(jù),并反映在游戲側(cè)。
基礎(chǔ)創(chuàng)建
基礎(chǔ)創(chuàng)建要做的事情是把地圖編輯器創(chuàng)建的地形變成“漂亮的Mesh”。由于地圖編輯器按原樣放置地形塊,因此里面有很多不必要的多邊形。移除它們,只留下表面。
倒角/扭曲
倒角通過(guò)MAYA實(shí)現(xiàn)。但是,如果存在Mesh破損的風(fēng)險(xiǎn),則將其禁用或糾正。對(duì)于扭曲,將在頂點(diǎn)坐標(biāo)處加入的Noise添加到頂點(diǎn)的 XZ 坐標(biāo)中。為了避免干擾裝飾零件,它們附近的變形也會(huì)被禁用。
鏤空
鏤空是使用 Maya 的布爾功能實(shí)現(xiàn)的。
材質(zhì)設(shè)置
由Mesh的法線分配“地面”和“墻”材質(zhì)。由于可以通過(guò)頂點(diǎn)顏色來(lái)控制,所以地形材質(zhì)有“地面”、“墻”和“Moco”三種。
Moko創(chuàng)作
為了營(yíng)造一種隨機(jī)感,許多 Moco模型有多種變體。像角落這種位置就有 3 種方法來(lái)排列。
UV
地形UV從項(xiàng)目開(kāi)始就一直是個(gè)問(wèn)題,特別是為了處理墻面的UV花了不少功夫。
頂點(diǎn)顏色
作為地形生成的最后一步,頂點(diǎn)顏色從地圖編輯器的區(qū)域信息中獲得。
最后省略開(kāi)發(fā)組在實(shí)際運(yùn)用中遇到的問(wèn)題和解決方法,分享中所列的情況有些特殊,或者說(shuō)根據(jù)不同的團(tuán)隊(duì)遇到的情況也不太一樣,這里就不再翻譯了。