網遊雲上網絡優化方案

1. 遊戲行業背景

1.1 行業概況

2019全球數字遊戲營收1094億美元,其中中國市場328億美元。國內遊戲⽤戶數6.5億;移動端(60%)>PC端>主機。移動遊戲佔⽐逐年增⻓已成爲絕對的主流。國內公司近3萬+,近200上市,Top10:騰訊53%,網易15%,三七,中手遊,世紀華通,完美,搜狐暢遊、遊族、多益,紫龍互娛。

趨勢:業務上融合電競賽事/直播往社交化、多元化發展;技術上通過AR/VR/雲遊戲等來提升體驗。

政策管控:18年開始趨嚴,文化部管運營備案;廣電總局管版號,19年只有數百個版號。

1.2 業務類型

  • 分類維度:終端、題材、美術風格、玩法、架構
  • 終端:端遊、⼿遊、頁遊、主機
  • 玩法:MMORPG、ACG、MOBA、RTS、FPS、SLG
  • 風格:武俠、魔幻、寫實、⼆次元
  • 架構:分區分服、全區全服、全球同服

2. 遊戲技術特徵

2.1 核心技術邏輯

對於任何網絡遊戲而⾔,同步是⼀定要解決的核心問題,甚至比遊戲玩法邏輯本身還重要,什麼是同步?同步是網絡遊戲的基礎,通過網絡通訊來確保同屏玩家看到的遊戲世界中每個遊戲單位的位置、世界場景、狀態屬性都要保持⼀致。即:客戶端的表現要⼀致,同時客戶端與服務端的數據要⼀致。業界主要有兩種同步方式。

狀態同步

狀態同步玩法邏輯(比如戰⽃邏輯)寫在服務端,服務端作爲邏輯控制層,客戶作爲⼀個表現層,玩家對象數據在服務端生成並維護,客戶端中玩家對象的所有動作都會通知到服務端,服務端進⾏邏輯計算並將結果同步給所有客戶端,客戶端執行表現(播放動畫、特效並修改玩家對象的屬性顯示),這種方式下,客戶端的數據只能由服務端的指令來修改。

優點:安全性極高,防外掛能力強;斷線重連⽐較好實現,無非就是把整個場景和⼈物全部重新⽣成⼀遍發給中途掉線重連上來的客戶端去表現即可。

缺點:服務端壓力較大(所有動作的計算邏輯需要在服務端上做),網絡交互流量大,實現難度大,開發效率低。(通過分區風服來平行擴展);對於格⽃競技競速類,玩家動作、位移、⻆度的切換⾮常頻繁且快,也需要比較強的同步校驗,這時狀態同步無法解決。

典型遊戲:狀態同步對網絡延遲的要求並不高(玩家表現層是不是⼀致沒有太大關係,只要結果⼀致就行),⼀般RPG遊戲在200-300ms的延遲也能玩下去,如MMORPG,魔獸世界、天龍八部等。

幀同步

幀同步也叫指令同步,玩法邏輯寫在客戶端了(比如戰鬥邏輯),客戶端所有動作生成⼀條指令發給服務端(比如攻擊對象B),服務端收到指令後什麼也不做,直接轉發給所有客戶端,客戶端收到指令後執⾏邏輯計算並執行表現層(播放動畫、特效並修改玩家對象的屬性數據)。

優點:服務端壓力小(僅僅起到⼀個轉發的作⽤),網絡流量小,能做到更好的及時反饋及細節反饋的⽤戶體驗。

缺點:容易外掛,斷線重連會⽐較繁瑣,需要在客戶端重放每⼀條指令。

典型遊戲:RTS、moba等即時對戰類遊戲,對同步性的要求很高,⼀場戰鬥的人數是確定的。王者榮耀、魔獸爭霸3、所有格鬥類遊戲等。實時性要求非常高,要求RTT小於50ms纔能有流暢的體驗。

2.2 典型技術架構

分區分服:典型MMORPG

MMORPG 大型多人在線角色扮演,如魔獸世界,劍靈,天龍八部

特點:玩家之間強交互、實時性要求⾼、全⾯的遊戲世界系統。

  1. 業務流:特徵,交付實時性,主要壓力在哪⾥(網絡、cpu、內存)。
  2. 數據流:對數據庫的訪問邏輯,壓力情況。

