游戲開發(fā)中 實(shí)現(xiàn)炸掉一堵墻有多難?

在很多游戲宣傳視頻中經(jīng)常有主角炸掉建筑物的酷炫場面,但在實(shí)際游戲中,玩家操控的游戲角色往往連堵墻都炸不掉,少有的可破壞場景,也需要在系統(tǒng)提示允許下。為什么玩家不能隨意隨意拆毀一堵墻,炸掉一座橋?本文將從技術(shù)上和可玩性上,解讀實(shí)現(xiàn)這些場景需要游戲開發(fā)者付出哪些努力。

一、技術(shù)上
在真實(shí)世界里,物體受到?jīng)_擊會破裂成若干小塊,在游戲中,這種破碎效果是由物理引擎中的破碎系統(tǒng)實(shí)現(xiàn)的。
游戲物理引擎會模擬物體(剛體)的撞擊,當(dāng)撞擊發(fā)生時,物理引擎計算出撞擊的位置和沖量,將信息交給破碎系統(tǒng),破碎系統(tǒng)判定是否需要破碎,如何破碎,如果需要,就將剛體切割和分解成若干合適的碎片,切割后由物理引擎繼續(xù)控制碎片,模擬碎片在真實(shí)世界的運(yùn)動。

在往下講之前,先普及一個游戲開發(fā)的小常識,游戲中所有物體都是由面組成的,面越多,細(xì)節(jié)就越真實(shí),但對性能的要求也越高,因此游戲開發(fā)者需要不斷平衡畫面表現(xiàn)和性能消耗,用最少的面實(shí)現(xiàn)最優(yōu)質(zhì)的效果(這方面塞爾達(dá)傳說 曠野之息做得非常牛逼)。


如何切割
破壞系統(tǒng)在切割碎片的過程中,需要計算碎片剛體的質(zhì)量屬性和形狀切割。
剛體質(zhì)量屬性即剛體的質(zhì)量、轉(zhuǎn)動慣量和重心,為的是盡可能真實(shí)的模擬碎片運(yùn)動;而形狀切割要保證碎片質(zhì)量屬性便于計算,且形狀大小豐富,接近真實(shí)破碎效果。
除了要切割剛體的形狀外,還要切割用于渲染的形狀,切割渲染形狀的面,可以在切割剛體的面上,增加一些細(xì)節(jié),同時帶上紋理和uv坐標(biāo),用于產(chǎn)生切割面的材質(zhì)。


什么時候切割
對于什么時候切割碎片一般有兩種方案。
一種是預(yù)切割,在資源制作的時候制作好帶貼圖的碎片,在游戲運(yùn)行時根據(jù)預(yù)先設(shè)定好的切割來分割。此種方式在運(yùn)行時比較節(jié)省運(yùn)算量,但是無論玩家如何著力,分割的結(jié)果都是一樣的,和真實(shí)情況有很大差距。

另一種是在游戲運(yùn)行的時候做,實(shí)時生成符合當(dāng)時條件的切割,這種方法可以根據(jù)實(shí)際情況生成不同的碎片,比較接近真實(shí)世界的情況,但是運(yùn)算量也非常大,容易引起游戲的卡頓,非常依賴機(jī)器性能。

不規(guī)則邊緣如何生成?
破碎系統(tǒng)僅做切割和分解的工作,物理引擎本身不會去對破碎邊緣區(qū)做細(xì)碎的東西,最開始的破碎都是方的、六邊形等等,慢慢的添加一些細(xì)節(jié)。而不規(guī)則邊緣的視覺效果主要是在Shader著色器里去做,從渲染層面做出比較好的不規(guī)則效果。
對于實(shí)時大量破碎,就需要結(jié)合特效來做一些效果展示。比如一個很大的爆炸,基本上是破碎系統(tǒng)切割+特效,同時還要盡量減少切割,減少面數(shù),否則機(jī)器依然會非??D。

