《特戰英豪》對戰穩定性現況報告2

《特戰英豪》玩法操作團隊為各位帶來有關對戰穩定性的第二回文章。

大家好,又見面了!我們是《特戰英豪》玩法操作技術團隊,我們將與各位分享我們對於對戰穩定性的調查結果和行動第二篇專文。

如果你需要複習一下先前我們所收到的玩家回報,請參考我們上個月發布的專文。在那篇我們談論了玩家回饋給我們的幾個主要問題,以及我們正在著手的方向(延遲、正確性和高PING值玩家的表現)。

在先前的貼文中我們已經大致提過「現象」和「原因」,而我們今天想與玩家詳細說明其中一個重要的改善工作:延遲與緩衝我們將說明延遲和緩衝對《特戰英豪》的重要性、調查後的一些發現、目前為止所做的修正和改進,以及我們採取的長期措施。

有關我們在4.10版本推出的內容,請看這裡的列點說明:

  • 我們修正了在間斷性的網路不穩、用戶端FPS低落、切換視窗或長時間訊號跳動情況後,會出現的幾個問題。
    • 這些問題會導致受影響的玩家感覺到伺服器上的輸入處理延遲或螢幕上敵人的移動延遲。
    • 我們會在4.10版本中推出一些改動,改善網路緩衝在這些情況下的運作方式,並向玩家提供數據,以便讓各位了解後台的運作情況。
    • 我們已經發現導致玩家感覺在不同對戰間的網路延遲以及反應時間不一致的主要原因,而這些改動解決了這個問題,但我們將繼續觀察並改進。
      • 如果你在對戰中仍持續碰到此問題,希望我們新圖表能協助你量化並測量你所遭遇的情況。
    • 請持續向我們回報也請附上影片,可以的話請透過玩家客服平台回報你的碰到問題。

    延遲與緩衝

    先前的文章中,有提到過我們還在調查延遲和網路緩衝在《特戰英豪》中的運作表現。這個調查現在已經完成,並且我們會修正幾個在版本更新4.10中發現的問題。

    在我們更深入說明之前,先了解一些有關「網路緩衝」和「處理延遲」的背景資訊會比較好。

    在《特戰英豪》這種線上遊戲中,玩家輸入的指令會發送至伺服器來執行,因為伺服器端看到的對戰情況才是正確的。伺服器每秒會更新遊戲模擬128次,每次更新時,你從遊戲用戶端輸入的指令必須反映在你的特務上。如果你的輸入指令在網路傳輸途中受到延遲影響,那麼伺服器就不會等指令傳送過來,而必須直接模擬你的移動。

    伺服器預判的動作通常不會和正在傳送途中的指令相同。這些差異會造成移動修正,在用戶端上會讓玩家小幅度瞬移到正確的位置。這類型的修正如果出現太多次,會使遊戲感覺一頓一頓的,並且發生率高到一定程度的話,會讓遊戲玩不下去。

    要避免伺服器預判移動的話,就要讓伺服器預先緩衝一些行動,經過些微延遲後再開始執行。這是透過網路傳輸任何資料時非常常見的作法,並且有助於確保伺服器能在每一幀順暢地執行玩家特務的行動。然而,這個緩衝會在伺服器處理玩家行動前造成一點延遲,如果緩衝太多會讓玩家感覺自己的PING值比實際顯示的網路來回時間(Network RTT)還要高。

    提供正確的緩衝量是很重要的平衡取捨。緩衝太少會造成大量的伺服器預判行動和用戶端修正,太多緩衝則會導致高延遲並且更容易受到像是探頭玩家優勢的影響。如果我們能把緩衝量拿捏得剛剛好,《特戰英豪》就能同時讓玩家感到順暢又靈敏。

    如同伺服器在執行指令前緩衝你的移動一樣,用戶端也必須先緩衝敵方的移動資訊才能顯示在玩家螢幕上。這能避免網路連線不佳時,敵方玩家會到處瞬移的情況,讓你能順暢又輕鬆地掌握其他玩家的行動。

    調查

    作為調查的一部份,我們必須更加理解這兩種緩衝的運作表現。我們製作了一些除錯工具,來追蹤移動指令通過這兩個緩衝個別所花費的時間。藉由這個工具,我們開始進行實驗,觀察緩衝是否會在某些情況下,以我們意料之外的方式運作。

    在這次調查中,我們所追查其中一個玩家回報的問題,就是切換視窗時造成的射擊處理延遲。若在開啟「於背景執行時限制FPS」的情況下切換遊戲到以外的視窗,會因為幀數的限制而讓伺服器認為用戶端有長時間的效能問題。在切換回遊戲視窗後,突然增加的FPS會導致伺服器的移動佇列變得相當長。在用戶端方面,這會讓你感覺像是在高PING值狀況下遊玩,但網路來回時間圖表卻沒有反映這一點。

    我們找到另一種方法可以製造出類似的效果,就是在用戶端上模擬短暫的PING值震盪。從高PING值震盪回低PING值會導致該用戶端在伺服器上的移動佇列塞車。若從低PING值震盪到高PING值則會讓其他玩家在該用戶端上的移動佇列塞車。不論哪種情況,直到佇列大小恢復原樣之前,佇列中累積的移動指令都會造成較高的延遲。

    在這兩種情境下,目前的系統最終都能解決問題並讓恢復緩衝量,但我們發現完全恢復的時間比我們預期的還要久,導致網路延遲大幅增加。

    我們實裝了兩個新的修正,這應該能更快排除過度緩衝的問題,如此一來玩家只會在必須要讓遊玩體驗順暢時,才會遇到短暫延遲。

    修正與改進

    我們實裝的第一個修正,調整了佇列塞車時,緩衝恢復原樣的速度。我們為移動處理系統加入了新功能,讓它可以在緩衝增加時更積極地進行調整。

    有了這個改動,佇列中緩衝的移動指令可以用比以往更快的速度處理。舉例而言,之前如果緩衝裡有5個額外的移動,可能會需要5秒鐘才能讓緩衝恢復理想的狀態。經過這次的改進,所需時間只剩不到1秒。這表示碰到效能異常或網路震盪等重大事件的玩家,受到額外緩衝影響而出現延遲時間變得更短。

    但是在某些極端案例中,緩衝的移動會累積到非常大量,即使已經經過上述修正,等待移動處理系統解決佇列的時間仍有可能會花上數秒鐘。當這個狀況發生時,我們會強制重設緩衝,放棄所有移動指令僅保留最新的。這有助於立刻消除任何額外的延遲,但絕對會造成移動修正。

    我們發覺在遭遇幀率異常或網路震盪等重大事件的情況下,比起耗費數秒來等待移動處理系統重新調整緩衝量,採用移動修正會是更好的解決方法。在這種案例中,此次修正前玩家必須忍受數秒延遲增加,與之相比,採用移動修正通常不會造成那麼大的影響。情況嚴重到需要移動修正的情況之一,就是在「於背景執行時限制FPS」設定成低幀數時候,切視窗跳出遊戲之後又切回來。這會造成嚴重的幀數改變,從而導致過度緩衝的問題,不過在這次的改動過後都能快速解決。

    我們在調查緩衝時還有找到一個相關的問題,持續在高訊號跳動環境下遊玩的玩家,會被系統頻繁地在低緩衝和高緩衝之間切換,因為系統嘗試要利用伺服器預判的移動數量來平衡玩家的延遲。我們正在研究解決方案,讓緩衝目標大小的調整能顧慮到這類長時間的訊號跳動情況。

    展望未來

    除了上面提到的改動之外,我們發覺對於移動處理的延遲時間,玩家無法一目了然掌握狀況。由於我們內部製作的圖表非常有助於追蹤這個問題,因此我們新增了新的效能圖表,稱為「網路來回時間+處理延遲」,它能監測你的網路來回時間以及伺服器和用戶端的移動延遲。

    它在圖表上測出的時間,應該與玩家過去在自己的「體感測試」中感覺到的延遲是差不多的。當一切正常時,此圖表的數值應該比玩家的網路來回時間大約多出20到30毫秒,不過理想數值會根據玩家確切的網路和幀率狀況和而有所不同。

    另外,我們也新增了網路來回時間訊號跳動的圖表,它會顯示封包和封包之間的網路來回時間變化。PING值震盪和網路訊號跳動通常是造成額外緩衝的主因,因此我們也新增了相關資訊的圖表,有助於玩家診斷自己的網路情況是否不佳,這些情況原本因為平均計算的關係,所以不會顯示在一般的網路來回時間圖表上。

    我們同時實裝了一些額外的遙測,如此我們就能知道玩家實際上在不同對戰間碰到的處理延遲,收集相關數據。我們會定期檢視這些數據,這有助於我們密切關注遊戲的狀態,並確定上述修正是否達到了我們預期的效果,以及是否需要其他的修正和改進。

    最後,雖然我們會看各種社群媒體上的貼文回饋,但我們也想利用對戰後問卷調查來更深入了解玩家對於對戰品質的意見,像是連線和槍法操作的品質。所以我們會精修問卷並加入問題來反映這個部分的內容。

    下回更新

    我們希望這些對移動處理緩衝的改進,將有助於減少玩家PING值正常卻感覺對戰不穩定的情況。如果你在對戰中仍感覺到有問題,我們希望訊號跳動和處理延遲資訊的新圖表,能協助你量化你感受到的狀況並診斷出可能的原因。如果你碰到不穩定的問題時有在錄製影片的話,開啟這些圖表可以給你更多資訊,而且有助於縮小問題範圍並深入追查。

    這次的更新就在這裡告一段落,非常感謝所有碰到或看到問題的人把他們的經驗上傳成影片和分析文。我們由衷感謝玩家們對於本遊戲的熱愛,以及玩家們為了幫助我們改進所付出的努力。一如以往,我們很重視你們的意見。

    請密切注意之後的更新,我們下次將會談論伺服器選擇以及它會如何影響高PING值玩家的表現。