全區全服:典型MOBA

分少量幾個大區、分服對用戶不可見;或者全局對客戶不可見,應⽤層按⼀定算法進行分配。

ACG/SNS:休閒競技類MOBA(Multiplayer online battle arena)匹配開房間類,大逃殺喫雞類(MOBA+FPS)王者榮耀、絕地求生;堡壘之夜。

特點:休閒競技類,匹配玩法,需要大量的可匹配玩家,匹配後生成戰鬥服。

全球同服:典型SLG

爲什麼要做全球同服,是⼀個運營需求還是⼀個技術需求?不是所有的遊戲類型都適合全球同服。

特點:遊戲對象之間弱交互,實時性要求並不高,300ms內的同步延遲可接受;卡牌,SLG等,如COC:往往有3種架構:

  1. 服務端全集中部署,優化接入網絡(加速器、DCDN)。
  2. 全分佈式部署,服務端應⽤+數據都分區域部署,做區域間數據同步。
  3. 服務端應用層分區域部署,數據集中部署,通過區域緩存+高速通道(專線方式訪問DB)。

數據⼀致性問題:⼀個玩家斷線,緩存數據還未落地,玩家重新登錄被判定到另⼀個區域登錄了,可能獲取不⼀致的角色數據;需要gamesvr判定上一次登錄在哪個區域,通過⼀個全局服務去通知對方gamesvr下線玩家並回寫數據,然後再預取數據。

2.3 技術痛點及訴求

遊戲業務最主要就是要求服務端邏輯處理的實時性和高併發支撐能力,玩法邏輯和數據都在⼀個進程是最理想的方式,但往往因爲性能容量的限制,⽬前主流都是邏輯模塊拆分、分佈式部署,同時又要控制分佈式調⽤的鏈路和次數來控制延遲的目的;對於運行時數據基本都是在內存進行處理(如共享內存),玩家角色的結算/存檔數據以固定週期持久化。

基於以上游戲技術特徵分析,總體來說對遊戲對技術層⾯的訴求優先級是:網絡>計算>安全>數據庫。

在網絡方面核心痛點其實就是如何解決網絡延遲、丟包、抖動對玩家卡頓、掉線等體驗的破壞,隨着服務端技術更新和同屏玩家數量的增加,對遊戲服務層的併發訪問、穩定性、⽹絡延遲也有了越來越高的要求。

3. 遊戲網絡優化

遊戲體驗的優化是⼀個系統工程,需要多種優化手段聯合作用,業界很多的精力是放在邏輯層的處理上,純網絡層面的優化只能說是一方面,以下基於雲環境的網絡優化方案進行闡述。

3.1 遊戲單服網絡能力

對於狀態同步的MMORPG類遊戲,每⼀次網絡同步的數據是整個遊戲世界場景的所有單位的屬性、狀態、行爲判定等數據,同步量大,網絡吞吐要求高,以⼀個單服設計容量1萬在線的MMORPG遊戲來說,通常⼀次網絡同步的包大小在512byte左右,單⽤戶評估帶寬30kbps,則出網卡吞吐、包量能力需要的值:

以上是出公網的網卡的流量,GameServer還存在內網通信的需求,因此在這種場景⼀般建議是選擇能⽀持百萬級別pps的實例,如:ecs.c6.4xlarge 依託神⻰架構,將網絡虛擬化功能卸載到專用硬件,提供了更⾼的網絡io承載能力和穩定性。同時建議將網絡中斷分散給不同的vCPU處理,提升網絡PPS和帶寬性能。即開啓網卡多隊列功能:

3.2 玩家接⼊網絡加速

這塊主要是玩家到遊戲服的公網鏈路上進行加速。

基於加速器優化玩家接入

加速器與遊戲是天然關聯的兩個行業,主要解決玩家與遊戲服因物理距離遙遠而出現的延遲、丟包等情況對遊戲流暢度的影響,這在國內玩家訪問海外遊戲服的場景中很常見(比如某些遊戲國內禁止發行而國內玩家只能登陸海外服來體驗),玩家可以購買各類加速器產品,或者使⽤遊戲客戶端⾃集成的加速產品來實現鏈路優化,在雲上要構建這⼀層加速其實已經⾮常簡單,甚⾄直接利⽤雲的架構輕鬆實現⼀個加速器產品。

