二、Camera
在我入行之前,camera是我很難理解的一個概念,很難理解是怎么工作的,現(xiàn)在其實也沒玩明白,個人感覺這也是目前國內(nèi)游戲行業(yè)和一線廠商差距最大的地方,震屏拆解雖然很抽象,但努把力大家也能做一下,可是更精致的鏡頭運(yùn)用需要大量的影視化知識,學(xué)海無涯了屬于是。
在FPS游戲中,camera包含鏡頭本身和HUD兩大部分,鏡頭常用到的功能大概會有三類,鏡頭控制(偏移、旋轉(zhuǎn)、俯仰、推拉、縮放)、交互鏡頭/運(yùn)鏡演出和后處理(景深、鏡頭特效等),HUD我們在這里只聊和打擊感有關(guān)的部分。
1. 鏡頭
1.1 鏡頭控制
1.1.1 偏移、旋轉(zhuǎn)與俯仰

爆炸震屏

Camera偏移、旋轉(zhuǎn)、俯仰
無論看起來多復(fù)雜的屏幕震動,小到槍械檢視時從上到下看槍,大到炸彈在身邊爆炸,都是由鏡頭X/Y/Z軸的偏移/旋轉(zhuǎn)曲線構(gòu)成的,但每條曲線變化的頻次、振幅、衰減、剛性、是否疊加隨機(jī)噪波等,疊加出來的結(jié)果會千差萬別。
還會遇到兩個問題:
- 關(guān)鍵幀/小數(shù)幀對不齊:復(fù)刻某些端游表現(xiàn)的時候會出現(xiàn),端游使用60幀動畫,而自己的編輯器只有30幀,部分關(guān)鍵幀丟失導(dǎo)致效果不好
- 引擎/編輯器曲線導(dǎo)入問題:3DMAX調(diào)試完畢進(jìn)編輯器變成曲線,關(guān)鍵幀之間插值變化不可控或其他原因?qū)е逻€原程度低,總覺得只是形似而神韻不在
設(shè)計上不直觀+參數(shù)多+工具易用性問題,導(dǎo)致震屏曲線是一個很難調(diào)好的技術(shù)活,salute to 所有3D動作兄弟。

開火震屏
鏡頭控制上需要注意的是,部分動作的鏡頭動畫是不能疊加偏移和俯仰的,例如開火動畫,因為子彈是從鏡頭中心射出,為了避免對子彈的彈道產(chǎn)生影響,開火的鏡頭動畫只能做XY軸平面的旋轉(zhuǎn)。
1.1.2 推拉與縮放

武器舉鏡的場景FOV變化
![]()
CODM持槍FOV0&100對比
FPS游戲中會將場景FOV和武器FOV相分離,避免某些情況下調(diào)整FOV影響武器表現(xiàn)的問題。
縮放也是通過調(diào)整FOV來實現(xiàn)的,通過調(diào)整場景FOV模擬出不同倍鏡的放大效果,圖示為舉鏡情況下場景FOV的變化和設(shè)置中手動調(diào)整武器FOV的變化。
![]()
鎖HFOV的和平精英
FOV還涉及到一個不同設(shè)備(手機(jī)/pad)的鏡頭顯示范圍規(guī)范,需要決定采用HFOV或是VFOV,個人建議是:
- 鎖定VFOV:保證不同設(shè)備上下視界一致,適用于存在大量高低差作戰(zhàn)的游戲,避免由于屏幕比例不同獲取更多高低差信息導(dǎo)致不平衡
- 鎖定HFOV:保證不同設(shè)備左右視界一致,適用于偏地面作戰(zhàn)高低差有限的游戲,方形屏幕的可見區(qū)域會更多,但相對畸變更嚴(yán)重
也有更暴力的法子,有些游戲為了限制平板的強(qiáng)度,同F(xiàn)OV的情況下會縮小平板的視野,這個看項目組需要。

跳躍過程的彈簧鏡頭變化
至于推拉,F(xiàn)PS游戲中,常規(guī)鏡頭沒辦法加搖臂,畢竟鏡頭模擬的是本人的視野,但有一些特殊情況下會切換,例如命運(yùn)2當(dāng)中的翻滾,不過這個不涉及鏡頭控制,更像是運(yùn)鏡演出了,后面會提到。
圖示中的鏡頭搖臂的推拉效果,鏡頭拉遠(yuǎn)再到拉近,能使整體的位移更加生動。
如果要做的更極致一些,還可以疊加FOV的變化,例如warframe的速度越快FOV越大的設(shè)計。
![]()
warframe的FOV與速度掛鉤
1.2 交互鏡頭/運(yùn)鏡演出
純粹的運(yùn)鏡演出往往是做沉浸感和場景敘事需要,舉個例子:

