“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索

Minke發表於2024-04-26
“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索

一、平滑性有什麼好研究的——如何定義一個好的輔助瞄準

在聊為什麼要研究輔助瞄準平滑性的時候,需要先明確一個概念:究竟什麼是一個好的輔助瞄準?

站在我的角度,結合之前和兄弟們聊的一些觀點,我覺得主要從兩個方向出發去定義這個東西:

  • 手感層面

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
靈敏、順暢的角色轉身

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
順暢、平滑的瞄準射擊

手指在螢幕上滑動,得到靈敏且符合預期的反饋,例如固定視角的人物轉身,或是3P/1P視角的轉向瞄準,都是典型的輸入反饋樂趣,是操控感的重要組成部分。

吸附類的輔助瞄準的原理一般都是在玩家當前幀的轉向角速度基礎上,再增加一個朝向吸附點的角速度,如果單位時間增加的量如果過大,玩家能夠感受到自己的鏡頭在被明顯拖拽。

阻尼類的輔助瞄準是在玩家轉向的基礎上,乘上一個縮放係數從而實現在目標碰撞盒內轉向速度減緩,這個減緩的量過大或者插值時間不合理時,也會有明顯的阻滯感。

無論是拖拽還是阻滯的體驗,在我看來都是破壞了操控感帶來的樂趣。

  • 數值層面

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
理論TTK、期望TTK、實際TTK對比

輔助瞄準會影響玩家最終的實際TTK

在設計戰鬥預期的過程當中,我們會使用數值歸一的方式,將玩家的戰鬥流程量化,數值歸一是一個比較好的指導思路,也能夠較好的衡量輔助瞄準的強度。

以PVP射擊遊戲為例,一把武器上線後往往會有三個TTK:

  • 理論TTK:武器命中率100%的情況下擊殺敵人的時間
  • 期望TTK:我們設計上武器擊殺敵人的預估時間,考慮到武器操控難度、輔助瞄準水平、玩家操控水平、玩家血量變化等條件,也可以理解為理想戰鬥節奏下的擊殺時間
  • 實際TTK:最終從CE、線上後臺拿到的,玩家擊殺目標的真實時間(這一塊各個專案組可以做的很細,除了時間,命中距離、部位、整體命中率等等可以拆的很細來分析)

從這個角度出發,我們來看輔助瞄準的功能,其實是希望將玩家的實際TTK,儘可能向我們的期望TTK上面靠,使整體戰鬥符合我們的預期。

我們希望這個“靠攏”是正向的,是水平一般的玩家透過輔助瞄準,縮短自己的實際TTK,而不是將高水平玩家的TTK加長,輔助瞄準不能影響玩家的主動瞄準。

同時這個靠攏的幅度是去接近我們的戰鬥預期,而不是拉平,即便在輔助瞄準生效的情況下,仍然需要保留玩家技巧進步的空間。

那麼輔助瞄準是否縮短了TTK,縮短了多少,縮短之後玩家之間是否仍然能有水平差異,這些數值化的指標也是衡量輔助瞄準的一環。

*題外話:這裡的理論TTK、期望TTK、實際TTK的比例,是一個比較有趣的局內戰鬥節奏分析角度,目前應該還沒有比較清晰的案例指導,大家都還在當手工匠人自己試的階段,感興趣的兄弟可以自己拆下。

綜上數值和手感兩點,我們得到了一些好的輔助瞄準需要具備的要素:

  • 避免拖拽感/阻塞感,保留滑屏反饋帶來的操控感樂趣——這裡就引出這篇研究的主題:追求平滑
  • 能夠有效的將新手玩家的偏長的TTK向期望TTK靠攏,同時不影響高水平玩家的實際TTK,更不能抹平玩家技能進步的空間

二、輔助瞄準各階段的平滑性關注點

2.1 總覽

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
瞄準各階段輔助瞄準生效案例

這是一個常見的全自動武器的輔助瞄準型別和生效階段案例,不同專案、不同武器的輔助瞄準生效方式不一致,這裡不擴充套件,我們把玩家擊殺單個目標的流程,拆分為四個階段:

  • 轉向-預瞄:玩家移動過程中發現目標,並且移動準心開始瞄準的過程
  • 瞄準/開火-拉槍:玩家準心大致貼近目標,嘗試瞄準或者開火拉槍繼續靠近目標
  • 開火-跟槍:玩家對目標持續開火,將準心跟在目標身上的過程
  • 轉火-逃逸:玩家擊殺目標,或跟槍過程中出現了更高價值目標,需要轉火的過程

