游戲開發經驗總結:分布式架構、數據庫與進程設計
如果把游戲看成一輛賽車,那么,游戲開發在其中扮演著至關重要的發動機角色,控制著玩家所感知到的劇情、關卡、實時社交溝通、版本更新、兼容和性能等問題;而運維則充當了決定賽車生死的安全剎車,不管是端游、頁游還是手游,能否扛住卡頓、宕機與DDoS攻擊等都離不開運維的支持。但開發者往往在突破核心玩法、保障運維質量、抵御惡意攻擊等方面,會遇到諸多挑戰。
騰訊云,基于自身業務與海量用戶,在如何打造一款爆款游戲上摸索出了一系列完整的解決方案。1月12日騰訊云聯合InfoQ舉辦的游戲主題沙龍,來自騰訊云、騰訊游戲和三七互娛的專家們,就游戲的云端開發與運維展開了深入探討,本文整理了部分精彩內容,感興趣的讀者可以點擊文末【閱讀原文】下載講師完整PDF。
提供云端技術支持 騰訊云游戲解決方案概述
來自騰訊云的騰訊游戲云解決方案架構副總監王璋,從游戲業務云上最佳實踐和案例入手,深度剖析了游戲開發面臨的技術挑戰,以及騰訊云在游戲行業提供的各種解決方案,與一眾參會者探討如何尋找適合自身業務的游戲云方案。
游戲開發面臨的技術挑戰?
王璋首先介紹到,過去一年,游戲開發者最關心的問題主要包含加速+專線、攻擊、游戲語音、IOPS+PPS以及Hadoop+AI大數據分析等,這也是當前游戲開發者比較頭疼的幾個方面,基于這些問題,騰訊云提供了系列通用解決方案。

騰訊云游戲行業技術解決方案
1、網絡加速
玩家到服務端的加速,尤其是跨國加速更多的還是由玩家去購買迅游、網易等提供的加速器產品,為降低玩家體驗游戲的門檻,提升玩家的體驗,騰訊云提供兩套方案來實現服務端解決跨域長距離傳輸網絡質量問題。
如下圖為騰訊云的“游戲加速家架構(一)”,具體實現方式為在玩家所在的區域與游戲服務器之間架設一條專線通道構建起對等網絡,通過專線鏈路為玩家提供上下行穩定可靠的訪問體驗。當然這套方案需要游戲開發者在玩家和服務器所在的區域搭建兩個代理集群,用于上下行流量的轉發,有一定成本開銷,同時對于已經在線運營的業務涉及到玩家請求IP地址的變更。

另一套方案,業務的改造成本較低,即保持原有RS(Realy Server) IP地址不變,新增其他區域的LBS IP地址與映射RS映射,公網IP所在的網關集群與RS間為專線鏈路,實現一臺RS通過多個公網IP輻射到不同的地域。比如,RS在香港,國內的玩家可分別從騰訊云華北、華東、華南Region的LBS IP上行,走專線到RS,韓國、日本、新加坡區域的玩家也同樣可以就近通過本地的LBS IP上行訪問RS的服務。

2、安全防護
除了加速解決方案,騰訊云在網絡攻擊的安全防護上也提供了多套方案來對抗不同特點的攻擊,包括超大流量攻擊對抗方案、精細化攻擊對抗方案、棋牌游戲攻擊對抗方案等等。以超大流量攻擊對抗為例,業務遭受攻擊時長占業務在線時長其實不大,所以業務的常態服務可以通過體驗較好的BGP網絡提供,并且BGP可以提供百G規模攻擊流量的清洗,超出百G的攻擊BGP的清洗成本會直線上升,因此會通過騰訊云提供的中間域名將流量自動調度到三網出口進行超大攻擊流量的清洗。

