為了玩法,重做系統
繼《雙人成行》之后,Hazelight工作室的新作《雙影奇境》再度掀起“雙人合作游戲”的熱潮,在發售七日后,銷量就已達到200萬份。
相較于單屏游戲,雙屏合作游戲的實現難度倍增,但《雙影奇境》在為玩家提供了各種天馬行空的創意玩法的前提下,保證了絲滑的操作手感和極其舒適的游戲體驗。
為了弄清這些玩法究竟是如何實現,競核在GDC大會上慕名聆聽了Hazelight工作室的玩法程序設計師Ylva Werner的演講,從中了解了Ylva及其團隊所搭建的核心系統、該系統的優勢與成本以及在游戲中的具體實現。
這位經驗豐富的開發者在演講中侃侃而談,晦澀難懂的專業詞匯在她的講述下就如同塊塊積木,最后嚴絲合縫地構建出了一個動態、龐大又極具實用性的系統模式。
做決策的不是組件,而是游戲對象
2017年,Ylva Werner以工具與玩法程序員的身份在《絕地潛兵2》里大約工作了4年,后加入了VR游戲《吸血鬼:避世血族-正義》的開發,最后在2023年春天,成為了Hazelight工作室的一員,開始為《雙影奇境》進行玩法實現。
在《雙影奇境》中,Ylva及其團隊構建了包含150萬個核心邏輯單元的玩法體系,里面可能有超過10000個可交互的玩法節點。
Ylva認為,當脫離《雙影奇境》的特定語境討論系統設計時,必須審視全局工具的獨立性。他們基于虛幻引擎構建了不同于當前主流游戲引擎采用的TCS結構的新型組件架構。在新的架構中,行為控制完全由功能模式(Capabilities)接管。而對于TCS,Ylva指出,在2017年的GDC大會中《守望先鋒》的程序師已經講得很透徹了。
Ylva向人們展示了玩家使用弓箭時進行動態瞄準的場景,右側調試面板中的功能單元會實時激活而顯示為綠色,這代表著瞄準校準、軌跡、蓄能等反饋模塊的協同運作。相較于組件模式的TCS,功能模式的優勢在此展露無遺——更能實時且精準地反饋游戲對象。
這個設計源于《逃出生天》(A Way Out)項目的技術復盤,當時程序設計師們由于多重組件相互干擾而深受困擾,尤其是在聯機同步時還存在大量不可控因素。因此,在《雙影奇境》立項之初就確立了的核心準則:組件僅作為數據容器,所有行為邏輯必須上移至游戲對象(Game Objects)層實現。
這一準則顯然是實現《雙影奇境》各種玩法的關鍵前提,為此,Ylva特意又強調了一遍:
“做決策的不是組件,而是游戲對象。”
而在游戲開發中經常會出現某個代碼塊承載了超出其職責行為的情況,比如把所有邏輯編碼都堆砌在一個類上,結果導致代碼庫膨脹過度,從而使系統陷入混亂。Ylva等人針對這種情況,做了破局之法:把游戲行為抽離成功能單元,只有當行為的復雜程度超出限定閾值,才需啟動備用的功能模式。
例如,在Ylva等人的設計架構中,弓弦蓄力的數值會被寫入弓箭組件,與此同時,射擊校準的數值也通過讀取該組件來判斷是否達到發射閾值。這種數據驅動模式還延伸至動畫系統:當動畫需要同步表現拉弓動作時,同樣通過讀取同一組件的蓄力值來決定下一幀的骨骼姿態。
這種多個功能模式共享讀取同一個組件數據源的架構打破了傳統“組件和行為”一一綁定的關系,使得組件和行為不再是線性對應,而是以數據流為紐帶而構成的動態協作網絡。通過這種模式,設計師們可以精準每個功能的觸發鏈路。
此舉似乎打破了開發過程中的技術壁壘。在《雙影奇境》的團隊中,只有13名程序設計師。但在原型驗證階段,功能模式的創建使得其他團隊成員無需依賴他們,自主便可完成大部分行為邏輯的裝配,大大提升了開發效率。
為了直觀展示功能模式的設計,項目組還建立了“自由創作日”,在特定的周期內允許所有人用這套系統自由創新玩法。在活動中,這套系統極大地激發了大家的創造性,不僅有些玩法順利融入既有關卡,還有玩法被納入了主線。
講到這里,Ylva終于明確了她所說的功能(Capability)的定義:是一種包含狀態、事件、轉換規則,以及具有決策性的代碼系統。盡管這和常見的狀態機(State Machine)非常類似,但實際上是有本質差別的。
功能模式能夠實現多功能并行激活且具有優先級轉換能力,可以智能協調沖突的行為。例如,當玩家忽然切換武器時,相關功能模塊將被自動觸發而不需要先回到預設狀態。
程序團隊還為特定關卡裝載了特殊的功能板塊,例如“攀爬能力”、“滑索能力”等等。這些能力可以有效規避傳統狀態機中常見的更新時序沖突。比如“應急墜落能力”就被設定為最低優先級,僅在所有行為相關功能均未觸發時才會激活,確保了所有行為都能優先響應玩家做出的指令。
而構成觸發器的則是由5個關鍵函數(ShouldActivate, ShouldDeactivate, OnActivated, OnDeactivated and TickActive)所組成的觸發軸,幾乎可以套用所有行為邏輯。在傳統的組件方案中往往需要在基礎功能中內置大量特殊條件進行判定,但在Ylva等人設計的模式下,特殊情況都被包含在可推斷的行為內,從而能在保持核心代碼簡潔性的同時,讓系統具有一定“彈性”。
復用、開發與增效
當然,設計師們在背后所付出的不止如Ylva所展示的這些,為了讓玩家能體驗到更加流暢絲滑的角色動作,他們還為這一模式添加了各種行為表單(Sheet),以此來為玩法增添更多趣味。
如此實用的功能模式自然不能只使用一次,Ylva表示他們建立了一套獨特的代碼管理范式。有些邏輯相通的行為只需要調整配置表中的相關參數,即可形成新的獨立單元。通過不斷復用和創新代碼,團隊最終以驚人地迭代速度構建了超過10000個交互玩法的單元,且將行為沖突率降到一個極低的數值上。
Ylva指出,為了實現游戲資產化管理,他們專門設計了一種可視化參數面板,所有核心功能單元必須通過C++實現,嚴禁在底層藍圖中創建額外的功能類型。這種自我約束確保了核心系統的純粹與完整,且降低了服務器的耗能。
不僅是程序設計師,其他團隊的成員也能利用可視化窗口,在無需重新編譯模塊的情況下,讓所有修改即時生效,從而靈活調整開發內容。Ylva還補充道:“這些提升效率的優勢遠遠大于我們開發它的成本。”
這一點似乎引出了Ylva在演講最初時提出的“優勢與成本”:由于減少了代碼冗余,CPU獲得了更加充足的計算空間,導致響應速度加快,反饋給玩家的就是更少的失誤和更舒適的體驗。
更難能可貴的是,Ylva等人開發的內容還具有一定動態調節能力。雙屏實時動作實現的難度要大于單屏,但這種功能模式使得部分關卡能在不編寫任何代碼的情況下,通過內置的調節器動態改變謎題的難度曲線,快速實現團隊想要達成的效果。
在談到游戲實例時,Ylva向人們展示了BOSS戰的攻擊模塊。如她所言,團隊使用的功能模式壓縮了誤差傳感的時間,玩家能夠更加實時的進行游戲行為而不會因系統而被延誤,例如在實現二段跳的同時采取攻擊行為,并不會造成如傳統組件模式下的行為紊亂。
動態的實現不僅停留在玩家所操控的角色行為上,游戲場景同樣被賦予了動態變化。例如在激光機關響應的環節,光源會隨著玩家的行為以及玩家所處的環境發生變化。
“雙向奔赴”的熱愛
Ylva團隊的設計在行動系統、AI行為樹、戰斗反饋、動態謎題以及環境敘事上都展現了非凡的適應性,這不僅是技術上的優化升級,也是一次設計思維的革新。Ylva表示她并不是想否認過去的架構,也不是想要讓所有人都接受他們的方式,而是更希望通過這次的分享,讓所有對程序和玩法開發感興趣或愿意為之付出心血的人有所啟發,就像她幾次都在GDC活動中從其他開發者處獲得靈感一樣。
“我希望大家能夠拓展這些功能,開發它們更多的潛力。”Ylva在演講的最后期許道。
而如何激發身處團隊的開發者的潛力,似乎與團隊本身的氛圍和管理緊密相關。
在演講結束后,當競核向Ylva詢問,為了使游戲調性保持一致,在開發玩法時是否需要同敘事等其他相關團隊進行高度協作時,Ylva告訴競核,敘事等內容是他們的游戲制作人Josef主要負責,而作為玩法程序員的她被給予了很大的自由度,比起協作,他們更像是在共同創造游戲中的種種有趣時刻。
到此為止,Ylva的演講和回答都充滿了理性和嚴謹。不過,競核提及《雙影奇境》有非常多的中國粉絲時,這位言語縝密的程序設計師第一次顯得有些激動和“語無倫次”。
“哦!我不知道該說什么好。我是說,我其實非常自豪和驚喜。說實話,雖然我們沒有直播也沒有在平臺上留言,但我們一直在盡量多看大家發的內容。對于我們開發人員來說,(這部游戲)真的傾注了非常多的心血,所以真的很高興大家能喜歡。(有時候)看到大家的反饋很有趣——好吧,我得說,那些反饋真的很暖心。”
除了實現所有想要達成的創新玩法,這似乎是所有開發者們都希望得到的反饋:玩家熱愛他們的游戲。
而這些熱情與贊揚終將化為動力,讓備受鼓舞的開發者們干勁十足地創造下一款游戲。
*爆料丨合作丨招聘:點擊或戳微信號 luoxuanwan111
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.