2019719

開發日誌:遊戲漏洞檢討

在本篇的開發日誌中,我們將探討遊戲漏洞以及我們解決它們的方式,還有漏洞修正與後續遊戲漏洞之間的關聯性。

時間軸

5 月 11 日至 12 日

  • 5 月初,有三項遊戲漏洞引起了《Rainbow Six Siege》社群的廣大關注,它們分別是:Clash 的護盾、人員殺傷地雷和機動護盾錯誤。
  • 隨著團隊於週末期間深入觀察上列情況,我們很快便發現這些問題屬於優先事項。

5 月 13 日

  • 團隊開始著手調查這些遊戲漏洞。我們的第一步,是親自準確、持續地重現這些遊戲漏洞,以便我們了解問題所在並辨認主要肇因。
  • 初步調查的結果顯示,我們需要時間才能掌握問題的規模,而快速修正是不可能的。
  • 隨著遊戲漏洞持續於社群間流竄,我們開始討論如何在短期間減輕其影響的計畫。

5 月 15 日

  • 《Rainbow Six Siege》專案領導階層的人員開始了關於遊戲漏洞的討論。我們必須掌握並量化手邊資料、準確的事件規模以及遊戲內漏洞所造成的影響。

5 月 16 日

  • 16 日早上,檢討過手邊資料後,我們決定暫時停用 Clash、人員殺傷地雷與機動護盾。
  • 各團隊都暫停了各自的例行性工作,隨著我們探討關於停用 Clash、人員殺傷地雷與機動護盾可能的選項,以及相關手法。
  • 我們開始進行測試。一旦某項可能的解決方案成形就馬上投入測試。我們歸納出五項處理方案,而在後續多次的失敗後,終於在最後一項方案上取得成果。

5 月 17 日

  • 急促地進行完第一輪與第二輪測試且獲得成功的結果後,作為緊急應變手段,我們啟動了停用 Clash、人員殺傷地雷與機動護盾的「開關」。

5 月 24 日

  • 我們理解到若要完整修復問題是需要時間的,因為其流程會碰觸到核心系統程序,主要和將資料封包傳送至伺服器的順序有關。然而,我們知道移除 Clash 以及其他關鍵裝備會嚴重影響整體遊戲機制,所以各團隊便同時動工,試圖創造出多種可容錯、可安全實施的方案。

6 月

  • 隨後數週,關於遊戲漏洞的回報又再次浮現了。
  • 不過幸虧「開關」已經準備好在手邊了,我們可以快速反應新的問題回報並停用 Clash 和 IQ。
  • 截至目前為止,團隊已經針對遊戲漏洞潛在肇因總結出一項完整、可行的修正方案了。內部測試已經傳出樂觀結果,但我們仍須將修正方案投入測試伺服器進行更多的大規模測試,以便我們日後能放心地將之投入於正式伺服器中。

6 月至 7 月

  • 6 月底,「全域排序」首先實施在 PC 平台,並稍後於 7 月實施至家用主機。
  • 在這段時日中,我們觀察全域規模的排序改變之效果,以及是否有任何衰敗跡象。

「開關」+ 可容錯方案

在一部分團隊著手設計解決方案時,另一部分團隊也以更可靠的短期解決方案為目標開始研究,並同時發展各項短期可容錯方案。對於這些針對遊戲漏洞所設計的「開關」與可容錯方案,我們從來沒將它們視作完整修復的方式;比較起來,它們其實是團隊在評估移除 Clash 和兩件裝備後對遊戲完整性的衝擊後,所下達的短期決定。它們隨後便實施至正式伺服器中,而我們也鼓勵社群回報任何後續事件。

移除特勤幹員並調整裝備欄內容對我們來說不是個輕鬆的決定。我們必須尊重玩家為解鎖遊戲內容所投入的時間與努力,並了解移除核心遊戲機制會對《Rainbow Six Siege》主流玩法與生態系統產生重大影響。但面對著如此的情況,我們認為坐等完整修復的方式出爐不是個辦法。我們得替玩家盡快、盡可能安全地解決遊戲漏洞,使遊戲恢復正常運作。

可容錯方案必須符合數項條件:(一)如外科手術般精細,避免造成任何種類的遊戲崩潰或預期外的附帶傷害;(二)容易修改,以供快速應變;(三)測試需求低,以供快速實施。我們最後產出的特勤幹員與裝備「開關」,是我們針對遊戲漏洞的第一應變措施,而我們將這種「開關」視為最後手段,是我們準備和測試可容錯方案時的極短期解決方案。

什麼是「全域排序」?

在《Rainbow》遊戲當中,每個特勤幹員、裝備、手榴彈、護盾、攝影機、牆壁與植物都是物件。《Rainbow Six Siege》的每個物件一旦發生了任何動作或改變,都會向伺服器傳送訊息(封包)。舉例來說,當你使用裝備時,你的特勤幹員會依序傳送「我正在穿戴裝備」與「我正在使用裝備」等訊息。此時,你的裝備也會同時向伺服器傳送如「裝備已啟動」與「裝備已部署」等訊息。接著伺服器會將這些訊息傳給和你身在同場對戰中的其他玩家。

先前,這些訊息傳送到伺服器的順序只會在分別針對單一物件時保證正確,而這代表訊息在傳送至伺服器期間有可能會發生遺失或順序錯亂等問題導致失敗。我們網路協定中的這項缺失便是發生遊戲漏洞的管道,透過同時大量傳送多種動作,提高了這些網路訊息無法正確收發的可能性。結果導致伺服器中出現錯誤的複製訊息,使得玩家的遊戲無法正常顯示適當且符合原始預期的動作。

我們的解決方案——「全域排序」——修改了網路引擎,使之可以在全域規模下排序所有訊息。訊息本身也改以多重形式傳送,確保資料能夠確實傳送。現在,所有玩家的遊戲都能收到順序正確的訊息,而複製訊息也能在各個玩家間確實同步。

當我們認知到所有持續存在的遊戲漏洞都跟這種核心程序有關時,我們必須在實作「全域排序」時保持戰戰競競的態度。我們得確保如此的改變不會產生負面影響。最終,雖然「全域排序」此項改變會造成網路頻寬額外的負擔,我們認為以這種些許的代價換取「全域排序」所帶來的益處實屬值得,於是促成此決策向前推展。

這對未來代表的意義

實施「全域排序」後,單場對戰中所有玩家都能接收到統一複製的動作,這些動作現在以全域規模排序,與以往客戶端規模有所不同。我們已經評估且衡量過額外的網路頻寬負擔,雖然此負擔會稍有增加,但不會影響到各位的遊戲體驗。此舉應能避免任何關於訊息傳送順序錯亂的後續問題,還有其餘相似的遊戲漏洞。

這些遊戲漏洞和它們對社群造成的影響,也凸顯了特勤幹員與裝備「開關」的價值,還有我們必須於正式伺服器中更完善控制特勤幹員與裝備欄配置的重要性。至此,我們也開始投入更多資源,以確保有任何後續遊戲漏洞出現時,我們能達成快速應變的目標。

造訪其它官方社群頻道

facebook icontwitter iconyoutube icontwitch icon