3、其他場景的應用探索
除了上述解決方案,騰訊云針對游戲業務的痛點,還在嘗試其他解決方案的探索,比如全球支付、游戲智能客服、游戲營銷安全等。以游戲智能客服為例,玩家在游戲中遇到的問題大多是相似的,通過對知識庫數據的分析,實現在線自動應答,依靠騰訊海量的用戶標簽數據,和優秀的算法,訓練出真正智能的客服,游戲都可以通過智能客服解答玩家的疑問,提升玩家問題的處理效率和游戲本身的體驗。
騰訊游戲海量服務架構構建之路
網絡游戲和其他互聯網服務一樣,需要面對承載海量服務的壓力,同時還需要滿足游戲所要求的低延遲、高業務邏輯復雜度特性。來自騰訊游戲研發部資深架構師韓偉,基于騰訊游戲的海量架構構建經驗,為大家分享了游戲海量服務的架構特征、核心模塊以及彈性能力的實現手段等技術內容,為游戲開發者在面對海量用戶時提供了一些借鑒思路。
分布式進程框架構建
現在的騰訊游戲,包括業界其他很多游戲,如魔獸世界等大多使用的是跨服務器,所以現在游戲服務器端的趨勢是全面的分布式系統。相較于古老的游戲架構,分布式系統,具有方便部署到不同機器、更精細的負載均衡單位以及便于監控和問題定位等優勢,更加符合閑雜用戶對游戲系統的體驗要求。
下圖是騰訊云的分布式集群架構圖,主要包括接入進程和邏輯進程。左邊是客戶端,騰訊有一些接入進程,主要是處理網絡連接,把這些網絡連接的數據做初步處理之后,再放到邏輯進程進行分析。有可能這個邏輯進程并不是自己的進程,因此可能還會轉發到別的邏輯請求,最后給客戶端回應,也有一種情況是游戲需要多個回應,即一對多的請求,這個時候整個過程需要由多個進程同時滿足,不同的客戶端可能連接在不同的進程上面。

不管是接入進程還是邏輯進程,都需要統一的集群中心來管理,集群中心是所有集群管理的最核心的節點,用來管理多進程的模型。可以看到,如果將整個集群看成一個單位的話,每一個進程其實都可以方便的部署到不同的機器上去,通過集群中心,進程之間也可以知道對方的信息、收發數據,然后合理的將進程分布到不同的機器上,提高整個集群的容量。
那么,騰訊云是如何構建這樣一個分布式的集群系統的?韓偉提到了兩個關鍵點:分布式通信和緩存系統。
分布式通信:現在分布式通信基本上都會使用到消息隊列技術,騰訊的消息隊列有一個特點,每一個消息的收發端都是一個消息隊列服務。這個消息隊列服務的收發端只收取自己相關的數據,這種方式可以明顯減少消息列隊在中轉過程的傳遞時間。另外,騰訊云也會采用自定義路由的方式,由客戶端根據需求選取合適的路由方式,靈活配置集群中心的地址。

分布式存儲: 分布式存儲的核心要點為持久化和緩存兩大塊。接入代理在接到請求后,會帶上一個數據片,包含數據來源等相關信息,用以做數據的追蹤和留存;在緩存方面,邏輯進程負責承載玩家所要讀寫的數據緩存,按照騰訊游戲運營標準,玩家丟失數據的時間不能超過十分鐘,因此,騰訊云會做一個定時自動回寫的代碼,每十分鐘自動回寫一次,防止數據丟失。

這套系統每個進程之間的鏈接看起來比較復雜,但是實際上這個復雜性被一套通用的分布式通信消息隊列所接管,開發者只需要了解這個集群里面有什么樣的服務,并不需要自己管理這個復雜性進程,因此,這一整套系統的開發和維護上并不困難。
海量服務器運維實踐
那么,這套分布式系統是如何做運維的呢?首先騰訊云會從部署角度搭建一個云服務平臺,做整個集群的進程部署、進程監管等工作這個平臺軟件會把所有的功能劃分成一個個集群,這個里面的節點數量非常多;因此,騰訊云也配套搭建了一套計算能力伸縮平臺,根據需求進行自動的擴容和縮容的操作;對于服務接口的定義,系統有服務的綁定、服務的發現才能做服務對接,所以在分布式開發框架之外,也會配置服務管理系統;最后是基礎運營服務平臺,包含一些非功能性的能力,比如可以輸出標準的日志,輸入標準的監控指標等,這個平臺主要是支持一些運維的操作。