2.2 轉向-預瞄階段(開鏡&準心吸附)

玩家從位移狀態過渡到瞄準狀態的階段,這個時候會使用開鏡/準心吸附來幫助輔助玩家瞄準。

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
APEXM的開鏡吸附效果

2.2.1 開鏡吸附:

我們也可以把吸附類的生效過程拆解為 開始吸附 → 穩定吸附/吸附成功 → 逃逸 三個過程。

吸附類的構建一般包含幾個條件:生效條件,生效時間,生效區域,吸附點,各距離吸附速度,速度變化曲線,逃逸判定。

由於開鏡過程有明確的開鏡時間,這裡生效時間已經確定了。

剩下的引數配置,討論的問題其實是幾組預期體驗的問題:

  • 關於吸附速度大小:一步到位 or 循序漸進 → 玩家開鏡後是否需要進一步瞄準
  • 關於吸附速度變化:勻速 or 先快後慢 or 先慢後快 → 開鏡時間很短這個可以不考慮,但開火吸附就值得研究了
  • 關於各距離吸附速度預期:近、中、遠各區間的速度預期,時間控制 or 速度控制 → 不同距離吸附時間/速度的預期是多少,是否需要根據不同的槍型做優勢區間
  • 關於生效條件:直接生效 or 按住生效 or 滑動生效 → 是否需要一定程度上隱藏開鏡吸附表現,是否針對多武器型別作區分
  • 關於生效區域:大碰撞盒 or 小膠囊體 → 輔助瞄準的影響範圍,需要和吸附速度配合來看
  • 關於吸附點:單吸附點 or 多吸附點 or 骨骼吸附 → 輔助瞄準的理想落點,也需要和速度配合來看
  • 關於逃逸判定:以單幀滑屏速度作判定 or 以一段時間的累計滑屏距離做判定 → 涉及到逃逸的順滑程度,更深一些可以考慮逃逸時速度的變化

引數都是開放的,怎麼調取決於預期是什麼,PVE遊戲是直接鎖定高傷位置,還是鎖定普通位置考驗玩家的微調瞄準能力?PVP遊戲是否需要幫助玩家將準心拖到敵方目標碰撞盒?問自己這些問題,再回到預期TTK和實際TTK中去找答案。

我們一般不會覺得開鏡吸附會出現平滑性上的問題,主要原因是三個:

  • 玩家開鏡一定是有開鏡時間的,這裡給了一個預設的插值時間,減少鏡頭拉扯的體驗(如果偏移幅度過大,單幀轉向幅度過大也是會有拉扯感)
  • 開鏡過程中,玩家主動滑屏,疊加FOV的變化、武器模型LOD的切換會分散玩家的注意力,減少對於鏡頭偏移的感知
  • 開鏡吸附基本不存在逃逸過程,玩家開鏡結束後整個開鏡吸附的過程就結束了,後續的移動並不涉及逃逸的處理,同時在開鏡階段觸發逃逸的感知也並不明顯

2.2.2 準心吸附

部分不需要開鏡的武器,為了幫助玩家快速鎖定目標,在轉向-預瞄階段需要做準心吸附:

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
CODM準心吸附

準心吸附對比開鏡吸附,少了天然的生效時間,其餘的引數基本一致。

圖示codm的準心吸附是一個長按觸發的勻速吸附,吸附的速度比較慢,吸附生效框小且逃逸門檻極低,玩家主動滑屏瞄準的情況下準心吸附基本不生效,從遊戲體驗的角度觸發,準心吸附帶來的幫助是比較弱的。

目前也沒有看到哪款遊戲做了比較強的準心吸附,猜測主要的考量是:

玩家長按螢幕的過程中,我們無法判斷玩家是否要去瞄準離準心最近的目標,在怪物數量偏多的情況下,強化準心吸附的效果會導致滑屏過程不順(阻尼也會有同樣的問題)

所以要麼不做,要麼把吸附速度調小,同時把逃逸的閾值做的很低。

2.3 瞄準/開火-拉槍階段(開火吸附&阻尼)

2.3.1 開火吸附

