和前兩次實驗一樣,先模擬一個低 ping值環(huán)境,幾分鐘后再模擬一個高 ping值環(huán)境。和之前實驗結果不同的是,在使用了更改的配置后,這次延遲服務的補償終于正確了。這張圖表顯示,即便 ping值從低切換到高,延遲都是基本相同的。
問題解決了嗎?
這個配置修正了一個游戲中 ping值計算的錯誤,卻也產生了一個副作用,即釜山場館內選手屏幕上的幀數和 ping值顯示(Ctl-V)會出現錯誤。顯示的 ping值會比實際 ping值低大約 13ms。這是因為,我們上述對延遲服務所做的配置更改,本質上是在目標值上直接添加了一個偏移量,以補償計算錯誤。這會對客戶端中記錄和顯示的 ping值應用偏移量產生下游效應(稍后我們會詳細分析這點)。其結果是外部客戶端顯示的數字將比實際 ping 低 13 ms左右。雖然這個結果不是完美的,但當時我們認為確保同等競賽環(huán)境里的對等延遲是一件更重要的事情,即便這意味著釜山場館外顯屏幕會顯示錯誤的數值。
下一步措施,以及一個困難的現實
既然我們已經知道如何準確測量真正的延遲,并找到了一個通過更改配置能夠補償這個計算錯誤的解決方法,我們馬上準備了一個計劃進行修正部署,并準備向選手和粉絲溝通,說明之前出現的問題。
但當我們明白了問題所在,我們卻面臨著一個困難的現實。
我們意識到,在場館內的選手之前都是在高于35ms范圍 的網絡下進行比賽的,但在上海遠程參賽的隊伍,卻是在實際的35ms范圍內進行比賽的——35ms左右是釜山至上海的自然網絡延遲 。我們沒有做到公平競爭原則下的延遲對等。
我們需要立即告知隊伍。唯一的問題是,這個差異是否大到足以需要重賽。這是一個賽事運營的決定。經過估算,由于計算錯誤,前三個比賽日中釜山和上海的真實延遲差值大約在15 - 20ms 之間。這也讓我們最終做出一個艱難的決定,即使用更新后的配置,將三場受影響的比賽進行重賽,以確保競賽公平性。
理解ping值的顯示數字
在我們決定重賽早期比賽之后,我們知道我們還有很多工作要做。這意味著重新制定賽程,并與隊伍聯系,以確保他們了解正在發(fā)生的事情和原因。 這還意味著我們準備對比賽場館的服務器和數據中心服務器的配置進行更改,并重新運行所有測試以驗證更改是否正確運行。 我們還邀請職業(yè)選手前往比賽現場測試新設置下的服務器,多次檢查我們是否解決了這個問題。 我們甚至進行了盲測,讓職業(yè)選手在不知情的情況下嘗試兩種配置,并讓我們知道哪一種感覺像 35ms 延遲,哪一種感覺不止于此。
很不幸的是,我們并沒有及時且清晰地將這個外顯誤差向各位玩家以及轉播團隊溝通。
不久之后,我們的粉絲就指出了對韓國隊伍來說似乎是不公平的優(yōu)勢。 我們開始看到粉絲發(fā)布一張顯示 22ms 延遲的屏幕截圖,而不是預期的約 35ms 的延遲。
這是我們必須回應的問題。
如之前提到的,延遲服務中漏洞的解決方法是添加到配置文件中的補償偏移值。 此偏移量對屏幕顯示的數值有副作用:
在上海的選手屏幕顯示的 ping值是正確的
在釜山的選手屏幕顯示的 ping值不正確,并且比實際延遲低約 13ms
這里重申一下原因,上海的屏幕顯示的ping值是正確的,因為當他們使用延遲工具時,他們已經達到了35 ms左右的延遲目標,因此延遲工具并不會為他們的體驗添加補償。而釜山的屏幕數字顯示不正確的原因是,在引擎中引入了延遲配置偏移量,它糾正了引擎中的延遲錯誤計算,讓實際延遲能夠達到35ms這個目標。但這將產生讓日志和ping值顯示偏移約 13 ms 的下游效應。
為了驗證這一點,我們從 30 多個進程中收集了客戶端日志,并繪制了屏幕上顯示的 ping/延遲數據圖表(如下示意)。
上圖只顯示了RNG相關的比賽,豎軸是顯示的ping值。 與上一個部分顯示數據的圖表不同,在這種情況下,橫軸代表離散的數據集,每個游戲都有一個數據集。 因此,每個綠色方塊都是報告的 ping值的直方圖,這些都是從客戶端日志中讀取一個選手的一場比賽的數據。 正如這里可以看到的,這些值存在一些波動,并且值都在 33 ms 和 39 ms 之間的范圍內。 這符合 RNG 的 35ms +/- 5ms 的已知自然延遲值。
下一個要查看的數據集是釜山選手在配置更改之前和配置更改之后的客戶端日志(如下示意)。
在上圖中,我們過濾了數據,僅顯示在釜山比賽場館進行的比賽。左側顯示的游戲是配置更改之前進行的比賽。正如這里可以看到的,顯示數值在 33 到 39ms 之間,范圍為 35ms +/- 5。我們也知道,通過更新“端到端”的監(jiān)測工具進行檢驗以及結合選手報告,真正的延遲和所顯示的不同。
在圖表的右側,我們看到在使用能夠提供相同真正延遲的新配置后,顯示延遲數值介于 19 ms和25 ms之間-通常在22 ms +/- 5 ms的波動范圍以內。將這兩個值相減可以看出,顯示ping值中的偏移誤差是一致的,大約為13ms (35ms - 22ms = 13ms)。因此,在配置更改并解決實際延遲問題后,當釜山屏幕顯示ping值顯示 22 ms左右時,實際上真實延遲是 35 ms左右。
回到顯示 T1 與 SGB 比賽的屏幕截圖,這解釋了當時 Zeus 的屏幕顯示ping值為 22 ms左右,而在添加我們從實驗中得到的校正偏移值后,真正的延遲則是在 35ms左右。
結論
作為支持現場比賽的拳頭游戲電競技術團隊,我們一直竭盡所能地對比賽環(huán)境進行測試、檢查、再三檢查,以確保無虞。我們一直是以為職業(yè)選手創(chuàng)造同等競賽環(huán)境作為最高優(yōu)先級。我們的目標是讓技術讓路,將舞臺留給運動和比賽本身。
我們也希望盡一切努力堅持競賽公平性,并為全世界的粉絲創(chuàng)造更好的觀賽體驗。任何計劃的修改,都可能帶來風險。但我們希望做到最好,來規(guī)避風險,并為選手和粉絲創(chuàng)造最好的體驗。
但在這次整件事情中,我們未能及時發(fā)現的漏洞影響了比賽,我們對ping值顯示錯誤問題的溝通也不夠及時透明。我們再次對此造成的問題和困擾致以深深的歉意。
我們深知這幾天對大家并不容易,因此我們正在進行額外的測試和驗證,以確保后面的對抗賽和淘汰賽階段順利無虞。我們還要感謝隊伍和選手們在此期間表現出的堅韌,盡管有諸多障礙,他們仍為我們解決這些問題提供了寶貴的反饋。雖然我們不敢妄言以后永遠不會再出現任何可能影響比賽的程序問題,但我們承諾一定從這次事件中吸取教訓,更及時地與隊伍和粉絲進行溝通,并持續(xù)地為良好的賽場環(huán)境做出不懈的自我監(jiān)督和自我改進。
真不愧是狗界的kk園區(qū)。
十年磨一劍
你要是《更衣人偶墜入愛河》的粉絲,那接下來可就要做好破防的準備了……