Strange Shift Studio是一家個(gè)人獨(dú)立游戲工作室,由Matthieu Fiorilli于2022年在蒙特利爾成立。
《Chasing the Unseen》是一款關(guān)于攀爬巨型生物并探索異世界環(huán)境的游戲。游戲中的環(huán)境都是用分形數(shù)學(xué)生成的。作為一名個(gè)體游戲開(kāi)發(fā)者,我知道開(kāi)發(fā)這樣一個(gè)野心勃勃的項(xiàng)目需要合適的工具。在這篇技術(shù)博文中,我將概述自己是如何應(yīng)對(duì)《Chasing the Unseen》中的這些挑戰(zhàn)的。
過(guò)去幾年,那些賦予獨(dú)立開(kāi)發(fā)者強(qiáng)大能力的工具取得了長(zhǎng)足的進(jìn)步,最近,實(shí)現(xiàn)這類項(xiàng)目終于成為了可能。感謝Epic和SideFX等公司的不懈努力,讓任何人都能取得這些強(qiáng)大的工具,這個(gè)項(xiàng)目也因此得以實(shí)現(xiàn)。
為了完成這個(gè)雄心勃勃的項(xiàng)目,我知道合適的工具是必不可少的,而我正是在虛幻引擎和Houdini相輔相成的關(guān)系中找到了我所需要的東西。
生物
首先,我們來(lái)看看生物和攀爬系統(tǒng)。
我的生物是在Houdini中使用各種工具制作而成的。以章魚為例,我使用了Houdini的傳統(tǒng)工具,以程序化方式為它建模,然后使用Houdini最近推出的多解算器Vellum進(jìn)行模擬。模擬為我?guī)?lái)了非常自然和流暢的變形。接下來(lái)的挑戰(zhàn)就是將它導(dǎo)入虛幻引擎,并添加可攀爬功能。為了完成這項(xiàng)任務(wù),我使用了Dem Bones這款強(qiáng)大的工具。我在Houdini中的章魚模擬太過(guò)復(fù)雜,幾何體的每個(gè)點(diǎn)都有自己的動(dòng)畫,所以此時(shí),我不能簡(jiǎn)單地將它放到游戲引擎中。Dem Bones的作用是以程序化方式生成一組骨骼和皮膚,以便使用對(duì)游戲引擎友好的數(shù)據(jù)重建模擬。這樣一來(lái),章魚的128000個(gè)頂點(diǎn)/點(diǎn)就不需要都具備動(dòng)畫了,我只需確保大約600根骨骼擁有動(dòng)畫即可。
使用Dem Bones烘焙的Vellum模擬
然后,我可以將這只生物導(dǎo)入虛幻引擎,并實(shí)時(shí)回放。我在這里使用狀態(tài)機(jī)混合了不同的動(dòng)畫。基于通過(guò)Dem Bones生成的皮膚信息,我能夠以程序化方式生成用于碰撞的凸包,然后通過(guò)自定義工具將其導(dǎo)入虛幻引擎。
虛幻引擎中的碰撞網(wǎng)格體
我生成了較低分辨率的網(wǎng)格體,將它導(dǎo)入虛幻引擎,實(shí)現(xiàn)攀爬功能。為了將角色連接到生物身上,我結(jié)合使用藍(lán)圖和C++,讓攀爬系統(tǒng)能夠使用較低分辨率的網(wǎng)格體。
使用藍(lán)圖和C++的攀爬系統(tǒng)
環(huán)境
在環(huán)境方面,我使用了分形數(shù)學(xué)和其他程序化技術(shù)。分形是一些簡(jiǎn)短的數(shù)學(xué)公式,能夠生成無(wú)限自我重復(fù)的形狀。其中最著名的是曼德博集合。
曼德博集合是以本華·曼德博的姓氏命名的2D分形。在它被發(fā)現(xiàn)的數(shù)年后,人們又發(fā)現(xiàn)了一個(gè)類似的3D版本:曼德?tīng)柷颉?/p>
這就引出了一個(gè)問(wèn)題,如何將分形添加到游戲中?通過(guò)將Houdini和虛幻引擎結(jié)合起來(lái),我成功地解決了這個(gè)問(wèn)題。在Houdini中,我使用Juraj Tomori的畢業(yè)項(xiàng)目“視效分形工具包”生成分形,然后圍繞它開(kāi)發(fā)了一套幾何體制備管線,為在虛幻引擎中添加分形做好準(zhǔn)備。這套管線可用在分形和其他程序化網(wǎng)格體的生成方法中(取決于關(guān)卡)。
為游戲關(guān)卡生成的分形網(wǎng)格體
為了做好準(zhǔn)備,將分形添加到虛幻引擎中,我必須完成許多不同的任務(wù):去掉非常小的細(xì)節(jié);創(chuàng)建平坦的可行走斜面;將網(wǎng)格體分割成塊,以便在UE中實(shí)現(xiàn)正確的遮蔽;簡(jiǎn)化網(wǎng)格體;生成LOD、UV和光照貼圖;等等。這個(gè)過(guò)程是完全自動(dòng)化的,并且經(jīng)過(guò)定制,符合虛幻引擎的要求。
最后,在完成所有這些過(guò)程之后,我會(huì)在虛幻引擎中構(gòu)建關(guān)卡,并使用光照系統(tǒng)烘焙光照貼圖。由于關(guān)卡被分成了多個(gè)部分,虛幻引擎的遮蔽系統(tǒng)只會(huì)繪制我們?cè)跀z像機(jī)中看到的網(wǎng)格體,這樣很好。而虛幻引擎的LOD系統(tǒng)會(huì)根據(jù)與攝像機(jī)的距離,以我所需的密度繪制網(wǎng)格體。對(duì)于碰撞,我生成了單獨(dú)的低分辨率網(wǎng)格體。
結(jié)束語(yǔ)
我在這里概述了我如何處理游戲中的生物、攀爬和關(guān)卡。以上就是我在整個(gè)游戲開(kāi)發(fā)中所使用的核心工作流程,在需要時(shí),我也可以為每個(gè)生物或關(guān)卡引入不同的變體。
為這些項(xiàng)目挑戰(zhàn)想出解決方案非常不容易,但是作為一名獨(dú)立開(kāi)發(fā)者,我可以自由、靈活地使用最新工具實(shí)現(xiàn)我的目標(biāo)。我希望這篇文章至少能夠在總體上幫助大家了解這個(gè)項(xiàng)目的技術(shù)流程,并對(duì)大家有所啟發(fā),讓大家認(rèn)識(shí)到現(xiàn)有工具的能力范圍。
本文轉(zhuǎn)自虛幻引擎官網(wǎng)~