大家最喜歡的上泰坦
還有許多經(jīng)典鏡頭,例如荒野之息開塔,圣歌上戰(zhàn)甲之類的,玩家按下按鈕之后播放一段流暢的運(yùn)鏡演出(1P或者3P),能夠大幅增加游戲過程中的沉浸感,這類鏡頭做的時候注意記錄camera的狀態(tài),計算好淡入淡出時間,做好插值即可,但播放的演出鏡頭需要下大功夫。
為了強(qiáng)化打擊感的運(yùn)鏡演出,比較成功的例子是命運(yùn)2處決和翻滾、COD系列的處決。

命運(yùn)2處決

雙腳懸空的處決
順便提一下,類似于處決、翻滾或是一些帶位移的切換3P鏡頭的技能表演,需要考慮的除了相機(jī)位置朝向/狀態(tài),淡入/淡出時間、表演鏡頭本身以外,還需要額外考慮位移因素、施放過程中的打斷條件、傷害上報等等邊際條件。
以COD的處決為例:
- 處決的觸發(fā)條件:玩家與敵方目標(biāo)的位置判定,距離閾值/高度差閾值,敵方目標(biāo)身后距離的限制
- 處決過程中人物會涉及到強(qiáng)制位移,位移的極限距離/插值時間,狀態(tài)的校驗何時進(jìn)行
- 處決過程中受到傷害/震撼等是否打斷處決
- 處決過程中何時上報傷害完成擊殺
游戲交互中的鏡頭機(jī)制:這些特殊鏡頭技巧與運(yùn)鏡方式,你了解嗎?
mp.weixin.qq.com/s/0QMuHjZgQot6dp6ZqzhTzA
如果對交互鏡頭和運(yùn)鏡感興趣,還可以看看這篇文章,還列舉了一些其他的應(yīng)用場景。
1.3 鏡頭處理
1.3.1 鏡頭遮罩
鏡頭遮罩是相對常見的類型,往往配合震屏一同出現(xiàn),手雷爆炸、受擊、技能釋放之類的場景,能夠清晰構(gòu)造打擊感和臨場感,COD低血量的黑屏、WZ被打碎裝甲的碎甲提示、APEX動力小子的針等等,很好用,但是很多時候提需求的時候會忘掉=。=。
![]()
戰(zhàn)地5瀕死鏡頭遮罩
1.3.2 鏡頭后處理
Post-processing是一個很強(qiáng)大的功能集合,這里只舉幾個和打擊感相關(guān)的實用范例。
射擊游戲通常會在玩家觸發(fā)某種狀態(tài)時,使用后處理來增強(qiáng)技能/狀態(tài)的表現(xiàn),例如英雄的技能,或是使用夜視儀和其他道具。使用后處理的同時往往會對角色進(jìn)行一定的強(qiáng)化,例如移速加成、射速變化之類的,清晰告知玩家“你變強(qiáng)了”。
目前國內(nèi)的游戲用的還不多,大家都還在用后處理來表現(xiàn)功能差異,沒做打擊感相關(guān)的強(qiáng)化,也許是個突破口。
![]()
APEX惡靈/動力小子/尋血獵犬都有類似設(shè)計
![]()
PUBG夜視儀效果
![]()
賽博朋克2077掃描效果
還有一些游戲開啟技能后會產(chǎn)生弱化場景表現(xiàn)、高亮敵方目標(biāo)之類的效果都能有效提升打擊感。
除了針對于關(guān)卡場景、角色做的統(tǒng)一處理,射擊游戲中還有一類相對獨(dú)特的處理形式,武器開鏡開火的情況下做景深處理,模糊掉照門位置,強(qiáng)化準(zhǔn)心和準(zhǔn)心周圍的目標(biāo),輔助玩家瞄準(zhǔn)。
![]()
未做景深處理(照門、準(zhǔn)心表現(xiàn)清晰)
![]()
景深處理(照門模糊、準(zhǔn)心及目標(biāo)清晰)
2. HUD
hud這個詞的來源是空軍的頭顯,常見的包含屏幕上的人物狀態(tài)提示、敵方狀態(tài)提示、命中提示、武器狀態(tài)提示、比分和地圖指示等,這部分內(nèi)容也相當(dāng)繁雜,工作過程中除了策劃,還有專業(yè)的UIUX同學(xué)一起來看。
這里討論打擊感相關(guān)的hud表現(xiàn),所以純信息類的小地圖、挨打的受擊提示、任務(wù)指引、尋路等就不提了。
2.1 準(zhǔn)心及動效
2.1.1 準(zhǔn)心
準(zhǔn)心hud主要提供兩個功能,協(xié)助玩家瞄準(zhǔn)和武器狀態(tài)提示。
不同玩家瞄準(zhǔn)過程中對于準(zhǔn)心大小要求不同,點狀、十字、穩(wěn)定/動態(tài)等等,射擊游戲發(fā)展到現(xiàn)在,準(zhǔn)心自定義已經(jīng)不再是什么新奇的功能。
![]()
valorant準(zhǔn)心設(shè)置面板
在狀態(tài)提示上,絕大多數(shù)游戲,準(zhǔn)心需要承擔(dān)告知玩家當(dāng)前槍械散發(fā)的功能,從這個目的出發(fā):
- 不同武器類型的準(zhǔn)心需要有差異
- 準(zhǔn)心在開火過程中的表現(xiàn)需要有差異
![]()
最小散發(fā)和最大散發(fā)的準(zhǔn)心對比
![]()
手炮和火箭筒的準(zhǔn)心對比
目前我印象里還沒有針對單把槍來設(shè)置準(zhǔn)心的射擊游戲,將自定義+多種類結(jié)合,會更細(xì)致(試想一下瓦羅蘭特的警長可以設(shè)置圓形準(zhǔn)心指示腰射范圍=。=)。
2.1.2 準(zhǔn)心動效
涉及到打擊感相關(guān),提最常見的兩類,命中反饋和彈量/換彈進(jìn)度提示。
2.1.2.1 命中反饋
命中反饋上,我們簡單拆解下最經(jīng)典的COD斜十字命中提示。
命中和擊殺分別為白色斜十字和紅色斜十字,同時會區(qū)分普通命中和爆頭。
![]()
逐幀截圖的斜十字準(zhǔn)心
截圖的視頻是43幀/秒,總時長約0.37s,考慮到抽幀的可能,所以總時長約為0.4s,取24幀。
大致看來1——8幀為縮放旋轉(zhuǎn)階段、9——16幀為保持階段,17——24幀為淡化擴(kuò)散階段。
比較有趣的是,在準(zhǔn)心特效替換上,兩代MW使用了不同的解決方案。
![]()
兩代MW替換方式的差異(我拆的,不保真)
特效替換方式改變,最直觀的感受是MW2022的斜十字反饋更穩(wěn)定,晃動表現(xiàn)基本由動效本身提供,不會像MW2019一樣不斷命中目標(biāo),動效不斷從頭播放,導(dǎo)致動效很難播完,反復(fù)在播前8幀。
(但是!我之所以喜歡玩COD,不就是圖打的爽么,圖一個每一發(fā)命中都有即時反饋么,我覺得這個改動不行)
2.1.2.2 彈量/換彈提示
![]()
APEXM彈量提示
我們在最近幾年看的彈量提示和換彈進(jìn)度提醒大概是這樣的,準(zhǔn)心右下角的弧形進(jìn)度條:
- 66%以上時,顯示為白色
- 33%-66%時,顯示為黃色
- 33%以下時,顯示為紅色并伴隨閃爍特效
- 在換彈的過程中重播以上過程,進(jìn)度條累計蓄滿的時間等同于邏輯換彈時間(換彈前搖)
我印象中很早之前在育碧的游戲見過之類的進(jìn)度條設(shè)計,似乎是全境封鎖。
進(jìn)度條這個東西肯定是有比沒有好,相對來說比純粹的數(shù)字彈量提示更直觀,但同時也有一個問題,即便做了換彈成功之后,進(jìn)度條消失或是準(zhǔn)心出現(xiàn),整體的提示還是太弱了,玩家無法精確判斷完成換彈的時間節(jié)點。