拉槍階段的開火吸附,有以下幾個關注點:

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
開火吸附跳變

  • 開火吸附生效瞬間的加速過大導致鏡頭跳變

無論是勻速變化或是加速變化,在吸附力度較大的情況下,觸發開火吸附的一瞬間都有可能導致鏡頭轉向速度過大。

有一個解決思路是再增加一個過渡時間,過渡時間內的轉向速度做平滑插值,例如單次開火吸附的生效時間是0.5s,那麼最早的0.1s做一個插值加速過程,能夠有效緩解開火瞬間拉扯的問題。

  • 拉槍階段的吸附速度變化

這個本身是跟預期中輔助瞄準帶來的TTK變化相關,又回到了最初的問題,你希望輔助瞄準幫助玩家縮短多少實際TTK。

勻速變化:不會出錯的答案,能夠規避速度曲線變化帶來的種種問題,需要注意的是無論是使用角速度作為變數,還是使用時間來反算速度,都需要歸一到時間上來衡量強度。

先快後慢:期望的體驗是玩家能夠快速接近目標,然後降低吸附速度,玩家透過微調來做主動瞄準,存在一個問題是,玩家有可能在靠近目標周圍持續開火描邊,最終的命中無法保障。

先慢後快(腦補的,沒驗證過):這是在思考APEXM案例的時候兄弟們引申出來的一個思路,優勢在於避免兩個問題:

A.無論APEXM當時做的是勻速亦或是先快後慢,玩家在大致瞄準目標的情況下秒人速度都太快了,需要拉長作戰的實際TTK,其中一個思路是下調開火吸附的力度。

B.從APEXM的人物機動性考量,一旦玩家前期開火沒有命中目標(前期的開火吸附協助下沒有鎖住目標),敵方的高機動能力+武器的後坐力疊加,是很難再去命中敵人的,所以我自己早期的對戰體驗是要麼把人秒了,要麼根本打不中目標,需要一個持續開火無法命中時的補償手段。

對於高水平玩家而言,輔助瞄準低的情況下依然能夠瞄準目標,不影響實際TTK。

對於普通玩家而言,開火過程中逐漸提升吸附速度和吸附範圍,能夠有效縮短實際作戰的TTK,也沒有子彈保底那麼暴力。

對於整體戰鬥節奏而言,吸附變大的過程留出了高水平玩家和普通玩家之前的TTK差值,保留了一定的技巧成長空間,惡意使用這個機制的玩家也會因為彈量不足導致整體TTK拉長,影響有限。

當然我這裡說話都是放屁,這個手段沒經過驗證,可能問題更大,純粹口嗨。

  • 拉槍階段的各距離的吸附速度差異

不同距離配置配置不同大小的吸附框和吸附速度是吸附類輔助瞄準的標配,但不同距離的框體做多大,吸附速度做多快,也是需要考量的點。

假設吸附配置的速度為角速度,那麼10M和20M的目標吸附到目標位置的時間都是50ms,但武器不同距離的TTK是有差異的,50ms的吸附時間在200ms和500ms的作戰TTK場景下感受不一致,對於近距離目標,這個速度可能慢了,對於遠距離目標這個速度可能又偏快了,一個精細化調整的路子是根據期望TTK的預期佔比來反算時間,例如佔比都是20%,再反算到具體的角速度上面去。

雖然目前市面上的產品能做到不同距離的區分,也許就已經足夠了,不太需要摳體驗摳到毫秒級別。

2.3.2 阻尼

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
阻尼示意

阻尼類輔瞄按圖示從左到右也可以分成 判定框生效 → 膠囊體生效 → 逃逸 三個過程。

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
阻尼的生效框體

常見引數層面包含:生效條件、生效區域,阻尼係數,阻尼變化曲線,逃逸閾值。

拉槍階段稍微值得聊一下的是生效區域:

A.各區間阻尼係數差異:一般來說會拆成判定框(黃色)和膠囊體(綠色)兩個部分,碰撞盒的位置越靠近膠囊體,阻尼係數越大,進入膠囊體之後,阻尼係數保持一個恆定值。(如果再以中軸線為阻尼最大值,一般來說會導致膠囊體打高傷害位置的時候滑屏不順暢)

B.阻尼框體大小:生效的區域也需要謹慎考慮,如果生效的框體過大,那麼在怪物數量密集的時候,玩家滑屏會持續的受到各個框體的阻尼係數的影響,直接表現為劃不動螢幕。

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
假設這些怪都有阻尼框

