當鐵門打開,一顆表面銹跡斑斑的鐵球滾落下來,,等待它的將是一次次的洗禮,。滾燙的鋼水,寒冷的冰凍,,一道道工序完成加工之后,,這枚鐵球將成為航天器上的一枚關鍵零件。
這是最近使用Unity制作的一款3D 寫實類解謎游戲《滾滾人生》當中的一個關卡,,根據(jù)游戲設定,,玩家要操縱鐵球,經(jīng)過有鋼水的路面,、木板,、冷凍、電磁機等機關通道,,到達終點,,完成游戲中設定的“加工”工藝,最終經(jīng)過去銹,、拋光,、充能等關卡后最終通關。
令人印象深刻的是,,這款看起來神似微軟經(jīng)典游戲《三維彈球》的游戲 Demo 雖然只有一個關卡,,但游戲中的每一個模型動畫的塑造已經(jīng)可以媲美很多同類型的游戲大作,。
特別是場景中的機械臂模型,鐵球通過鋼水時表面顏色的變化,,以及表面保持高溫的鐵球在木板上滾動讓其消融的動畫都栩栩如生,。
當然這歸功于美術技術芮士辰同學的設計。
“當我們確定了《滾滾人生》是一部寫實工業(yè)風格的游戲后,,我就找了大量類似的參考資料,,包括現(xiàn)有的工廠機械圖片,已經(jīng)做好的模型機械圖片等等”,。來自Unity集訓營的芮同學說道,。
芮同學參考的美術資料中不乏近年來的 3A 史詩大作,可見《滾滾人生》一開始就要站在最優(yōu)秀作品的肩膀上,,在建模方面追求精益求精,。
芮同學說,作為一位擁有經(jīng)驗的建模師,,他已經(jīng)對場景搭建相當熟悉了,。用 Maya 模型 Mudbox 制作貼圖,《滾滾人生》對基礎模型搭建和貼圖制作沒有太復雜的操作,,芮同學還用 Unity 自帶的粒子系統(tǒng)添加了些許特效,。
在模型數(shù)據(jù)資產(chǎn)做好后,下一步就是把它們導入 Unity 中制作模型渲染,。眾所周知高清渲染管線 HDRP是 Unity 引擎中效果最強大的可編程渲染管線,,其強大的性能足以渲染游戲中的每一個細節(jié)。
“用Unity HDRP渲染后的場景看上去更有動態(tài)感,,而其中的制作流程也和我之前接觸的基于物理燈光的渲染器(mental ray ,、arnold、VR渲染器)很類似,,這也讓我很容易上手”,。
“在光照方面,導入模型后默認天光,,先設置一個環(huán)境光,,從窗外引入物理天光,然后手動打光照亮場景中的主要物體,,之后在全局光下用 AO 和反射探針給場景增加一個比較大的反差,。最后經(jīng)過后處理給整個場景進行校色,并通過添加場景霧氣效果拉開前后關系與色彩對比,?!避峭瑢W解釋道。
而材質(zhì)部分,HDRP 提供的 Lit 材質(zhì)球可以模擬非常多的材質(zhì),?!皥鼍爸泻艽蟛糠帜P投际墙饘佟⒂脖砻娌馁|(zhì),,Unity 的 HDRP 中的材質(zhì)球可以模擬大部分的基礎材質(zhì),,有些地方還使用了層材質(zhì)來模擬多種材質(zhì)混合在一起的效果?!避峭瑢W說道,。
場景方面,芮同學還增加了一些貼花效果來豐富場景中的特殊部分,,比如灼燒的鐵皮,、冰霜區(qū)域等,同時編寫了一些帶有特定動態(tài)效果的 shader graph 貼花,,并用腳本來控制它們的動態(tài)效果,。
負責游戲策劃的姜子健同學專門給小球設計了發(fā)光時的變化效果,其中改變小球的是 Emisson color,,他們認為小球不管是變藍還是變紅都有一種發(fā)光的效果,,本來是想用 lerp 顏色模式處理,后來發(fā)現(xiàn)達不到指定的顏色效果就改用了moveforword 顏色模式進行了處理,。
只是大量的模型和渲染的疊加也會影響到游戲的運行,,因此芮同學在游戲性能和畫面效果之間做了相應的妥協(xié),比如在模型精度上本著能省就省的原則,,制作模型時芮同學就比較少使用模型細分,、倒角,、卡線等功能,,也沒有使用高低模烘焙手段來制作貼圖,效果的呈現(xiàn)大多以各個通道的材質(zhì)貼圖為主,。在渲染方面,,芮同學場景渲染上使用了大量的燈光烘焙,但考慮到后處理的多項效果對性能的要求頗高,,他最終砍掉了鏡頭景深,、燈光霧、運動模糊,、光線追蹤等畫面效果,。
逼真的建模也給游戲的軟件程序和 UI 動畫的實現(xiàn)帶來挑戰(zhàn)。
在測試游戲的時候,,Unity 編輯器中運行的木板消融動畫符合預期,,但發(fā)布游戲程序之后發(fā)現(xiàn)居然出錯了。經(jīng)過多次調(diào)整之后依然沒有成功,在制作工期緊張的情況下,,制作團隊只能重新制作一個新的 Shader 并測試提交,。
再比如模板移動的動畫又遇到一個奇怪的 bug,之前編寫的腳本在 120 赫茲刷新率的電腦上可以正常運行,,但到了 60 赫茲刷新率的電腦上則無法順利運行,,模板無法到達指定的地點。
另外還有一些奇怪的 bug,,比如小球模型移動時無法爬坡的問題,,團隊也著實找了不少教程來處理這些?bug。但這樣頻繁出現(xiàn)的 bug 問題,,勢必會影響整個團隊的開發(fā)效率,。
為了減少游戲程序開發(fā)中 bug 的出現(xiàn)之后對其他成員的影響,《滾滾人生》使用了game Framework 游戲框架,。它是基于 Unity 引擎開發(fā)的一款開源游戲框架,,擁有完善的擴展模塊,包括場景,、文件,、聲音、網(wǎng)絡與對象池,。方便開發(fā)者對開發(fā)資源進行管理“雖然目前在開發(fā)上用到的不是特別多,,但這個框架可以減少程序 bug 問題的出現(xiàn),可以讓團隊的開發(fā)效率有所提升,?!?/p>
除了 game Framework 游戲框架,團隊還引入了 Unity 自帶的代碼管理工具Plastic hub,,“它為每個參與游戲制作的團隊成員都建立了分支,,比如像我們團隊,有 5 個分支,,你可以看到上面記錄了 52 次的提交合并工作,。”陳同學在和團隊成員的協(xié)作中體會到了 Unity 引擎帶來的便利,,他稱贊道:“對于我們多程序開發(fā)人員包括美術技術來說 Plastic hub 是很好的代碼管理工具,。”
當然我們現(xiàn)在見到的游戲這只是一個教學關,,要想把鐵球變成真正的零件,,還需要經(jīng)過去銹、拋光,、充能等關卡,,第二關的游戲場景將會是教學關的三倍,,小球也將經(jīng)歷更多的考驗,隨著關卡難度的進一步提升,,鐵球需要經(jīng)過的機關會越來越多,。
游戲還會加入一些聯(lián)動開關和變形內(nèi)容,比如水+電就會觸發(fā)電擊開關,,熱量+水會觸發(fā)升溫開關,。小球還會在原片和球形之間轉換,玩家需要根據(jù)游戲通關的具體要求觸發(fā)聯(lián)動機關,,或者變成相應的形狀,。
相信聯(lián)動機制和球形狀態(tài)變換的加入,會使《滾滾人生》的玩法會變得更有趣,,它不在限于三維彈球式的單一通關,,讓考究的工業(yè)美術設計變得更有意義,就像這款游戲最初的意義:一個普普通通的鐵球,,也能通過改變成為尖端材料,。
作為游戲愛好者的你,是不是也想做出這樣的改變,,像《滾滾人生》團隊一樣,,做出自己心儀的游戲。
?