韓偉最后向現場觀眾透露道,騰訊研發部已經將部分跟游戲邏輯關系不是特別緊密的服務都做成了云平臺,比如儲存方面,王者榮耀采用這套云平臺的儲存的同時,全民突擊也會用這個存儲系統,這樣能夠極大的提升運營效率以及運維效率。
“吃雞”類游戲架構分析
今年從3月份開始吃雞游戲一直占據游戲話題排行榜首位,隨后,國內的廠商也開始進行這類游戲的開發,據統計,吃雞“”類游戲的全球銷量超過3000萬份,同時在線超過240萬,連續43周蟬聯Steam周銷量榜冠軍。那么,這樣一個火爆游戲的背后,其游戲架構是怎樣的呢?并針對“吃雞”類游戲在反外掛、加速、安全等方面的需求,有什么樣的解決方案?來自騰訊游戲云資深架構師賀廣平,就“吃雞”類游戲架構和相關解決方案做了詳盡的分析。
“吃雞”類游戲的架構分析
下圖為一個“吃雞”類游戲完整的架構圖,這里,lobby和DS服務架構用作全球部署;安全方面有DDOS防護和TP反外掛方案,其中,TSS(tencent security system) 是騰訊的反外掛系統;XMMP 是即時通訊系統,負責信息的傳遞;TC為騰訊充值系統-IDIP。

整個系統看起來比較復雜,但開發者實際上只要關注兩塊,左邊的游戲登陸模塊和右邊游戲服相關模塊。
相關性能解決方案介紹
整體來看,“吃雞” 類游戲是多人同時在先游戲,兼之全球同服的特點,整個架構有四大要求和特點:高并發、低延遲、反外掛以及游戲語音,騰訊云在這四方面也提供了相應的解決方案。
高并發解決方案:吃雞” 類游戲的特點是同一地圖會有100人以上同場競技,需要服務端有高并發包量的處理能力和大流量吞吐能力。騰訊云采用的解決方案是高主頻+SSD云盤+多隊列+智能網卡的方式,提供高 IO 云服務器以及高可用云數據庫,應對激增、高并發、海量訪問需求。

低延遲解決方案:多人實時競技,需要保證每個玩家的網絡延時和穩定性要求,騰訊云在全球共用 Lobby,統一管理和調度全球各地區服務器,如下圖,在網絡堵塞的情況下,A地域玩家可以通過加速代理直接訪問C地域lobby服務。

反外掛解決方案:外掛已經嚴重影響到游戲的平衡,尤其在“吃雞”類游戲中更加泛濫,一套強大反外掛系統保證游戲穩定運營,TP反外掛系統是騰訊自主研發的一套安全系統,通過增加客戶端代碼加密、外掛特征掃描、動態代碼驗證等措施,實時保障游戲不受外掛、木馬侵害。其系統框架如下圖所示:

游戲語音解決方案:競技類游戲需要通過語音來指揮組內其他同伴的戰斗,陌生玩家可以語音直接互動,也通過聲音判斷其他玩家的位置。下圖為騰訊云的TMG游戲語音框架圖,其3D音效技術,利用“頭部關聯傳輸函數”(HRTF 算法),對雙耳之間的時間差異和頻譜差異進行建模,形成有聲源方位感的聲音。同時使用采樣混響方式填補HRIR缺失的環境反射聲,從而構建完整的聲場模型。比如在一個小房間里,不僅可以聽到兩個人之間的對話,還可以聽到聲音從墻壁中反射的效果,增加沉浸感。

目前,基于游戲開發引擎(例如Unreal、Unity)實現的3D音效在游戲中的應用已經非常普遍了,通過游戲引擎模擬重現空間中聲源方位,例如CS中射擊的槍聲、中彈時的音效、附近敵人輕微的腳步聲,可以顯著提高游戲的沉浸感,造就身臨其境的游戲體驗。
三七互娛游戲上云的現狀與未來
三七互娛開發和運營了多款成功的游戲,從《永恒紀元》到《大天使之劍》等,在游戲開發和運維領域有著豐富的經驗和心得,三七互娛運維總監龔宏績,從三七互娛實際業務情況出發,分享了對游戲現狀及未來的一些看法和思考。
龔宏績認為,未來互聯網企業只有兩種存在方式:大數據和安全,而云是大數據和安全的完美結合體,也可能當下甚至未來很長一段時間唯一存在的形態。傳統游戲企業在做開發和運維的時候,往往會面臨區域性或者跨區域網絡構建與管理、全面的系統和業務監控告警、安全事件甄別處理、大量日志收集分析處理等問題,而云,恰好能幫助解決這些事情。

