遊知有味:解讀多人遊戲中的網絡問題之Ping值與延遲的深層解析
2017年08月15日18:37

  多人在線遊戲相信很多玩家都玩過,也有很多玩家就喜歡玩多人遊戲,因為很多人在遊戲中覺得與人鬥才是其樂無窮的。但多人遊戲有一個重要的前提就是要有網絡連接.我們也知道在玩多人遊戲時,網絡連接狀況往往事關玩家在多人對戰中的能否有上佳的表現。那麼影響網絡連接狀況的因素究竟有哪些呢?我們經常所(聽)見到的Ping值、服務器刷新率(Tick rate)以及丟包(或Choke)這些衡量遊戲網絡狀況等變量究竟代表的是什麼意思呢?

  在這裏,筆者就打算為大家做一個“解讀多人遊戲網絡連接狀況”的專題報導,和大家一起瞭解一下究竟是哪些網絡因素影響了玩家在多人遊戲中的體驗。而在專題的第一期,我們首先和大家一起圍繞Ping值這個玩家在多人遊戲中最經常見到的變量做一些講解:

  Ping值往往是玩家在體驗一款多人遊戲之前,最先關注的一個變量,因為很多玩家都知道其代表了玩家與遊戲交互的快慢。但Ping值的真是含義又是什麼呢,其和延遲是一回事嗎?

Ping值的具體含義

  關於Ping的簡要曆史:

  在改編自湯姆・克蘭西《獵殺紅色十月》這部著名軍事小說的同名電影中,肖恩・康納利扮演的艦長馬克・雷明斯曾命令船員發出單個“Ping”,來作為和中情局(CIA)分析師傑克.瑞恩(亞曆克・鮑德溫飾演)秘密交流的方式。

  在潛艇相關的專業術語中,“Ping”是被用來描述,潛艇聲納系統發出的一段脈衝聲音。這段脈衝在碰到某一物體後會反射到潛艇上。這段過程中脈衝所經曆的時間,被用來測算潛艇與偵測到的物體之間的距離。而這也和在線遊戲中Ping的工作原理類似。

  Ping和延遲(latency)是一會事嗎?

  Ping實際上是一種檢測在線服務器連接狀況的工具。

  在具體的運行中,是由Ping通過控製消息協議(Control Message Protocol 簡稱:ICMP)向服務器發出一段回應請求(echo request)來測算回應的時間。其測算的結果就是大家平常所說的“延遲(latency)”,延遲經常用毫秒(千分之一秒)來表示(毫秒:Milliseconds,簡稱,ms)。

  儘管,Ping代表了這個測試的過程,而Latency(延遲)代表了測試的結果,但在遊戲圈中,很多玩家甚至是開發者經常把Ping作為延遲的代表,兩者並不是同一種東西,當然遊戲玩家和開發者之間“約定成俗”了,也就無關緊要了。

影響Ping或是延遲(latency)的因素:

  影響延遲的因素有多種,如玩家的使用的網絡連接設備、網絡協議以及他諸如軟件或硬件防火牆等因素。

  但影響延遲最大的因素其實是玩家所在位置與服務器(或作為主機服務器(Host)的玩家,或是兩位玩家之間的距離)所在位置的遠近。

  例如,如果國內玩家要是玩美服或歐服上玩遊戲,在不借助加速器的情況下,你的延遲肯定會很高,因為位置上的距離會讓信息在玩家客戶端與服務器間的交互中出現延遲。

  延遲是在線遊戲中一個重要的關注點,在一般多人遊戲中,Ping也經常通過各種方式顯示反饋給玩家,有的是通過數值,有的是通過類似手機信號的圖標顯示,當然有時候也會附上顏色說明(綠色一般代表低延遲,紅色一般代表高延遲)

“男友4”中不同區域服務帶來的不同延遲