換彈結(jié)束增加準(zhǔn)心旋轉(zhuǎn)提示
同組的其他策劃大佬給我發(fā)過一個參考,在進(jìn)度條消失基礎(chǔ)上,同時讓準(zhǔn)心做了個動效提示,在顯隱邏輯的基礎(chǔ)上強(qiáng)化提示,圖示這個準(zhǔn)心旋轉(zhuǎn)特效,甚至還拉了曲線的,不是插值的,真的細(xì)。
2.2 命中提示
除了準(zhǔn)心位置的命中反饋,為了進(jìn)一步強(qiáng)化命中體驗,可以新增命中跳字的設(shè)計。

CODM命中跳字
CODM是比較干凈的做法:
- 從子彈的命中位置出發(fā),確定一個終點,播一個動畫;
- 命中弱點時字號和顏色做一個差異化
會有比較復(fù)雜的做法,文字上還可以帶更多信息和花樣,例如:
- 是否破甲
- 對方帶的什么甲
- 我命中的什么部位
- 武器屬性
- 疊加總傷害
- 跳字的動畫是否有區(qū)別/位置是否固定
項目組可以根據(jù)自己的需求來敲定。
![]()
APEX跳字
2.3 擊殺提示
![]()
CS1.5&CSGO擊殺提示
擊殺提示最早可以溯源到CS1.5時期右上角的擊殺信息提示,但即便到CSGO的年代,擊殺提示也沒有做花活,只在信息呈現(xiàn)、敵我處理上做了迭代,可能是為了使屏幕足夠干凈保障競技性。
目前HUD上常見的擊殺提示包括擊殺信息、勛章、文字提示。
![]()
瓦羅蘭特增加了頭像/底色等信息
![]()
要說瓦羅蘭特沒有參考過CF的勛章,我不太信
![]()
命運(yùn)2日落擊殺/行為提示
COD系列的擊殺提示值得專門拎出來看,COD在勛章和擊殺文字信息上,都做了更深一步的迭代,從單純的擊殺信息告知,升級到了玩家行為的獎勵,從文字和勛章層面給足打擊感。