具體流量路徑

  • 在上海VPC和⽇本VPC建⽴高速通道實現兩地ECS內網互通。
  • 在兩端地域ECS之間建立隧道協議,GRE或VXLAN,分別綁定本地地域EIP。
  • 國內玩家通過公⽹VPN連接到上海上車點ECS,經過隧道接⼝路由到日本下車點ECS。
  • ⽇本ECS接收到去往遊戲服的數據包從日本本地EIP出去,同時回程路由到隧道接口發給上海ECS。

基於DCDN動態加速頁遊

對於頁遊、H5小遊戲等產品由於其⾛http協議,輕客戶端模式動態邏輯中也包含有⼤量靜態資源,這類遊戲往往是全區全服單地域覆蓋全國,網絡上的主要痛點是:玩家跨運營商跨地域訪問遊戲服,網絡傳輸擁塞的時延、丟包等情況嚴重影響用戶體驗,同時客戶自行去做動靜分離、動態加速等方案需要大量的時間、成本投入。

全站加速(DCDN)通過動靜分離、邊緣緩存、智能路由、壓縮傳輸等技術,解決跨運營商、網絡不穩定、單線源站、突發流量、網絡擁塞等諸多因素導致的響應慢、丟包、服務不穩定的問題,提升動靜態混合、純動態站點或App的加速性能和訪問體驗;這種比較適合如三七頁遊、抖⾳小遊戲等,其實對於⼀些重度遊戲的全局⾮戰鬥模塊、周邊系統等也能接入DCDN來進行全局加速。

基於CEN加速特定地區玩家

國內地域⼴闊,遊戲服雖是儘量做本地覆蓋,但出於成本因素對於有些偏遠地區還是覆蓋不全,這部分玩家涉及跨運營商跨地域的遠程訪問遊戲服,遊戲掉線、卡頓時有發⽣,⽐如對於新疆、⻄藏、寧夏、⻘海等地域,遊戲服在部署上基本不會做本地覆蓋,如果拉近遊戲服與玩家的距離?⽬前基於阿⾥雲有種可行的方案是:SLB+CEN+遊戲服(跨地域)。

該⽅案對於沒有POP點、anycast⽀持的地域比較合適,相當於SLB掛載跨地域的ECS(白名單開放),拉近遊戲服到用戶側距離。

3.3 全球同服⽹絡構建

這塊主要是基於專線的加速方案,在全球同服遊戲類似中,數據傳輸需要跨運營商、跨多國通信,這對⽹絡質量提出更高的要求,當然⽬前能實現真正意義上的全球同服遊戲其實沒有,主要還是對即時性體驗要求不高的SLG、卡牌等類型,遊戲對象之間弱交互,實時性要求並不高。

基於GA全球加速

GA利⽤阿⾥雲全球傳輸網絡,實現全球用戶就近接入和跨地域部署,減少延遲、抖動、丟包等網絡問題的影響,按區域覆蓋玩家。

GA爲每個接⼊加速區域的地域分配⼀個加速IP,客戶端流量通過加速IP就近從接⼊點進⼊阿⾥雲加速網絡。進⼊阿⾥雲加速網絡後,全球加速可以智能選擇路由並⾃動完成網絡調度,然後把客戶端的網絡訪問請求送達至最佳終端節點,避開公網的擁堵,達到減少時延的效果。

基於Anycast EIP 加速

同樣全球同服的場景,Anycast 主要解決多國多地域的跨網通信鏈路的質量問題,通過單個ip覆蓋全球的加速能力,這大大簡化了遊戲全局模塊的部署問題。

阿⾥雲⽬前在全球各地域部署anycast pop點,覆蓋地域/國家通過這些點來就近接⼊,部署在HK的遊戲服只需要⼀個ip,通過Anycast路由協議在多個Anycast POP點發布該ip,pop點通過專線連接部署在阿⾥雲VPC的遊戲服務。

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章