延遲對多人在線遊戲產生的影響:

  這一點相信很多玩玩家在多人遊戲中都碰到過:高延遲可能會讓你打不中或是打不準其他玩家;或是出現瞬移等現象。但我們在這裏打算深入為大家講解一下,不同多人聯機模式下的延遲對玩家的影響,以及“延遲補償(Lag Compensation)”這一技術對玩家的影響。

  專用服務器(Dedicate Server)和P2P(Peer-to-Peer局域網)模式:

  專用服務器(Dedicate Server):

  這種模式下,遊戲廠商(或有資質的玩家)在某地搭建一台服務器,專門執行為某個遊戲主持比賽的任務。此模式下,所有玩家在多人遊戲中的信息交互都是通過一台專用服務器實現的,如下圖:

  目前像《Battlefield1》、《CS:GO》、《鬥陣特攻》以及《絕地求生大逃殺》等FPS遊戲都是使用專用服務器來主持遊戲。這種模式下,玩家延遲的大小一般取決於玩家客戶端與服務器的距離、服務器的刷新率(關於刷新率,我們將在下一期做詳細介紹)以及服務器的帶寬等網絡環境。

  專用服務器模式的優勢在於:它可以保證相對穩定的對戰環境;為一定區域內玩家提供相對公平的網絡環境(相近的Ping值)。(對於遊戲廠商而言劣勢就是價格高昂的服務器購置或需要持續投入的服務器租賃費。)至於這種模式下高延遲的影響,我們會在下面的“延遲補償”中另作專門講解。

  P2P(Peer to Peer)模式:

  這種模式分為兩種,一種是有主機(這裏的主機指的是Host,不是Console那個意義的主機,下同)的P2P模式,也就是線上玩家中,有一名玩家的遊戲設備作為服務器,其他玩家之間的互動交流信息通過這位玩家遊戲設備的網絡傳輸(有的分類也並不把這種模式歸為P2P模式,這裏僅供理解方便,把其歸類為P2P模式);另一種是沒有主機的P2P模式,線上玩家直接互相傳輸數據。一般多人合作類多人遊戲或是格鬥遊戲會採用這兩種P2P模式:

  有主機P2P模式就相當於遊戲利用玩家客戶端作為服務器主持遊戲。這種模式在處理延遲方面存在明顯的劣勢(優勢是遊戲廠商不用花錢購置或租賃服務器),因為主機玩家享受了零延遲的優勢,而其他玩家與主機玩家連接的時候,就要因為地理位置上的距離而存在延遲。而專用服務器模式下,主機服務器只負責傳輸處數據,並不進行遊戲,所以能保證玩家之間的相對公平(注意這裏也僅是相對,因為畢竟無法保證主機服務器離每位玩家的地理距離是相同的。)

  另外,在P2P模式下,其他玩家的網絡連接狀況受主機玩家網絡狀況的限製。特別是主機玩家的上傳網速。也就是說,只有主機玩家上傳速度順暢(連貫且高速),才能保證其能向線上的其他玩家實時傳輸交互數據。另外如果作為服務器的主機玩家(就是很多自定義多人遊戲中的房主)退出遊戲,那麼其他玩家也將被迫退出遊戲比賽。

  另一種P2P模式是沒有主服務器玩家的,玩家之間的遊戲數據的交流直接通過之間的網絡聯通,這種模式的優勢消除了主機服務器玩家的優勢,能給線上的玩家以相對公平的對戰環境,但是存在的問題是,任意兩位或多位玩家之間一旦稍有連接不當,就讓是整個比賽陷入停頓,或是中斷,特別是玩家之間地理距離過遠。

? 例如,現在育碧的備受玩家指責的《榮耀戰魂》目前就是使用的這種連接方式,而在近期育碧終於對遊戲糟糕的網絡鏈接做出改進,宣佈將在未來上線遊戲的專用服務器。