彈射黃字行為提示&角色連殺名片提示

COD:WWⅡ勛章
在不考慮畫面干凈程度,純粹讓玩家爽的程度來說,COD幾乎利用完了屏幕的任何一個邊邊角角。
2.4 人物信息/武器狀態(tài)顯示
![]()
APEXM底部狀態(tài)欄
這一塊內(nèi)容其實比較固定,每款游戲都差不多,踩過兩個坑供大家參考下:
A. UE4的UI刷新會慢一幀,意味著當(dāng)前幀你點擊開火,播放開火表現(xiàn)時,底部的UI狀態(tài)欄依然顯示是30發(fā)子彈,不要小看這一幀的差距,手感就是一幀兩幀的差異,需要客戶端做一個處理。
B. UI的幀率,盡可能在引擎支持的基礎(chǔ)上做高,提前預(yù)留好UI高幀率的性能空間。會有一些項目UI的幀率只有十幾幀,開火時你發(fā)現(xiàn)子彈是兩發(fā)三發(fā)這樣扣的,給人的感覺很差。
還有一個不算是坑了,算是個人建議:
盡量不要做幀數(shù)太長的UI特效。
例如某些從左到右刷新的光效,或者從點擊位置向四周擴(kuò)散的光效,這類光效時間長了,玩家根本不清楚自己的點擊是否生效,何時生效,最后的體驗就是卡手,APEXM換彈子彈刷的這一下就很舒服,速度合適。
2.5 血條
血條涉及到兩塊內(nèi)容:顯隱邏輯和增減表現(xiàn)。
2.5.1 顯隱邏輯
一般來說,血條的顯隱由以下三個因素決定:
- 槍械朝向的射線是否和敵方膠囊體重合,不建議用mesh做判斷,不然會有各種咯吱窩和胯下不顯示血條問題。
- 近期是否對該目標(biāo)造成了傷害。
- 目標(biāo)是否在視野范圍內(nèi)。
在此基礎(chǔ)上,再去定血條出現(xiàn)和消失的表現(xiàn),射線經(jīng)過的殘留邏輯,受傷害的殘留邏輯就行。
預(yù)期是玩家掃過/對某個目標(biāo)造成了傷害,只要在視野范圍內(nèi),就能及時顯示血條。
(把血條揭示距離作為屬性賣的,真的值得槍斃,哦他下一代沒血條了,那沒事了)
2.5.2 增減表現(xiàn)
增減表現(xiàn)更多和UI幀率、服務(wù)器傷害下發(fā)速度、客戶端能不能做預(yù)表現(xiàn)有關(guān)系。
我接觸到的主要卡點是,服務(wù)器下發(fā)傷害包的速度很慢,依賴于服務(wù)器傷害校驗的血條、命中跳字等都有延遲,處理起來很麻煩,還在想辦法。
核心訴求是保證玩家持續(xù)命中時,血條的下降是即時且流暢的,至于動效做成什么樣,要看UIUX爹怎么發(fā)揮。

泰坦隕落2血條表現(xiàn)
幀率高,表現(xiàn)好,我夢中的血條,泰坦隕落2永遠(yuǎn)滴神。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
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.