云計算包含網絡物理的IaSS基礎設施即服務、系統容器的應用服務的PaSS平臺即服務,在產品的自動擴容、虛擬化和數據高度集成等方面提供了一套完整的解決方案。在運維方面,傳統互聯網企業的運維可以分為三個階段:標準化、自動化和服務化。國內的大多數企業,基本上分都處于前面的標準化和自動化兩個階段,而國內的一些云服務供應商如騰訊云、阿里云等,已經走到了服務化階段,這些企業基于自身業務的同時,也開發了一套比較成熟的產品做成服務。

現場,龔宏績也表示,現階段企業上云并非完美無缺,包括三七互娛在內,大多數的游戲企業在公有云成本的管理、以及用戶數據安全保障等方面都遇到了比較大的挑戰,這也是現今云廠商一直在需求解決之道的方向,也將是未來云領域的技術趨勢之一。
演講最后,對龔宏績對云技術的發展給出自己的思考:不管是大數據還是安全,從商業的角度來說,未來的技術和產品發展趨勢必然是一個用戶為中心的世界、一個數據驅動產品的世界、一個生態協同的世界,這是無可置疑的。
直播+游戲 騰訊云線上知識競技方案詳解
最近一段時間,“直播答題”已席卷互聯網。王思聰力推《沖頂大會》、周鴻祎的花椒直播上線《百萬作戰》、今日頭條&西瓜視頻推出《百萬英雄》、映客在線答題《芝士超人》、一直播的《黃金十秒》……仿佛一夕之間,眾多互聯網直播版《開心辭典》冒了出來。在游戲行業競爭如此激烈的背景下,知識為何能競技異軍突起,成為直播行業又一風口。來自騰訊云P2P直播解決方案負責崔立鵬,分享了“沖頂大會”背后的商業邏輯和技術實現。
沖頂大會背后的商業邏輯
沖頂大會的規則非常簡單,用戶參與直播答題,留在最后的用戶可以角逐當期獎金。這些直播答題的題目范圍涉及很廣,每次活動共 12 道題,規則 10 秒中之內未答題和答錯題都將被淘汰。
那么,這樣一款直播競技游戲為何如此快速火爆?崔立鵬從拉新促活、 廣告分成、以及互聯網直播內容升級三個角度給與解答。游戲商可以通過極低的成本獲取大量的用戶數據和用戶畫像;其次,問題的設置面非常廣泛,涉及天文地理歷史科學娛樂影視音樂詩歌禮儀等,游戲商極易通過提問的形式為廣告方“悄悄”植入廣告;最后,是互聯網直播的升級,過往大多直播是以主播為主導,用戶通過留言互動,而這類知識競技直播,更多的以用戶為主角,極大的提高用戶參與度。
崔立鵬表示,沖頂大會只是直播+游戲的一個小小起步,接下來,將有更多類似的游戲以直播的方式,進行轉型升級,帶來新一波的玩法。
直播競技的技術痛點和解決方案
之前說到,沖頂大會是多人同時在線游戲,同時,在題目顯示10S之內,用戶必須給出問題的答案,因為,這類競技節目的最大痛點是高并發和直播延遲。試想在網絡卡頓時,主播拋出問題后,而其他地域的終端用戶沒有及時同步到信息,那么,他極有可能因為網絡問題而被Pass掉,這對用戶來說是一個致命的體驗打擊。
騰訊云基于上述問題提供了業內首家線上競技的完整解決方案,如下圖所示,出題方,主持人在演播室,將信息通過IM系統推到騰訊云平臺,加上騰訊云自己的播放器就實現播放,在直播這方面一個鏈條已經形成了;同時,在導播臺,有一個簡單的答題后臺,后臺提前錄制好了題目和單,放一個屏幕可以看到這個題目的,主持人說請聽題,導播在SDK通知時間匹配后顯示題目,然后通過騰訊云消息通道向全網下發。

題目雖然下發了,但其實不能排除題目和視頻之間是很精準同步的,這方面,騰訊云做了比較精準的時間同步,即在流處理過程中加一個timestamp,現場發題的時候也加一個標準時間,這兩個時間設置同步狀態,隨后在播放時,將視頻的音頻和視頻時間解析出來,這樣能夠實現比較好的同步。