《Apex》的動機:開發人員深入解析伺服器與網路程式
《Apex 英雄》主工程師 Ricklesauceur 將探索玩家經常碰上的線上問題、造成原因和我們將如何處理它們。
介紹
你好,我是 @ricklesauceur,《Apex 英雄》主工程師,我今天想要為大家介紹一下支援《Apex 英雄》的線上架構。
在過去,我們並沒有公開討論《Apex 英雄》的伺服器、網路程式或線上架構,今天,我們希望改變這一點。簡單來說,我們今天想要:
- 分享一下我們如何改善你在《Apex 英雄》中的遊戲體驗
- 確認並解釋一些常見的線上問題或是你可能會在遊玩《Apex 英雄》時碰上的連線問題
- 具體說明一些常見問題,像是慢動作伺服器、命中註冊和延遲補償系統的運作方式
- 為我們的伺服器刷新率帶來一些詳細的說明,並解釋我們認為這些會有什麼樣的影響,或不會有哪些影響
警告:這篇文章很長, 因為這是為了深入解析《Apex 英雄》的線上架構--許多玩家一直在要求我們來解釋。
我們把這當成這是一段很長的對話的起點,所以儘管我們會在這裡說明許多資訊,我們可能還能夠花更多時間來解釋更多主題(DDOS 攻擊!伺服器崩潰錯誤!等等!)。無論如何,如果你喜歡這篇部落格文章,請告訴我們你下一次想要看見什麼樣的文章,這樣我們就能繼續保持下去。
至於那些準備好想要來探討網路程式、伺服器、刷新率等內容的人……歡迎!首先,讓我們來討論一下我們最近做出的一些優化。
使用效能指標提升我們的反應時間
在賽季 6 中,我們推出了效能顯示。此功能的外觀如下,且能提供關於你效能的基本資訊。
「輸入」與「輸出」是指遊戲所使用的頻寬(以 kB/s 為單位)。另外還有延遲(以毫秒為單位)。封包遺失和阻塞封包的衡量單位為每秒百分比。
這些數據能夠幫助你和我們理解你在遊戲中的體驗。換句話說,我們可以將你的體驗轉換成可使用的技術性資訊。
在此新功能之前,我們聽見了玩家說有些「不對勁」,但除此之外我們無法取得更多資訊。現在,你可以準確地說「我有 10% 封包丟失和 300 毫秒延遲」。這改變了一切,因為這些數據往往會是問題的最佳指標。我等下會再次提起這一點。
在打造效能顯示時,我們也開始追蹤玩家與伺服器的關鍵效能指標。這代表如果有人回報問題,我們可以找出他的比賽並查看所有人當時在遊戲內的數據,這包含代管遊戲的伺服器。
這是我們為我們團隊推出的第一個個人化與目標性的調查手段。這個手法的成效不錯,但我們認為這並不適合長期或大規模使用。首先,我們得聆聽大家的意見,然後派遣工程師來找出問題的來源,最後(依據問題所在)嘗試修復它。
在最近的幾個賽季中,我們開始使用我們絕佳的數據科學團隊來分批並處理(收集並分析)每週的數據,來偵察大量封包遺失和伺服器效能問題。這種手段已經有了成效。舉例來說,我們發現了數據中心的一個網路器材有瑕疵,這造成了一些伺服器上的所有代管遊戲有非常糟糕的網路效能。伺服器本身並沒有問題,但是將玩家連結至伺服器的硬體出現了問題並造成大量封包遺失。我們碰上了許多這樣的情況。
系統性數據分析的最大優點是我們能夠對照指標和玩家來找出問題。所以,過了許多週,我們能夠很有自信地說明我們的伺服器狀態。數據分析也很適合用來幫助我們的合作伙伴修復我們無法處理的問題。與其說出現了問題,我們現在能夠確切地指出是什麼東西出了問題,這樣一來就能為所有人節省時間。(順帶一提,你可以選擇退出此功能。只要前往設定選單中的「遊戲玩法」,然後選擇「使用資訊分享」即可。)
所以,自動化非常有幫助。但這樣還不夠。
的確,有了這種處理方式,我們還是無法迅速地處理問題。我們必須等上一週的時間來收集大多可靠的回報數據,然後再花一整週來進行調查。從你發現問題到我們找出解決方案可能需要多達兩個禮拜,如果這個問題需要伺服器更新,所需的時間可能會更久。
我們還有進步空間。我們會持續進步。讓我們來談談解決方案吧。
首先,除了我們的每週報告,我們還新增了即時警報。這會更快地為我們提供我們目前擁有的資訊。我們將能夠立即處理硬體問題或是開始調查並著手打造修補檔。我們理解等待所帶來的困擾,所以我們會持續嘗試縮短警報和修復之間的時間。
其次,我們將為效能顯示推出新的伺服器獨特代碼(SID),這樣我們就能更快地找出你所在的伺服器。目前,你會提供我們時間與日期,而我們會用此數據找出你在遊戲中使用的伺服器。我們很快就不需要這麼做。
我們預計上述兩個解決方案將在下個賽季《Apex 英雄》:流傳千古中推出。這會讓玩家能夠更快地排除伺服器問題,有時候甚至能夠比現在快上一倍。
深入瞭解常見問題
現在是有趣的部分,讓我們來大致分類你可能會碰上的伺服器問題。以下列表並不包含所有項目,但希望這能夠回答大多數人的問題。
伺服器以慢動作運行。
大家最愛這一個了。我們的伺服器以 20Hz 運行。這代表大概每 50 毫秒(1 秒或 1000 毫秒除以 20)將會模擬世界狀態一次。
我們在討論伺服器效能時並不會使用影格率(每秒影格數量),因為伺服器並不會顯示圖像。伺服器會計算「狀態」,但基本的理論是相同的。它會(透過網路)接收用戶的輸入、運行物理並將新世界狀態傳送給客戶端,並不斷重複。如果此過程穩定需要超過 50 毫秒,你的遊戲速度會降低來讓伺服器完成模擬。因此,你會碰上慢動作伺服器的問題。
檢視伺服器影格時間。第 5 欄是 50 秒的目標。比這低的數值會更快。你可以看見,伺服器的速度與穩定性都比需求還高。
相較之下,這個伺服器從來都沒有達到影格時間目標,且大多都在 200 毫秒下運行(大概慢了 4 倍)。這通常是慢動作伺服器。
這可能是由許多情況所造成的,但有時會是因為數據中心的機器並沒有正常運行。就像是降頻處理器、過熱等等。
當我們偵測到這些時,我們通常會移除這些機器。這代表我們會打電話給服務提供商,指出特定機器出現了問題並請它們將其關閉。
我們將在下個賽季中推出此部落格文章中先前提及的即時偵測方案,這應該能夠大幅降低這種問題。我們致力於解決這個問題,所以請持續注意新消息。
我的延遲不斷升降。
如果你使用無線網路遊玩,我們幫不上你!如果不是,快速改變的延遲可能跟我們的伺服器效能有關。
我們知道即便遊戲以 60 影格率運行,螢幕上顯示大量內容時,這可能會有所改變。儘管你只降了幾個影格,你仍然能夠感受到。這和伺服器大同小異。在這裡,自動偵測無法幫忙找出問題所在。在過去,我們必須在開發伺服器中重新創造速度降低的條件,但這必須花費許多時間且不見得有效,因為你的機器可能和伺服器有不同的硬體或設定,所以很難打造完全相同的環境。
幸好,我們的作業團隊打造了一種我們稱為 RPROF 檔案的工具。基本上,這能讓我們看見每個影格中,伺服器在做什麼(彈道模擬、網路輸入與輸出、玩家動作等等)。多虧了 RPROF 檔案,我們能夠查出什麼東西在降低速度並派遣工程師開始優化。一般來說,這些問題會在新賽季推出新功能後,因效能需求提升所造成。
舉例來說,你可能還記得在賽季 7 和 8 中,遊戲開始時的冠軍畫面會變慢。這是因為比賽中的所有玩家都在同一個地點生成,甚至會重疊。(由於遊戲介面,你甚至看不見這個情況!)物理模擬非常討厭物品重疊的情況,因此我們的物理引擎會嘗試將這些角色與其他角色分離,並使伺服器的處理器負荷突增。
每個區域受效能緩慢(不見得是慢動作)的比賽百分比。你能看見,有些區域的情況越來越好,也有些越來越差(X 軸為時間)。
美國西部地區的詳細資訊讓我們找到了故障的機器(X 軸為時間)。圖上清楚顯示著服務中斷。一些機器會受到影響,也有一些保持穩定。
我們預計我們能使用 RPROF 檔案幫助我們優化新增至遊戲中的新功能並減少未來的整體延遲。為所有玩家降低延遲是我們的一項重大目標,而且像這樣的好工具能夠幫我們達成此目的。
我有很多封包遺失/阻塞封包。
這個問題非常棘手。這可能不是你的問題,而且往往也不是我們的問題!
這跟網路如何從你的電腦連結至我們的數據中心並再次連回你的電腦有關。一開始,你的網路流量是經過你的網路服務商的網路。你的網路服務商可能出現服務中斷,因此你的資訊和其他顧客的資訊可能被遺失。這導致遊戲的客戶端並不知道你附近的玩家在做什麼,或是遊戲伺服器不知道你是要開槍還是朝特定方向移動。你的網路服務商的網路和我們的數據中心之間也有連結。問題可能會出現在這些路線中的任何地方。
當一切都很順利時,這種程序叫做「互連」。很多時候,互連問題會在兩個網路之間的連線虛弱時出現。這一路上可能會出現許多這種問題。然後,《Apex》伺服器的資訊也需要傳回你的電腦,而且往往會使用不同的路線。你應該能開始瞭解這為什麼會很複雜了。
想要幫你解決這個問題,我們必須先找出問題出在哪裡。這種程序非常難自動化,因為我們需要從你那裡取得數據,然後我們需要來自伺服器 的數據,這樣一來我們才能從「雙方角度」檢視此問題並嘗試探查問題是出在哪裡。
目前,我們要求玩家提供某種網路追蹤器,而我們會對數據中心進行相同的行為來嘗試偵測阻塞點在哪裡。這非常耗時,且需要很久才能解決,因為基於我們的發現,我們必須與世界各地的合作伙伴討論。我們希望自動化程序能夠幫助我們優化此程序,而且我們有一些處於開發初期階段的優化。
說到我們在討論的這種網路流量問題,一個好消息是,這種問題往往會大批出現,而不是個別發生在特定玩家身上。這代表修復影響一名玩家的問題往往也會解決其他玩家的問題。我們目前正在積極地降低遊戲使用的頻寬來幫助減少這種問題。
主機 | 最佳 | 平均 | 最差 |
---|---|---|---|
本地網路服務商 | 22 | 31 | 264 |
網路服務商 1 | 27 | 185 | 515 |
網路服務商 2 | 24 | 194 | 652 |
遊戲伺服器 | 31 | 263 | 522 |
這是我們的一名職業玩家的網路追蹤器(顯示延遲),這連結了他的網路路由器和我們的一個伺服器。我們進行了多次調查來評估網路連線的真正狀態。你可以看見,最佳情況下他能夠以 31 毫秒的延遲體驗遊戲。最糟糕的卻是 522 毫秒左右。所以,他的遊戲體驗非常不好,因為他的連線延遲有 500 毫秒的差異。他當地的網路服務商網路也有些不穩定,但平均值顯示這種情況非常罕見,(31 毫秒的平均值和 264 毫秒的最高值代表這一定是個別案例)。但是我們能夠看見當地網路服務商與網路服務商 1 之間的延遲突然增加,這也是玩家與我們遊戲伺服器間的一個節點。我們幾乎可以確定兩者之間有封包遺失和路由問題。這並不是我們可以控制的問題,但是我們能夠通知合作伙伴有這樣的問題存在。一般來說,大家都會想要解決這種問題。
我在門/牆後被殺,而我有時候會彈回先前的位置。
這是一個很敏感的問題。這和延遲補償有關。
自從有網路遊戲誕生以來,一個重大的問題是開發商如何打造一些非即時的系統正在即時運行的假象。說到底,你在線上遊戲中的所有動作都會因為在傳送至伺服器和返回而有所延遲。很多情況都會影響這個程序:輸入、繪製,甚至連伺服器刷新率都會影響它。
更糟糕的是,除此之外你的對手肯定有不同的延遲。為了解決這個問題,我們的伺服器不但會持續調查你和你的對手當時發生了什麼事,也會看看你們兩人輸入動作時,兩人所看見的不同角度。延遲補償是將稍微不同的體驗結合成一個共同現實的藝術。
這裡並沒有完美的解決方案。也沒有一個真相。說到底,伺服器是一種時光機。它能不斷返回世界狀態來看看你的射擊是否擊中他人,然後根據它更新大家的世界。
我請我的同事 Earl Hammon 來解釋這個原則,他寫了一篇關於公平性與延遲補償的小文章,這就是它在《Apex 英雄》中運行的方式。我在下面與大家分享:
讓我們看看一場包含兩名《Apex 英雄》玩家的各種場景,並將他們分別稱為「高」和「低」。我們給「高」高達 300 毫秒的延遲,然後給「低」50 毫秒。他們的延遲差異是 250 毫秒。
他們在現實中同時射向彼此會出現什麼情況?嗯,在伺服器中「低」的子彈會比「高」還早抵達,所以「低」佔有優勢。
那如果他們在轉角相遇呢?嗯,「低」在這裡也有優勢。「低」比較快,所以他會先看見「高」。又一次,「低」因為低延遲而佔有優勢。這讓「低」的子彈能夠更快達到伺服器。
這些情況下的確有些「不公平」,因為「低」佔有優勢,但是這卻又很「公平」,因為這些方面低延遲的玩家本來就會比較吃香。
現在,如果「低」躲在轉角後的掩護呢?此時「高」仍然在「低」還沒有完全進入掩護的情況下,所以「高」可以在「低」進入掩護前射擊他,但是「低」在「高」的封包抵達伺服器並轉而抵達「低」的電腦前並不知情。此時,「低」看見自己安全地躲在掩護後,但「低」仍然會被擊中。從「低」的角度看來,這有些無厘頭。
然而,這卻正好是剛剛「低」碰上不公平事件的相反。當「低」從掩護後方出現並攻擊「高」時,「低」會看見並射擊「高」,但在「高」的眼中,「低」還在掩護之中。從「高」的角度看來,這有些荒唐,他會被還在掩護後方的人擊中。這種沒有道理的情況是不能被完全消除的,只能在玩家之間轉換,因為現實中的延遲是無法避免的,而不同的玩家也會有不同的延遲。
有些人會認為,「低」在掩護後方能夠被「高」擊中有些不公平。另一方則認為是「高」應該自己彌補他的高延遲。這個世界需要我們套用一種非相等且不對稱的方式來處理延遲。
你躲在掩護後方,卻因為高延遲被擊中的感覺一定很糟糕,「低」就可能碰上這種情況。因為延遲不好,所以在看見敵人之前就被擊中的感覺也很糟糕,這種情況「高」可能會碰上。但是這種荒唐的情況會平均分布。
我們希望清楚地指出:並不是所有的線上遊戲都跟《Apex》一樣。有些遊戲會給低延遲的玩家優勢,但我們特意選擇不這麼做。我們在查看這種平衡並考慮線上競賽的公平性後特意決定採取這種立場。
用簡單的方式來解釋我們的系統就是,低延遲的玩家並不見得會比高延遲玩家更有優勢,而且有時候也會碰上荒唐的情況(我們認為荒唐是一種技術性用詞)。
這樣的平衡是特別設計在我們的系統之中。但這麼做的好處是,即便你有較高的延遲你也能夠順暢地遊玩《Apex 英雄》,這對住在偏遠地區或是網路連線不穩定的區域的玩家非常重要。我們相信我們應該盡量減少「荒唐」的情況,但是我們需要面對這種並不理想的體驗,我們希望能夠公平地對待所有玩家。
這就是你碰上這些荒唐情況的原因,像是在牆後被擊中,或是在轉角立即被擊中,這些情況或許是因為玩家們之間不同的延遲和我們系統的分布方式所致。儘管如此,我們仍致力於盡量減少這種情況。我們不但希望所有人都能有公平的體驗,我們也希望大家都能開心遊戲。
我的一些射擊沒有被確認。
我們來談談命中確認吧。「未確認」或未確認的射擊代表你認為你擊中目標,伺服器卻不同意的情況。從你的視角,你會獲得各種確認效果,像是噴血和音效,但是卻沒有出現傷害數值。在《Apex 英雄》這樣的射擊遊戲中,這會令人非常困擾。
發生這種問題的原因有很多。有時候,高延遲或封包遺失會使你的本地模擬和伺服器有些出入。你朝敵人開槍的時候,你其實正在瞄準他們之前所在的位置。很遺憾,在你的世界版本跟上之前,你將無法察覺。
有時候,這只是遊戲物理模擬的錯誤。為了給予你立即反饋,我們非常仰賴一種稱為預測的概念。你開槍時,我們知道武器的彈道,所以我們不用伺服器告訴你也能在當地電腦上預測子彈會前往何處。這會使遊戲感覺反應更快。
一般來說,用戶端和伺服器會吻合,而子彈會前往預測的位置。在過去,我們碰上了一些計算彈道和子彈軌道的錯誤(具體是所有使用有體積的子彈的武器,像是狙擊槍)。這種錯誤有時非常難偵測,所以我們會在遊戲測試中放置視覺效果來幫助大家馬上發現這種問題。很遺憾,這種診斷代碼太過沈重,不能與線上版遊戲一同運行(會影響頻寬),所以我們只能仰賴內部測試。
每當有未註冊發生時,我們繪畫出命中盒和子彈的軌道(大致上畫一下,這些軌道應該會有一些弧度,但是這種情況畫直線就夠了!)。這個視覺輔助能夠幫我們在檢查伺服器記錄時瞭解發生了什麼事。
我們能透過兩種方式進展:
首先是不斷尋找可能造成命中偵測問題的不同錯誤。我們也一直在開發自動偵測工具來幫開發人員避免造成新錯誤。我們會在這方面持續努力。
第二個則是和你們一起合作!當玩家們向我們傳送命中偵測問題的影片,這能夠幫助我們找出哪裡有需要處理的錯誤。我們往往會發現這些影片中的問題是延遲造成的,而非命中偵測問題,所以請在回報命中確認問題前先檢查你的效能顯示。然而,如剛剛提及的一般,我們的確用這種方式找到並解決了一些錯誤,所以回報的確能夠幫助我們為大家改善遊戲。提前謝謝大家!
那麼「code:net」等不讓我登入的錯誤呢?
「Code:net」是一種遊戲顯示的一般性錯誤,這是指遊戲已在伺服器中超時。這可能是由各種問題所造成,這些問題可能出於我們這邊,也可能是你那邊。事實上,我們發現大多嚴重的 code:net 錯誤(和 code:leaf 等相關錯誤)可能和 Respawm 支援遊戲的服務有關,我們還得深入調查。
我們已經做出了一些措施來降低 code:net 錯誤發生的機率,而且許多玩家都在聯繫客服團隊後解決了這種情況。如果你無法登入並收到了 code:net 或其他相似的訊息,請考慮使用EA 協助中心網站回報它。
由於 code:net 是一種一般訊息,它可能代表許多不同的問題。我們在最近幾週成功處理了一些此類問題,但我們知道還有許多問題得處理。向我們回報問題,我們將會盡快解決它們。相信我們,我們和你一樣討厭這個錯誤。
伺服器刷新率
這可是個重大的問題。我們希望讓大家瞭解我們將如何處理它。許多玩家問我們伺服器的刷新率,還有我們為什麼不跟其他射擊遊戲一樣提升 20Hz。
我們已經解釋了伺服器刷新率會如何影響你在螢幕上的整體刷新率,所以這是個很好的問題。然而,比較不同遊戲的刷新率可能比你想像的更複雜。我們會盡力解釋原因。
伺服器的刷新率是伺服器每秒運行的模擬次數。這是一個固定的數字(請見有關慢動作的區塊)。《Apex》使用擷圖式複製模型。這代表在每一次刷新結束時,伺服器將儲存世界狀態並將其複製給所有客戶端。這包括大量的資訊,並讓我們的武器、地圖和英雄設計能夠擁有最高的傳真度。
想要在《Apex 英雄》中取勝,你必須專注於地圖四處發生的各種事情。被使用的戰術技能、啟動的被動技能、施放絕招、照護艙掉落、新小隊進入暗碼士的無人機範圍內。我們可不希望玩家錯過任何一點。而我們的設計師能夠打造各種真正通用的玩具和工具。許多遊戲並不會在每次刷新時計算完整的世界狀態,所以和其他遊戲比較簡單的「20Hz」和「30Hz」並不準確。
問題是:每次刷新到底發生了什麼事?我們希望世界狀態盡可能地精準,所以我們的伺服器才會在每次刷新時儲存完整的世界狀態。如果我們不這樣做,我們或許能夠節省許多處理器效能,但是我們的模擬將失去一些精準度,這樣的風險並不值得。
簡單來說,刷新率越高,寄給所有玩家的頻寬就越高。如果我們將 20Hz 的伺服器遷至 60Hz 的伺服器,這代表遊戲的頻寬會變成三倍。目前,《Apex 英雄》大概會在遊戲開始時消耗 60kB/s。60Hz 的伺服器將會消耗 180kB/s。這聽起來可能不是很多,但這其實很可觀,而且我們一直在尋找能夠降低頻寬需求的方式。
但是,頻寬高一點又有什麼關係?確保遊戲的頻寬消耗低比影片串流更重要。對於高頻寬應用程式(串流、下載等),抖動或錯誤能在串流中透過緩衝幾分鐘、降低串流品質等方式來隱藏。你可能不會看見下載時的抖動,而且你可能並不在乎時間會有幾毫秒,甚至是幾百毫秒的誤差。
遊戲卻不一樣。跳過幾次 50 毫秒間隔就會開始影響手感。再跳過幾次,你就會漸漸無法跟上。你必須取得這些更新,不能有例外,因為你的客戶端需要完美的世界狀態來保持精準。
上方的範例顯示比較遊戲間的刷新率是個複雜的議題,因為每次刷新所包含的內容並不一樣。還有另一個複雜因素,那就是即便有相同的刷新率,每個伺服器能夠接收和送出的限制可能不一樣。說得明確一點:許多遊戲的伺服器以 60Hz 運行,這就代表客戶端只能送出 60Hz 輸入。此時如果你以 60 影格率運行,那不會有問題,但是如果你的客戶端以 120 影格率運行,你會失去一半的輸入。《Apex 英雄》卻並非如此。我們能夠處理不同的輸入頻率。(順帶一提,這也是為什麼你在《Apex》中的影格率越高,使用的頻寬也就越高。)
好了,我們討論了提升伺服器刷新率可能會帶來的負面影響。但是,從 20Hz 提升至 60Hz 有什麼好處呢?拜託,Respawn!讓伺服器速度提升三倍不是很好嗎?這樣做就對了!
根據我們的調查,這並不會帶來有意義的變化,而且我們希望解釋一下原因。
為了討論方便,讓我們假設你的平均延遲為 50 毫秒。請記得,延遲是數據從你的機器傳到伺服器再傳回來的速度。所以如果假設沒有不穩定延遲或硬體延遲等問題(如:顯示器會帶來 20-50 毫秒的延遲)的話,你按下按鈕或移動滑鼠後,伺服器將會在 25 毫秒(延遲的一半)後收到你的輸入。
由於我們的伺服器為 20Hz,它們能夠在每 50 毫秒更新世界狀態(每秒 1000 毫秒 / 每秒刷新 20 次 = 每次刷新為 50 毫秒)。因此,在最糟糕情況下,你的輸入會在 75 毫秒(25+50 毫秒)後被處理。
想要瞭解 75 毫秒延遲代表什麼樣的體驗,你可以想像一下你的影格率。這裡的數學可能不太好理解,但是記得在 60 影格率的遊戲中,每個影格大概需要 16.67 毫秒(每秒 1000 毫秒 / 每秒 60 影格 = 每個影格 16.67 毫秒)。在上方的例子中,你的輸入會在 75 毫秒後被伺服器處理,而你的遊戲以 60 影格率運行,這代表你的輸入和它對遊戲造成影響的延遲大概為五個影格(每次更新 75 毫秒 / 每個影格 16.67 毫秒 = 大約 4.5 影格,進位至 5 個影格,因為沒有辦法計算半個影格)。
如果你為 60Hz 的伺服器進行與上述完全相同的計算,則你會在輸入和伺服器處理間獲得 41.67 毫秒的最大延遲(25 毫秒延遲 + [1000 毫秒 / 每秒刷新 60 次 = 每次刷新 16.67 毫秒] = 41.67 毫秒)。
41.67 毫秒的確比 75 毫秒更好,但是以影格率來算這是多少?讓我們再次假設影格率為 60。每個影格需要 16.67 毫秒,所以現在你的輸入和伺服器識別它們間為三個影格(每次更新 41.67 毫秒 / 16.67 毫秒 = 大約 2.5 影格,進位至 3 個影格,因為沒有辦法計算半個影格)。
把這些計算通通整合起來,你會發現 20Hz 會造成五個影格的延遲,而 60Hz 會造成三個影格的延遲。所以三倍的頻寬與處理器消耗,你最多能夠節省兩個影格的延遲。這雖然有所改善,但卻不明顯,也不會處理我們想要處理的延遲問題(像是在掩護中被擊中)、網路服務商層級的問題或是錯誤(像是命中確認和慢動作伺服器)。
我們的例子解釋了從 20Hz 提升至 60Hz 的好處。你可以根據這個公式計算其他變化,像是 20Hz 至 30Hz,或是 40Hz,而且你會發現影格率提升也相當小。你必須大幅提高刷新率才能開始感受到這個變化--就算將 20Hz 提升至 60Hz,差別的感覺相當於 58 影格率和 60 影格率之間的差異。這個差異並不是不存在,但是我們並不認為優先提升刷新率會比其他優化更有效率。
結論
我們希望在最後承認一件事,那就是網路問題對玩家造成了真正的困擾。碰上延遲、未確認或慢動作伺服器時的確很討厭。這會讓你無法享受遊戲並讓你失去提升排名、和朋友一起遊玩或是輕鬆玩遊戲的動力。
討論線上問題的一大挑戰是我們必須開始介紹我們的系統、我們對延遲補償或刷新率等問題的看法,這可能會對只想要遊戲變得更好的玩家造成困擾。如果你遇到延遲問題、伺服器崩潰錯誤、帳號損毀問題,或在遊玩《Apex 英雄》時碰上的其他問題,你可能並不想知道我們不會做出什麼樣的改變。
說到底,我們只是想讓遊戲變得更好。為大家提供更好的線上體驗,更多玩家就會遊玩這款遊戲,並讓我們能夠繼續做我們喜歡的工作。
因此,在這篇部落格文章中,我們分享了許多我們將在不久的未來推出的優化,這包含:
- 使用即時警報系統來讓我們找出問題並更快速地回應
- 使用專門識別伺服器的工具,來幫助我們快速移除並取代有問題的伺服器
- 專注於慢動作伺服器——移除有問題的伺服器是一個階段,但我們的目標是透過變更程式來讓這種情況變得非常罕見
- 透過優化新功能來降低延遲
- 修復命中確認錯誤並打造自動偵測工具來避免我們出現新的錯誤
但是,我們希望你知道,我們並不僅僅在做這些事。我們正在與來自伺服器層級和網路服務商層級的合作伙伴一起合作優化並投資我們的線上架構,我們最終的目標是想讓玩家們碰上較少的問題並有更好的整體體驗。當我們的工作有所成果後,我們打算在未來的文章中深入解釋這些事項。
我們希望能夠透過向大家溝通這些令我們擔憂的問題,我們就能夠在討論問題的根源時有更相似的看法。這就是我們寫這篇部落格文章的原因。我們希望這能夠解釋我們的思緒並讓大家更瞭解線上射擊遊戲的技術層面。我們希望這會是更多對話的開端。
感謝你閱讀這篇文章!
- Samy(Ricklesauceur)和《Apex 英雄》團隊
立即在 PlayStation 4、PlayStation 5、Xbox One、Xbox Series X|S、Nintendo Switch 與 PC 上的 Origin 和 Steam 上免費*遊玩《Apex 英雄》。
在 Twitter 與 Instagram 上追蹤《Apex 英雄》,訂閱我們的 YouTube 頻道 並查看我們的論壇。
立即註冊我們的電子報來透過電子郵件取得《Apex 英雄》的最新消息、更新、幕後內容、獨家優惠等資訊(包括其他 EA 消息、產品、活動和促銷)。
此公告可能會隨著我們聆聽社群意見、持續開發、進化我們遊戲服務與內容而出現改變。我們會盡可能隨時讓社群得知最全面的資訊。更多資訊請前往 https://www.ea.com/service-updates 查看 EA 的線上服務更新。
*可能需要適用平台帳號與平台會員(分開發售)。需要持續不斷的網際網路連線與 EA 帳號。年齡限制適用。包含遊戲內購買。