在構建多人游戲時,開發人員經常面臨兩難境地。我是否利用現有的歐洲游戲服務器為多人游戲功能提供支持來運行聊天?我是否分開我的歐洲游戲服務器并獨立運行我的聊天?因為,畢竟,它們只是聊天消息,對吧?發送給單個用戶或小組的小消息,因此您不妨利用已經構建的內容……這會造成什么傷害?
盡管最初利用您已有的東西似乎是一個不錯的選擇,但選擇該設計模式可能會出現許多問題。我將向您展示為什么您應該獨立運行您的歐洲游戲服務器和社交功能(最重要的是聊天),這對您作為游戲開發人員和您的最終用戶都有好處。這樣做,您將提高游戲本身的性能和可擴展性,并且您將允許社交功能在未來通過新功能輕松擴展。
微服務讓您的游戲更易于管理
面向微服務的架構將大型應用程序(在本例中為您的游戲)分解為小型、獨立版本化的模塊化服務,這些服務通過簡單、普遍可訪問的 API 相互通信。它使構建新功能和維護構建后的功能變得更加容易。
將您的歐洲游戲服務器與您的聊天功能分開可以使您的整個基礎架構更易于管理,并使您更接近完全面向微服務的架構。在這種情況下,讓我們專門看一下游戲內聊天,它與為多人游戲提供動力的歐洲游戲服務器的關系。
借助單體架構,您的開發團隊現在被鎖定在一個單一的技術堆棧中——使用游戲已經構建的相同編程語言、數據庫和軟件環境。當引入新的開發人員時,或者當您想要對新技術和系統進行原型設計時,在微服務架構中快速移動要容易得多。
依賴關系在單體架構中也更加明顯。如果您的單個應用程序功能失敗,整個游戲就會失敗。將您的游戲拆分為微服務可以更輕松地隔離故障并在單個模塊發生故障時修復它。
您的歐洲游戲服務器是為實時傳遞玩家運動和狀態而構建的,而且它們做得非常好。為聊天消息重新使用相同的技術和設計根本就是沒有為特定功能使用最佳選項。分散的組件更易于維護,并且可以更好地擴展。此外,我們還可以在歐洲游戲服務器之外運行其他服務,包括授權、存在、統計和排行榜。
確保無縫的游戲體驗和聊天性能
總的來說,游戲性能是多人游戲的主要考慮因素。緩慢的游戲體驗會趕走用戶,他們將永遠不會回來。使用單體架構,游戲可以在實驗室中執行。但是對于在世界任何地方擁有大量用戶的多人游戲,所有用戶同時快速通信,您將開始看到聊天消息傳遞和游戲體驗的延遲和增加的延遲。
將兩者分開可確保更有效地使用 CPU 和網絡資源。歐洲游戲服務器的主要目的是為游戲中的每個用戶提供無縫體驗。因此,應該使用處理能力來最大化該性能。
假設您有一個在線戰斗競技場游戲,例如英雄聯盟或 EVE Online。您可能在一個世界中同時擁有數百名玩家。這是通過您的歐洲游戲服務器發送的數千條消息,傳遞每個玩家創建的每個輸入。現在,將聊天消息添加到組合中。玩家完全有可能向聊天頻道發送垃圾郵件并故意降低歐洲游戲服務器的速度,因為所有消息都具有相同的優先級。當然,可以檢查此類用戶,但您需要進行額外的處理,這會消耗歐洲游戲服務器的資源。
歐洲游戲服務器已經在處理密集的游戲體驗——物理、圖形和聲音。當您添加聊天消息(一對一、群組、團隊)并解析消息并將其路由給正確的用戶時,所有這些消息都會慢慢為大型游戲積累,并損害游戲的整體性能。將聊天頻道與多人頻道分開運行是不費吹灰之力的。它正在竊取比路由聊天消息更適合解決更復雜問題的重要處理能力。
UDP 與 TCP:當你需要兩者時,當你不需要時
然后是多人游戲協議、UDP 與 TCP 以及何時最好使用其中一個的爭論。快節奏的多人游戲(第一人稱射擊游戲、競技場游戲等)使用 UDP 協議來同步玩家移動和更新游戲狀態。UDP 非常適合以快得離譜的速度發送這些游戲更新,但不能保證消息(因為下一條消息來得太快了)。
TCP 保證消息傳遞,這使其成為聊天的絕佳選擇。您將看到在 UDP 上運行游戲和在 TCP 上運行社交功能的出色性能。但是,對于不太激烈的多人游戲,例如回合制游戲,TCP 是游戲和聊天的合適選擇。因為 TCP 保證消息傳遞,并且在每一步都很重要的游戲中(例如拼字游戲轉身或井字游戲),它是為多人游戲提供動力的絕佳選擇。當然,您仍然希望將聊天與歐洲游戲服務器分開,尤其是當您的游戲開始運行并且您同時連接了數千名用戶時。
延遲是另一件需要考慮的事情,因為多人游戲功能與社交功能有不同的延遲標準。對于多人游戲,確保游戲狀態并傳遞玩家輸入,行業標準不超過 20 毫秒。而對于聊天應用程序,發送聊天消息的最大延遲為 250 毫秒。所以你有兩種不同類型的實時消息,有兩種不同的標準。讓它們單獨運行可以讓您根據需要管理每一個。
輕松添加新的社交功能
將聊天作為獨立服務運行,并選擇行業標準協議(XMPP、WebSockets)或托管服務(PubNub),為輕松添加新的強大社交功能提供了機會。從核心聊天開始,允許用戶進行個人和群聊。有了它,您就擁有了底層基礎架構以及基本的發布/訂閱。您可以輕松地在其上構建許多其他社交功能。
使用最少的代碼,您可以添加桌面賭注聊天功能,例如打字指示器、用戶狀態以顯示哪些玩家在線和離線,以及未讀消息計數器 - 用戶期望的功能。
期待
大大小小的游戲工作室都在朝著這種架構設計方向發展,包括Pocket Gems和最近的EVE Online。從更好的可擴展性和更高效的性能,到不局限于單一堆棧的自由創新,好處是顯而易見的:將聊天與歐洲游戲服務器分開是必經之路。