《榮耀戰魂》即將在接下來的兩個賽季內引進專用服務器

  延遲補償技術以及帶來的相關後果

  一般情況下,遊戲中高延遲的表現,可能都是大家在多人遊戲中經曆過的,或是可以簡單理解的。如:高延遲的玩家在遊戲中表現的不是正常的運動而是兩點之間的瞬移;高延遲玩家可能對低延遲玩家的位置出現誤判。

  但以上的現象顯然已近無法解釋目前現在大多數遊戲的高延遲現象了,因為現在很多使用專用服務器的多人PVP遊戲,會在遊戲服務器中增加延遲補償作為補償高延遲玩家的機製。而正是這種機製,往往會讓遊戲呈現另外一種景象。下面我們帶大家簡單地瞭解一下延遲補償的具體運行原理。

  很多使用專用服務器遊戲,首先會在遊戲服務器中設置一個進行延遲補償的閾值,比如說,如果服務器檢測到玩家傳來的數據延遲在100ms以上,那就開始對其信息處理進行“補償”。

  補償機製簡單的工作流程是,服務器在接收到高延遲玩家的數據之後,在做出判定之前,會把相應遊戲的遊戲世界環境“倒回”之前一段時間再做判定。

  具體可以射擊遊戲為例,假如玩家1的延遲是50ms,玩家2的延遲是100ms,玩家2在自己的遊戲中射擊並準確地擊中了垂直於自己視角的跑動中的玩家1,玩家2射擊的信息傳輸經過50ms到了遊戲服務器,這時服務器則要根據目前玩家1的情況對玩家2的射擊是否擊中做出判定,但在這50ms期間,玩家1的位置數據恰巧已經在服務器中更新了兩次,這時就極有可能玩家1在服務器中的位置信息已經脫離了玩家2子彈打中的位置。

  在沒有延遲補償的情況下,玩家2也很可能最終從服務器那裡得不到擊中玩家1的最終反饋。而在有延遲補償的情況下,服務器會在判定玩家2射擊是否擊中玩家1時,會自動將玩家1在遊戲服務器中的“位置(實際上是Hitbox,具體這裏可以簡單地理解為玩家在服務器中的位置)”退回到之前一段時間,如果在這個例子中服務器的延遲補償恰好是50ms,那麼這裏服務器會判定玩家2恰巧是已經擊中了玩家1。

  也正是由於延遲補償這一機製只在服務器中“拉回”低延遲玩家的“位置(Hitbox)”並不改變低延遲玩家在遊戲中的實際模型位置,所以,其在這種情況下,會很容易讓低延遲玩家在躲到掩體後依然受到傷害。如下圖:

  其實,這一奇怪的現象也讓很多玩家誤以為對面玩家是在開掛。至於遊戲開發商為什麼要在遊戲中設置延遲補償這一折衷機製,大家可以在這裏看V社關於這一機製的解釋(9.遊戲涉及中延遲補償的使用)。

  另外,現在也出現了一種DICE在《Battlefield1》的多人服務器中使用的新機製,簡單地說就是服務器會在一定延遲內做少量補償,超過這個延遲則不進行延遲補償,玩家需要根據遊戲服務器的提示在射擊中“打提前量”,如下圖:

  正因為現在網絡條件以及服務器條件依然無法達到讓所有玩家享受較為相近的延遲,也由於現在也沒有絕對合理的機製保證高延遲玩家和低延遲玩家公平合理對戰。因此現在很多多人遊戲選擇:服務器分區設定,這一方面可以減緩服務器的帶寬壓力,一方面也可以讓服務器內的玩家在相近的延遲下進行對戰。

  當然關於服務器分區,也有軟硬兩種措施:軟性措施是一般遊戲會在一開始讓玩家選擇在哪一個區的遊戲服務器中進行遊戲,或是提供不同區域的服務器篩選工具,類似的如《Battlefield1》:

《Battlefield1》中的服務器區域篩選界面

  硬性措施則是有的遊戲服務器通過直接限製某些區域的IP或設置玩家進入服務器的Ping值門檻這樣的強製性措施把高延遲玩家排除在服務器之外,保證遊戲服務器內部的玩家延遲保持在相近的水平,但這樣勢必會分裂線上玩家,影響遊戲的銷量。如之前備受爭議的《H1Z1》以及Steam上的《黑色沙漠》等遊戲。

steam上玩家對《H1Z1》鎖區的抱怨

  而在玩家方面,為了應對高延遲,我們往往需要使用市面上的網遊加速器來減小遊戲的延遲。而加速器也並不能直接減小玩家與服務器的地理距離,只是優化了玩家與服務器之間的網絡連接通道。其原理則簡單來講就是,在玩家與遊戲服務器中間搭建專用的雙線或多線網絡服務器,玩家的信息先傳到這個相當於中繼站的服務器,然後再由其最終傳到遊戲服務器。也就相當於把玩家與遊戲服務器之間的連接網路變成一個專用通道。當然這個通道也有帶寬大小,因此,我們往往會在高峰期使用加速器時不能取得最佳加速效果。

目前市面上眾多的網遊加速器

  最後需要指出的是,Ping雖然是檢驗多人遊戲體驗效果的重要變量,但並不是唯一變量,多人遊戲ping並不一定會給玩家帶來很好的遊戲體驗。比如,現在據科學測算,人類的反應速度的極限在100ms左右,一般人的反映速度大約在200ms到300ms左右,也就是說如果服務器的Ping值在200ms以內大體就是可以接受的,但現實情況往往並非如此,在200ms左右Ping的服務器中我們的遊戲體驗往往並不順暢。而其中的影響因素還要涉及到多人遊戲的丟包、Chock以及服務器的屬性等問題,這些我們將在下一期中做詳細講解。

  參考資料(以上相關解釋,由於篇幅有限(也是筆者能力有限)並沒有完整和非常準確的呈現,感興趣的玩家可以在下面的資料):

  ・ What exactly is ping, and what affects it?

  ・ 延遲補償在C/S架構遊戲協議設計和優化中的應用

  ・ Valve Developer Community:

   Lag compensation

   Hitbox

  ・ Battle(non)sense:

   TEKKEN 7 Input & Network Delay Analysis?

關注我們Facebook專頁
    相關新聞
      更多瀏覽