使用Unity引擎打造赛博朋克之城!CIGA Game Jam 2019 48小时独立游戏开发挑战
一年一度的CIGA Game Jam 48小時極限開發挑戰賽結束了,作為開發獨立游戲的愛好者和玩家的我們在這次活動中紛紛展現出了自己獨特的才華。同樣作為開發者中的一員,我們團隊參與了這次比賽,而這次,我們開發了一款賽博朋克風格的,以敘事為主的互動電影型游戲:《MOOD》。
在游戲中,主角將以第一人稱的形式,扮演一名缺少能量核心的機器人,經過一系列冒險故事最終收獲到自己的能量核心。
故事的開場是一段CG,簡單的展示了一下主角如何拿到能量核心,以及其生活的城市環境,隨后玩家將主角與酒吧老板溝通,得到門票,進入酒吧,并破譯了酒吧內的加密機器,獲得了自己的核心,由于時間關系,故事非常簡單無聊,因為我們基本將大部分的精力都放到了畫面表現上,因此在本篇文章中,我們將著重介紹在畫面的表現方面所做的工作,以及一些或小或拙劣的技巧。
我們將從4個方面詳細闡述畫面的渲染與制作方法,分別是:
1.引擎與工具的選擇
2.渲染管線的準備
3.場景制作
4.渲染工具的使用流程
1.引擎與工具的選擇:在游戲引擎上,因為對畫面表現有極高的需求,我們果斷的選擇了Unity3D,其渲染模塊的靈活性,可定制性以及運行效率,效果表現等方面與其他商業引擎相比都是遠遠領先的,我們在最終的Demo階段依然能夠在GTX1070上達到每秒百幀以上,這少不了引擎本身的雄厚基礎。為了盡可能提高美術制作效率,我們使用完全基于物理的制作流程,因此Substance Painter,3DSMax等工具的選擇也在情理之中。
2.渲染管線的準備:負責美術開發的小伙伴希望深層的定制渲染流程,因此我們使用了自己獨立研發的渲染管線MPipeline來完成渲染任務,而非引擎提供的HDRP。實際上HDRP在許多方面并沒有辦法滿足我們的渲染需求,而MPipeline的陰影繪制性能,屏幕空間反射質量,多種光照模型的支持,巨量貼花的支持等方面均比HDRP表現更好,由于幾個月之前我們才得知有這么一個活動,因此管線的開發時間也非常急促,所以有許多功能現在仍然在開發階段,雖然是我們內部自用的管線,但是這里依然要給出Github下載地址(文檔暫時也沒能寫完):
https://link.zhihu.com/?target=https%3A//github.com/MaxwellGengYF/Unity-GPU-Driven-Pipeline
3.場景制作:場景的制作是整個游戲的大頭,在確定賽博朋克主題之后,我們迅速頭腦風暴出賽博朋克風最顯著最易被抓住的美術風格和特點,如“不分晝夜”“光污染”“持續下雨”“奇怪的交通工具”“人類與城市機械化”“高度發達的科技與老舊的城市設施鮮明對比”,所以在游戲CG一開始這種趨向就已經很明顯了:
?
走進巷子中,凌亂的幫派涂鴉,寥寥幾盞霓虹燈也沒辦法照亮角落,與外邊的燈紅酒綠形成鮮明的對比,這時體積散射的霧效起到了關鍵性作用,霧形成一層天然的色彩屏障,降低了遠處霓虹燈的對比度,使玩家很容易就形成“我與那片樓是隔開的”這樣的感官體驗,進一步深化了賽博朋克的主題效果,即科技高度的發達與生活水平低劣的強烈對比感與隔絕感:
?
室內秉承了室外的渲染效果,光與暗在狹小的空間內顯得對比更加強烈,美術人員刻意的調整了光照的間接漫反射參數,配合鏡頭后期的特效表現出了這種效果。
?
在進入到酒吧中,走廊上的燈帶將科技感推到了極致,甚至有了一種迷幻感在其中:
?
最后就是室內場景了,室內場景的渲染使用藍紫色冷色調的面光源,配合暖色調的暖光源,再目的在于引誘玩家去吧臺進行互動,這是互動電影中常用的打光技巧,并沒有太多奇技淫巧:
?
最后互動特效依賴圖形開發人員手擼Compute Shader完成(因為確實沒做可視化編輯器):
?
當然,筆者作為團隊中的TA,對場景設計的理解有限,更詳細的內容還需要請出我們專業的美術Lute Li進行講解。
如果場景素材的制作是保證美術表現下限的“錦”,手機靚號拍賣那渲染工具的運用則是錦上添花。因此我們將詳細闡述在這款游戲中渲染工具的使用流程。
MPipeline將渲染的每一部分分別提供給了美術人員,并且每一部分可拆卸可組裝,能夠在多人協作中合并,這些部分包括但不限于貼花,體積散射,屏幕空間反射,抗鋸齒,景深,自動曝光,色彩校正等,接下來我們將逐一介紹在開發場景時是如何使用這些工具達到目的的。
從截圖中不難看出,大量的貼花效果被用來表現幫派涂鴉,我們將需要用到的貼花圖片保存為數張Atlas,并以Render Texture的形式加載,實現了類似Virtual Texture的加載方式,這樣貼花可以實現動態加載等各種奇妙需求,其操作界面對于地編人員也更加友好:
在體積霧的渲染上,我們必須嘗試使美術人員理解霧效物理渲染的含義,即霧的存在是沒有所謂“亮度”的,相反唯一能決定霧效果的是濃度和光源的亮度,所以在制作時每一塊霧效以方塊的體積形狀擺放在場景中
?
在反射方面,我們選擇使用Stochastic Screen Space Reflection,這是一種物理正確的反射,為了追求物理正確,其在高速運動的攝像頭下表現的并不優秀,好在我們游戲中攝像頭高速運動的情況并不太多,所以這確實是目前看來最優的選擇:
?
對于其他類型的后處理,MPipeline兼容了Post-Processing Volume v2的設置界面,因此原生的后處理效果基本都獲得了支持。
材質總是最直觀表現畫面質量的一點,因此我們總要在材質上完成大量的工作,使用Forward+渲染的材質,不僅對多光源支持良好,同樣可以提供數種光照模型供美術人員選擇使用,對于光照模型我們選擇直接照搬Unreal Engine 4提供的4種實現,分別是Default_Lit,Clearcoat_Lit,Skin_Lit,Cloth Cotton,配合基于物理的光照單位,能夠為不同種類的材質提供多樣化的支持:
?
在游戲中也可以看到一些油漆桶有明顯的Clearcoat材質效果,這也是常被用在金屬或大理石+油漆材質上的效果:
?
總結:
個人認為,Game Jam這樣短時間高強度的開發,是對于開發者一個很好的鍛煉,俗話講“是騾子是馬拉出來遛一遛”,要在短短48小時內將游戲有模有樣的開發出來,這對于程序框架,美術生產以及引擎工具鏈等都是一個巨大的挑戰,我們在這次活動中不僅展現出過去的一年里研究學習的結果,同樣也發現了許多新的問題,相信在未來的活動和比賽中,中我們可以帶來比這次作品劇情更加飽滿,場面更加壯觀,細節更加用心的游戲!
總結
以上是生活随笔為你收集整理的使用Unity引擎打造赛博朋克之城!CIGA Game Jam 2019 48小时独立游戏开发挑战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Unity实现游戏命令模式
- 下一篇: 故事工程学:人工智能和程序化叙事生成