同時關於生效條件,有一個還沒有驗證過的想法。

絕大多數場景下,阻尼的出發點都是為了避免高速滑屏時無法定位目標,那麼換位思考,低速的狀態下是否就不需要生效阻尼了,否則在小角度微調的過程中移動會有明顯遲滯感,後續會看看這個好不好用。

2.4 開火-跟槍階段(開火吸附&阻尼&磁力)

2.4.1 開火吸附:

跟槍階段對比拉槍階段,平滑性差的表現會更隱晦。

在拉槍階段,由於有明確的鏡頭偏移過程,可以相對清楚的觀察到每幀偏移的速度差異和異常抖動。

而在跟槍階段,玩家會主動有壓槍行為,整體偏移幅度有限,疊加武器的後坐力和鏡頭動畫,觀察起來相對有難度。

跟槍階段導致拖拽,影響平滑的常見問題有以下幾個:

  • 吸附點與玩家期望瞄準位置存在偏差

開火吸附一定會有一個最終的吸附目標點,如果點位和玩家和玩家期望的瞄準點位不一致(吸附點是質心,而玩家想打頭),玩家在持續開火的過程中就會不斷的與吸附做對抗,感受到鏡頭拖拽。

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
多吸附點/骨骼吸附示意

一種解決方式是取多吸附點或者骨骼吸附,同時降低逃逸閾值,玩家在跟槍的過程中手動微調的過程就轉變成了不斷的逃逸吸附,再根據玩家微調後的位置尋找最近的吸附點開始吸附。

還有一種方式更加考驗玩家的微調能力,即人物碰撞盒內部不再生效開火吸附,鏡頭被快速拉到人物碰撞盒周圍後吸附速度插值歸零,碰撞盒內部只靠阻尼輔助玩家瞄準。對於TTK時間短的專案,可以嘗試這一種方式,能夠徹底杜絕開火吸附對於玩家主動瞄準的影響。

  • 後坐力/受擊上抬的等鏡頭偏移引數影響開火吸附逃逸計算

玩家壓槍/跟槍階段持續開火期間,武器的後坐力會不斷疊加,同時也會收到受擊上抬的影響(如果有),這部分上抬的數值會持續和開火吸附做對抗,正常的對抗吸附沒問題。

但需要注意的是,這部分對抗的數值不能納入逃逸的計算。

某些槍械在設計上可能出現一段後坐力區間累計度數較大,考驗玩家控槍能力的場景,如果不做單獨處理,會出現準心仍然在吸附框內,但是單位時間累計鏡頭偏移或是單幀鏡頭偏移過大,出現被動突破閾值,開火吸附失效的場景。

2.4.2 磁力吸附:

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
磁力吸附示意

磁力吸附實現方式也是吸附類的輔助瞄準,相關引數和上文提到的開鏡吸附類似。

比較大的變化是在 生效條件 和 各距離吸附速度。

A.生效條件

首先我們明確:磁力吸附的意義在於補償持續開火過程中怪物移動帶來的角速度變化。

那麼這裡的生效條件就需要增加辨別條件:怪物移動經過準心時生效,玩家主動滑屏經過怪物時不生效。

否則單純的以準心和怪物的相對位置做判定,就會收穫一個鏡頭向右滑,輔助瞄準把你往左扯的鬼東西。

B.各距離吸附速度

和開火/開鏡吸附這類我們需要手動給到速度的吸附方式不同,既然是補償怪物移動帶來的角速度變化,那麼吸附速度需要和怪物移動速度掛鉤。

簡單來說,怪跑多快,磁力吸附補償多快,但有上限。

建議的實現方式是記錄單位時間內怪物移動的距離,再反算到鏡頭的角速度上去,乘上設定好的係數,算出最終的補償角速度,需要設定最大的角速度上限和最大生效時間控制住磁力吸附的強度。

這裡的強度如何評估,還是從預期的戰鬥體驗出發,也可以歸一到TTK上。

對於PVE遊戲,磁力吸附的力度取決於,我們期望一個移動的怪物,對比不能移動的怪物,能夠多存活多久?

不同型別的怪物,是否都需要考驗玩家控槍的能力,需要考驗的怪物位移角速度需要高於磁力吸附的上限。

