一個小團隊如何在多個平臺上以優秀的效果展示手繪動畫?Subcult Joint 工作室給出了答案。他們用六年時間開發出了游戲《Cookie Cutter》。游戲中使用了數千個使用傳統動畫技術制作的高分辨率資產,而且這些資產都在 Unity 中進行了優化。由于工作室需要在清晰的視覺效果和流暢的游戲玩法之間找到平衡,因此他們廣泛使用了 2D 光照來增強圖形的深度并凸顯以探索為核心的游戲設計。
繼續閱讀,了解他們是如何實現這一愿景的;以及項目后期的意外變化如何讓他們解鎖了更快的資產管理能力,并將光照設置提升到了一個新的水平。
身兼藝術家、動畫師、Unity Learn 講師的 Subcult Joint 創始人 Stefano Guglielmana,從 2018 年就開始開發游戲《Cookie Cutter》。他的靈感來自之前一個 Unity 項目中被拒絕的角色:Cherry,一個說話強硬的機器人。他說:“我愛上了她的設計,所以我開始為她制作動畫。”Stefano 對《Cookie Cutter》混合了清版動作游戲和類銀河戰士惡魔城(Metroidvania)的游戲玩法有著清晰的構想,但需要開發人員的支持來實現這一目標。在獲得資金后,他聘請了程序員 Francesco Bizzini 和一批藝術家和設計師來合作開發這個項目。
他們取得了這些成果:
發售一個月就售出 6 萬份,收入 120 萬美元
輕松管理 2000 多張精靈圖表和 50 多個精靈圖集
使用超過 10000 個 2D 光源點亮游戲
在項目中期成功升級到 Unity 2022 LTS
內容的呈現方式
《Cookie Cutter》的手繪視覺效果是一個主要賣點。Stefano 知道它們的制作會很復雜,但額外的努力肯定是值得的。他說:“視覺享受是讓我們愛上電子游戲的原因。在 Subcult Joint,我們十分欽佩吉卜力工作室和迪士尼的大師們。雖然我們還沒有達到他們的水平,但在《Cookie Cutter》中,我們想要挑戰自己的動畫技能,努力制作出一款非常酷的游戲。”
對于一個小型團隊來說,這個項目極具挑戰性。大部分藝術資產(超過 1000 個背景、精靈、動畫和粒子效果)在視覺上非常復雜,并且都是使用傳統動畫技術精心制作的。在《Cookie Cutter》中,無論是玩家角色(Cherry)還是 NPC(27 種標準敵人類型和五個巨型 Boss),每個角色都有 20 到 40 個動畫。每個單獨的動畫可能需要 8 到 48 小時才能完成。不同的藝術家會使用不同的 DCC(數字內容創建工具),但 Stefano 大多數資產都是用 Adobe Photoshop 制作的。
當 Stefano 完成一幅插畫后,他使用 PSD Importer 將其轉換為 8K 紋理,然后在 Unity 編輯器中進行優化,以防止顯存溢出問題。通過合理地使用紋理導入設置,他成功減少了每個平臺的紋理大小,并且遵循二的冪次方尺寸規則等最佳實踐進一步優化了紋理。
在編輯器中查看 Cherry 的各種動畫狀態。Subcult Joint 花了很多時間處理動畫過渡,以確保流暢的游戲體驗。
Stefano 表示:“在完成 Photoshop 中的工作后,我通過將每個動畫幀逐一排列到一個新圖像上,手動創建了精靈表(Sprite sheets),每個圖表的尺寸始終是 512 x 512 的倍數,遵循 Unity 中的二的冪次方尺寸規則。在此基礎上,Unity 的 Sprite Sheet Editor 讓我可以輕松地切割精靈表,或者通過移動支點(pivot)或每幀的像素來進行其他調整。”這些工作流程確保了《Cookie Cutter》的視覺效果在多個平臺上得到了優化,并且減少了性能問題。
在項目結束時,Subcult Joint 工作室將 2000 多張精靈表打包成 50 多個精靈圖集(Sprite Atlases),并按角色進行分類。“精靈圖集讓將游戲導出到不同的目標主機變得非常簡單,同時保持了穩定的幀率。我們的目標基本上是確保 60 幀每秒(fps),以保持游戲玩法流暢、整體性能順滑。這極大地優化了內存使用,并且使加載時間變得更快。”Stefano 說道。
自定義游戲玩法
Stefano 希望避免其他注重動畫的游戲常犯的錯誤。他解釋道:“有很多動畫的游戲可能會顯得笨重。有時候,動畫師想展示自己的技藝,但最終會影響游戲的流暢性。”他補充道:“在《Cookie Cutter》中,我們同樣注重游戲玩法的流暢性,因此,當你手持控制器時,游戲的操作體驗和動畫一樣順暢。”
考慮到這一點,他需要一種能在編輯器中快速調整游戲玩法,同時又不擔心破壞項目的方法。這就是 Francesco 所說的編程方面的最大技術難題之一:在 Unity 中創建一個能有效運行且不依賴過多代碼干預的系統。
他表示:“我的目標是為設計師提供一種方式,讓他們能夠直接從編輯器中自定義游戲的任何方面。”借助 Unity 的內置擴展性,Francesco 能夠添加自己的自定義功能,彌合他與團隊中技術較弱的藝術家之間的知識差距。
為了實現快速的游戲玩法和激烈的連擊動作,Francesco 在 Unity 中實現了第三方可視化工具 ActionGraph,以模塊化的方式構建和設計有限狀態機(Finite State Machines)。當動畫的精靈圖(Sprites)被加載時,ActionGraph 使得每一幀都可以加入游戲邏輯,從而讓藝術家能夠即時調整設置,例如碰撞體(colliders)或傷害數值(damage numbers)。舉個例子,Stefano 可以使用 ActionGraph 在攻擊中添加一個命中框(hitbox),并設置它在特定幀激活,啟用和禁用跳躍計數器,觸發戰斗資源的生成和消耗等等,這些都無需程序員的參與。
Francesco 還編寫了許多自定義的編輯器功能,以便 Subcult Joint 中以藝術家為中心的團隊能夠更多地參與項目。基于 xNode 可視化系統,UpWire 讓藝術家能夠輕松地管理人類和 AI 輸入、編輯碰撞體、為特定動畫節點添加視覺效果等。
《Cookie Cutter》的圖形連擊系統(Graph Combo System)使 Subcult Joint 可以自定義攻擊的命中框和參數,以創建連續的攻擊、添加像攝像機震動這樣的視覺效果,以及調整敵人對攻擊的反應方式。
Francesco 解釋道:“我把它打造成為了一個真正的戰斗系統編輯器。它能夠處理所有游戲變量,因此只有當玩家解鎖了某個技能、武器或升級后,并且處于正確的位置時,才能執行特定的動作,例如空中攻擊或地面攻擊。”UpWire 還能處理物理中的力、位置轉換和身體旋轉等設置,這樣藝術家就能更輕松地試驗戰斗機制。
在對戰 Boss 的圖形連擊系統(Graph Combo)中,Subcult Joint 可以調整攻擊命中框的力、方向和反彈值,或自定義 Boss 如何對 Cherry 使用不同武器類型的攻擊作出反應。
Timeline EZ Events 是 Francesco 的另一個自定義工具,它讓設計師能夠直接在編輯器中發送消息并調用函數(包括對場景對象進行操作),并為 GameObject 添加多種功能。例如,團隊可以創建一個控制桿,當它被拉動時,不僅可以解鎖一扇門,還能同時隱藏地圖和小地圖上的“上鎖的門”標記。
Subcult Joint 使用 Timeline EZ Events 創建了《Cookie Cutter》的過場動畫。這個工具讓他們可以將角色動畫、攝像機移動、音頻和視覺效果按順序排列,制作電影式的場景。
為了幫助設計師處理《Cookie Cutter》的小地圖(在任何以探索為重點的游戲中,這一部分非常關鍵),Francesco 創建了 EzMiniMapPro。Francesco 說:“這個工具用于創建游戲區域的地圖,并為圖像生成提供了一些有用的自定義和優化。在運行時,它支持基于攝像機視野的動畫疊加標記和自動探索遮罩。這個遮罩可以通過 SaveGame 進行存儲和恢復。”
創建和實現這些自定義功能雖然需要付出不少工作,但它為整個團隊帶來了創作自由,讓 Subcult Joint 的每個人都能參與到《Cookie Cutter》的設計、機制和游戲玩法平衡中。
使用 EzMiniMapPro,Subcult Joint 能夠捕捉他們在編輯器中構建的整個地圖,并將其導出到 Photoshop。然后,Stefano 可以在生成的地圖上進行繪制,使其與游戲的視覺風格匹配,之后再將其導回到 Unity。
設計游戲世界
《Cookie Cutter》中的巨大世界(即 Megastructure)包含九個可供探索的區域。一旦某個區域的概念原型定稿,Subcult Joint 的關卡設計師 Gabriel Raymond Roy 就會為該區域制作灰盒(grey-box)模型,創造一個玩家需要探索的迷宮。
Stefano 說:“一個好的關卡設計師知道如何創建既有趣又值得反復探索的主要和次要路徑。每個死胡同都應該為玩家提供某種獎勵,每個開放區域都應該遭遇敵人,讓玩家可以收集材料。”
當某個區域的灰盒模型設計完成后,Stefano 和設計師們就開始為場景添加環境細節,將手繪的精靈圖(Sprites)沿 Z 軸的四個點分層排列。《Cookie Cutter》使用的是一個透視相機視角,并沒有編寫視差效果(parallax)。因此,當玩家移動時,他們會看到某些元素在透視中顯得“錯位”。Cherry 站在“默認”位置旁邊,與敵人、物品和平臺等可交互的游戲對象一起,而非交互的前景、背景和“遠距離”元素則為場景視圖增添了模擬深度。
照亮游戲世界 Megastructure
Stefano 開玩笑地說:“我們試圖為每個區域賦予獨特的個性,但由于游戲背景是賽博朋克風格,加上團隊對機庫和金屬工廠的偏愛,我不確定是否真的成功為每個區域增加了獨特性。”
為了賦予每個區域獨特的視覺風格,Subcult Joint 大量使用了 URP 中的 Spot 和 Freeform 2D 光源。《Cookie Cutter》的世界里有超過 10000 個這樣的光源。Stefano 說:“游戲中的每個光源都會實時照亮我們的精靈,創造出角色、動畫和環境之間的緊密而自然的協調感。在黑暗的地方,角色會被陰影覆蓋,在外部區域暴露在飽和、受污染的天窗光下時,則會沐浴在光線中。我非常喜歡這些細節!”
Subcult Joint 在游戲中直接使用了 Unity 的 2D 光照,將它們應用到與環境精靈圖相同的Z軸層上,沒有進行額外的調整。Stefano 解釋道:“默認的 2D 光照非常棒,可以照亮游戲區域,而且可以決定它們影響哪些層。我們希望默認層始終對玩家清晰可見,這樣他們就能明白哪里可以走,哪里不能走。然后我們還在背景、前景和遠距離層上添加了光照。”
《Cookie Cutter》這款游戲的引人注目的 2D 光照在整體游戲設計中發揮了重要作用。作為一款類銀河戰士惡魔城類型的游戲,它側重于探索。光照被用來為玩家提供環境線索。Stefano 解釋道:“光照講述了一個故事,它告訴玩家應該去哪兒,引導他們走上主路徑,或者隱藏一些次要的可選路徑。”
閃爍的燈光可用于吸引玩家的注意力。Stefano 分享了他們是如何制作這種效果的:“2D 光照的優勢在于,你可以對它們進行動畫處理。制作閃爍的燈光非常簡單:選擇光源,進入動畫窗口,創建一個新的動畫,調整光源的強度(0, 9, 0, 9)。如果你想在其他地方創建相同的效果,還可以將這個動畫復制到其他光源上。”
在開發的最后階段升級Unity版本
在開發的最后階段,《Cookie Cutter》的 PlayStation 5 版本遇到了顯存溢出的問題,阻礙了游戲的發布。Subcult Joint 通過升級 Unity 版本來解決這個問題。
在如此接近游戲發布的時間點進行版本升級并不是最理想的選擇,但如果不解決這個問題,游戲就無法登陸 PlayStation 龐大的玩家市場。因此,Subcult Joint 團隊決定全力以赴,將項目遷移到當時最新的 Unity 2022 LTS 版本。這次升級讓他們能夠使用新的性能分析和調試工具,比如更新后的 Memory Profiler(內存分析器)。
Francesco 表示:“Memory Profiler(內存分析器)中新的快照對比功能幫助我們識別并解決了長期存在的顯存溢出問題。2022 LTS 版本在導入紋理時速度也更快了,而且這次升級最終讓我們的游戲變得更加穩定。”
升級后,團隊能夠對《Cookie Cutter》的視覺效果進行最后的打磨,而這些優化在之前是無法實現的,因為他們現在可以使用正式版的 2D 光照系統。但這也意味著他們需要根據新的參數,逐一檢查和修復游戲中之前使用的數千個實驗性 2D 光源。幸運的是,得益于2022 LTS 版本中的一些功能,這一過程變得更加高效。
通過 Unity 2022 LTS 版本中更新的精靈圖集功能,Subcult Joint 團隊能夠更加輕松、高效地將數百個手繪動畫推送到不同的目標平臺。同時,URP 正式版的 2D 光照系統也幫助團隊為游戲環境增添了更強的深度和氛圍感。
Stefano 解釋道:“我們使用了新的 2D Light Explorer 來選擇每個光源并手動調整。我們主要使用了 Spot 光源和 Freeform 光源,而 2022 LTS 實際上更新了 Freeform 光源的衰減特性,看起來比舊版好得多。雖然工作量很大,但我們成功修復了需要特別處理的技術問題,并進一步提升了游戲的質量。”
Subcult Joint 的首款游戲《Cookie Cutter》是藝術家和程序員緊密合作從而創造奇跡的一個例子。這個小團隊制作出了一款高視覺追求且成功的類銀河戰士惡魔城游戲,在發布的第一個月就售出了超過 60000 份,并且他們沒有在畫質或游戲玩法上妥協,始終堅守最初的創作理念。
Unity 官方微信
第一時間了解Unity引擎動向,學習進階開發技能
每一個“點贊”、“在看”,都是我們前進的動力
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.