育碧游戲(Ubisoft)《彩虹六號:圍攻》(Tom Clancy's Rainbow Six: Siege,2015年首發(fā))的破壞系統(tǒng)是其一大特色,游戲中易碎材質(zhì)(如木頭、玻璃等)所組成的表面皆可破壞,包含了墻壁、天花板與地板。這些材質(zhì)除了使用炸藥也可以用槍擊或近戰(zhàn)攻擊破壞,若墻面遭到加固則需要特殊的炸藥方可擊破。要實(shí)現(xiàn)這樣的破壞系統(tǒng),彩虹六號的策劃們是如何摧殘程序員的呢?

請看彩虹六號物理程序員的泣血陳述:
在R6(彩虹六號)里你可以在很多墻的任意位置開洞來創(chuàng)造新的視線。你閑著蛋疼甚至可以用槍挖個狗洞爬出去。這是這個游戲最大的創(chuàng)新。為了支持這種創(chuàng)新,開發(fā)團(tuán)隊(duì)經(jīng)歷的是徹徹底底的血淚史。

首先,我們討論的是把墻在任意位置打破這種事情。要做到這一點(diǎn),靠預(yù)先把墻切成幾塊是不行的。因此,所有的墻體破壞都是根據(jù)破壞力大小實(shí)時計算的。而R6的設(shè)計目標(biāo)是在PS4這種垃圾上PVP模式下要能跑60幀。

其次,拆墻顯然會影響到很多GAMEPLAY方面的事情。射擊,物理系統(tǒng),人物移動,AI,NAVMESH都要根據(jù)破壞系統(tǒng)的結(jié)果做出反應(yīng),這又是一個CPU黑洞。

最后, R6是個競技向的聯(lián)網(wǎng)FPS游戲,如何在各種網(wǎng)絡(luò)條件下正確地同步所有初始條件,從而保證所有的玩家都能看見相同的破壞效果,這又是一個天坑。

同時,因?yàn)榉醋鞅椎男枨?,你需要把破壞引擎放在服?wù)器上也執(zhí)行一遍,導(dǎo)致R6非常非常非常燒服務(wù)器。R6各種坑爹BUG跟這個多少都有點(diǎn)聯(lián)系,但是相比技術(shù)本身的復(fù)雜度和育碧愿意在這個游戲上投入的人力來說已經(jīng)相當(dāng)不錯了。

二、可玩性
游戲中,如果要保持一個預(yù)期的體驗(yàn)氛圍,原則上每一個可交互的內(nèi)容都要對其有意義。這里的意義,是指玩家可以從這樣的互動中獲得東西,包括不限于經(jīng)驗(yàn)值、得分、可能出現(xiàn)的道具、額外的信息、策略性玩法,以及加深對主題的印象等等,也即可玩性。
實(shí)現(xiàn)這種互動需要特定的場景擺放--關(guān)卡設(shè)計。如果玩家可以隨意破壞關(guān)卡,或者一種互動被設(shè)計出來,而玩家從中得不到任何有助于該體驗(yàn)和氛圍的額外內(nèi)容,那么這種互動,除了會徒增玩家的認(rèn)知負(fù)荷,還有可能破壞原先想定的整體氛圍,玩家也難以從中獲得滿足感。

以育碧一款經(jīng)典游戲--《雷曼》(Rayman,1995年發(fā)售)為例,這是一款解密闖關(guān)類的跑酷游戲,在當(dāng)時的版本中出現(xiàn)了利用空氣墻與二段跳快速通關(guān)的bug,也為育碧今后的一大批游戲正式奠定了買bug送游戲的基調(diào)。
在育碧后來的波斯王子系列之中(刺客信條),bug更是成為了游戲中的最大樂趣,玩家們常常會因?yàn)樽咤e路而誤入設(shè)計師的后花園,劇情的奇葩觸發(fā)方式造成與npc對話的割裂,甚至主動利用空氣墻來快速解決某些難過的任務(wù)。


最后再舉個多人互坑游戲--《兄♂貴敢死隊(duì)》(BroForce),一款像素風(fēng)橫版射擊游戲,游戲中玩家是一名鐵血硬漢,通過不斷解救兄♂貴并成為新兄♂貴(哲♂學(xué)),消滅boss通關(guān)。
兄♂貴敢死隊(duì)把破壞場景做成一種效果的體現(xiàn),來給玩家快感,兼具游戲性,因此這個游戲的關(guān)卡設(shè)計本身就需要不那么在乎被破壞或者被繞開。但因?yàn)橛螒蛑型婕铱梢云茐娜魏螇Ρ冢葑?,因此也?jīng)常會出現(xiàn)路被炸光,只能自殺重來的尷尬場景。
作者簡介:
游鯊游戲圈是游戲策劃資訊分享、入行輔導(dǎo)平臺,致力于行業(yè)知識分享,能力提升,簡歷及筆試面試強(qiáng)化,助力廣大同學(xué)成功邁入游戲行業(yè)。了解更多請關(guān)注微信公眾號【游鯊游戲圈】