對於PVP遊戲,需要考慮的問題也是類似的,我們希望玩家移動起來時,犧牲自己的瞄準精準度獲得多少ms的理論存活時間,或者說,我們希望玩家在對槍過程中,什麼樣的位移行為是有效的,舉鏡位移就能逃逸對手的磁力吸附,還是需要步行,甚至是需要奔跑或者滑鏟才能逃逸。

2.5轉火-逃逸階段(吸附&阻尼的逃逸處理)

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
比較流暢的開火吸附逃逸,緩慢加速不拔瓶塞

逃逸階段和開始吸附的階段一樣,都涉及到玩家鏡頭主觀移動和輔助鏡頭偏移的衝突處理,處理不好會有很明顯的“拔瓶塞”的感覺,尤其是在靈敏度設計為速度加速的情況下,玩家一段時間拖不動就會主觀加大力度/速度,而一旦跨過閾值,客戶端拿到的速度又會偏大,疊加開火吸附的瞬間消失,轉向角度會極大。

2.5.1 阻尼類逃逸處理

阻尼類的逃逸設計相對比較簡單,絕大多數情況下都會採用平滑阻尼的解決方案,也就是從判定框外側到膠囊體,阻尼的速度是線性變化的,可以說阻尼在不設定閾值的情況下就有比較好的逃逸體驗。

2.5.2 吸附類逃逸處理

逃逸處理主要取決於上文提及了很多遍的閾值。

閾值的作用是:當玩家處於拉槍或者跟槍狀態下,避免一些噪點誤操作導致吸附失效,只有當玩家單位時間單次或累計的滑屏距離超過設定好的閾值時,才視為玩家在對抗輔助瞄準,此時關閉掉吸附。

逃逸閾值自己調下來,有兩個關注點。

A.閾值的計算:

取玩家單次的位移,還是某段時間內累計的位移。

在閾值水平較低的時候,可以取單次的位移,這樣的響應會更加靈敏,但如果閾值設定較大,建議取單位時間內的累計閾值,避免玩家持續微調的情況下,無法有效關閉吸附。

簡單理解 較高的閾值 + 單次位移距離判斷閾值 = 極致的拔瓶塞體驗。

B.關閉吸附的方式

區別於超過閾值的瞬間直接關掉吸附,我比較傾向於將吸附逃逸的閾值,從單個閾值引數,變成閾值區間,在閾值區間內吸附逐漸減弱,到最大值後再關閉吸附。

從單純的1→0,調整為由1插值到0。

三、一些輔助瞄準除錯的小tips

3.1 搞一個完善的除錯工具,事半功倍

“追求平滑!”——針對射擊遊戲中吸附類/阻尼類輔助瞄準的平滑性最佳化探索
輔助瞄準除錯工具示例

這是目前我所在的專案使用的輔助瞄準除錯工具,能夠支援針對單個/多個輔助瞄準的混合除錯,實時的碰撞盒、引數顯示(速度、距離、剩餘時間),實時的距離調整等等。

巨TM好用,好用到我一度想去外面搞個手感中臺,讓客戶端爸爸把這個工具賣到全國,感謝luchang。

除了工具以外,除錯的過程中還需要靈活調整武器的相關屬性,必要時刻關閉後坐力、鏡頭動畫等影響判斷的東西,上面我為什麼一直用nikke舉例,除了確實手感和美術都做得好以外,他們的武器開火沒有鏡頭上抬、準心也不在螢幕中心,能夠更直觀的看準心的變化。

3.2 聚焦價效比高的內容,做能做的

同樣是做差異化,不同的槍型開啟的輔助瞄準型別是不一致的,同樣槍型下面不同槍械的輔助瞄準也可以做到不一致,甚至可以將輔助瞄準開放為武器數值的一部分,包進整個商業化體系。

同樣是做局內強度平衡,可以精打細算算出每一次輔助瞄準縮短了多少毫秒的TTK,也可以引數拍腦袋填一版然後專案下線都沒改過,成為專案不可動搖的magic number。

有精力,就持續打磨

沒精力,就湊合幹活

永遠解決優先順序最高的事,別鑽牛角尖

心裡有數,相信自己

相關閱讀:TPS對比FPS戰鬥設計差異與心得


原文:https://zhuanlan.zhihu.com/p/591802567

相關文章