全球服游戲如今正在成為出海游戲的主要考慮模式诞丽,跨國對戰(zhàn)鲸拥、全球通服打破國界的限制,將不同地區(qū)不同語言的玩家放在一起合作/競技僧免,成功吸引了大量玩家的關(guān)注刑赶,并逐漸成為主流的游戲玩法。
游戲廠商們也在嘗試采用一地部署多地覆蓋懂衩、全球逐步宣發(fā)的模式進(jìn)行第一款全球服游戲的發(fā)行試點及成本控制撞叨。文章主要針對全球服和出海游戲的特性優(yōu)勢、架構(gòu)布局浊洞、網(wǎng)絡(luò)規(guī)劃牵敷、實用技術(shù)等幾個方面進(jìn)行探討。
本文主要觀點:
(1) 微服務(wù)是主流沛申,模塊化架構(gòu)易于擴(kuò)容以及維護(hù),微服務(wù)+自動化的業(yè)務(wù)架構(gòu)對于全球服游戲來說幾乎是必然的選擇姐军;
(2) 架構(gòu)高度自動化铁材,自動注冊/剔除保證可用性;
(3) 幀同步+UDP特性奕锌,高性能傳輸和帶寬成本控制(對戰(zhàn)類游戲要求較為突出)著觉;
(4) 核心架構(gòu)集中部署為主,全球網(wǎng)絡(luò)優(yōu)化覆蓋玩家惊暴;
(5) 游戲代碼的關(guān)鍵幀及預(yù)判設(shè)計關(guān)系到游戲?qū)W(wǎng)絡(luò)延遲的兼容性饼丘。
為什么要微服務(wù)和自動化?
原因一:全球服游戲多為邏輯服或無區(qū)服概念的通服辽话、對戰(zhàn)類游戲肄鸽。為了保證游戲性和全球化的特點卫病,保證匹配和游戲世界玩家的多元化,傳統(tǒng)意義上的區(qū)服架構(gòu)和跨服對戰(zhàn)模式并不適配典徘,以皇室戰(zhàn)爭蟀苛、列王紛爭等為例的一眾匹配對戰(zhàn)游戲便是其中的代表。
原因二:全球服游戲要求承載全球玩家的涌入逮诲,及時發(fā)現(xiàn)負(fù)載瓶頸并擴(kuò)容是一個必然的要求帜平,模塊化拆分架構(gòu)之后可以靈活的針對不同活動、玩家特性增加對應(yīng)的業(yè)務(wù)服務(wù)器梅鹦,并通過自動注冊機(jī)制實現(xiàn)快速擴(kuò)容裆甩。
整個架構(gòu)采用注冊管理+自動化之后,可以通過研發(fā)腳本或者通行的管理工具齐唆,甚至Docker的K8S來實現(xiàn)業(yè)務(wù)宕機(jī)的自動恢復(fù)和容災(zāi)嗤栓、負(fù)載突發(fā)的自動擴(kuò)容,這可以極大的降低運維成本蝶念,并對于業(yè)務(wù)健壯性進(jìn)行極大的提升抛腕。
對于游戲服務(wù)的自動注冊機(jī)制,在項目早期媒殉,受限于研發(fā)實力或者工期担敌,開發(fā)者一般會選擇ZooKeeper進(jìn)行管理維護(hù),但是在實際運行中由于ZooKeeper自身較重的功能實現(xiàn)廷蓉、二次開發(fā)及bug處理的復(fù)雜度全封,很多用戶會將其替換為自主研發(fā)實現(xiàn)的輕量級RPC自動注冊服務(wù)。實際情況要具體視研發(fā)能力而定桃犬,此外GRPC也有不少的支持者刹悴。
幀同步技術(shù)和UDP傳輸協(xié)議的使用
關(guān)于幀同步主要針對對戰(zhàn)類游戲,對于RPG世界或者卡牌類游戲也有一定參考意義攒暇,用戶使用幀同步主要在于三點:1土匀、全球同步效率;2形用、服務(wù)端壓力緩解就轧;3、全球化大流量的成本控制田度。
以往有過這樣的情況妒御,用戶在全球服游戲逐步宣發(fā)、對應(yīng)國家客戶端上線的過程中镇饺,遇到跨國專線成本問題無法承擔(dān)的問題乎莉,最終無奈選擇降級服務(wù)采用特殊優(yōu)化過的外網(wǎng)出口覆蓋的案例。
而選擇使用UDP傳輸而非TCP傳輸主要考慮到對戰(zhàn)要求的實時性,TCP自身的重傳邏輯已經(jīng)無法滿足全球化(對戰(zhàn))游戲的網(wǎng)絡(luò)保障要求惋啃,通過自主實現(xiàn)UDP重傳哼鬓,甚至是報文同時重復(fù)發(fā)送的邏輯,來保證游戲數(shù)據(jù)包最終的抵達(dá)成功率肥橙。
關(guān)于最核心的全球服模式上魄宏,我的總結(jié)是:先集中再分布。
以當(dāng)前大部分游戲的框架存筏,如卡牌對戰(zhàn)宠互、RPG世界等完全可以通過集中部署+網(wǎng)絡(luò)調(diào)優(yōu)的方式實現(xiàn),當(dāng)前全球雙向延遲一般在300ms以內(nèi)椭坚,而一般人的反應(yīng)時間一般在300ms左右予跌,故網(wǎng)絡(luò)延遲對于玩家的感知非常微小,大部分游戲都可以集中部署并且不犧牲玩家游戲體驗善茎。同時集中部署的另一個優(yōu)勢是對于架構(gòu)復(fù)雜度的降低券册,維護(hù)便捷度的提升,對于成本控制及玩家數(shù)據(jù)統(tǒng)計也會方便很多垂涯。
圖一:集中部署全球服架構(gòu)
什么情況下考慮“再分布”呢烁焙?首先,游戲是房間類的對戰(zhàn)游戲耕赘,其次游戲?qū)τ诰W(wǎng)絡(luò)延遲極敏感(FPS類)骄蝇,最后重要的點是,游戲架構(gòu)采取的是對戰(zhàn)前緩存預(yù)熱數(shù)據(jù)操骡、對戰(zhàn)結(jié)束后寫入的異步模式九火。
圖二:分布式部署全球服架構(gòu)
下圖為對戰(zhàn)游戲的基礎(chǔ)架構(gòu)蒂秘,通過該部署模式要點為:
(1)平臺操作仍然集中化部署玩家統(tǒng)一訪問苔咪,如日常操作、裝備購買等延遲不敏感操作遇八;(2)對戰(zhàn)房間分布于全球各個數(shù)據(jù)中心是掰,而當(dāng)玩家需要對戰(zhàn)虑鼎、進(jìn)行匹配分房時,通過算法調(diào)度到相對大多數(shù)用戶最近的節(jié)點键痛;
(3)節(jié)點提前預(yù)取相關(guān)用戶數(shù)據(jù)炫彩,對戰(zhàn)產(chǎn)生的全部數(shù)據(jù)統(tǒng)計由本地進(jìn)行交互處理,并在對戰(zhàn)結(jié)束后集中上傳至中心數(shù)據(jù)節(jié)點散休。
圖三:對戰(zhàn)游戲基礎(chǔ)架構(gòu)
該方案在對戰(zhàn)網(wǎng)絡(luò)延遲和數(shù)據(jù)一致性上進(jìn)行了保證媒楼,但是相對架構(gòu)會更為復(fù)雜乐尊,實際落地過程中需要較好的配合和較深的維護(hù)經(jīng)驗戚丸。
那么,當(dāng)前的分布式數(shù)據(jù)庫解決方案是否能夠解決全球服數(shù)據(jù)一致性的問題?實際上限府,為了保證數(shù)據(jù)一致性夺颤,這里以TiDB為例,暫不支持超過30ms的集群內(nèi)部延遲胁勺。而且即使強(qiáng)行部署世澜,集群內(nèi)部的高延遲會嚴(yán)重影響QPS性能。在當(dāng)前的技術(shù)環(huán)境下署穗,全球分布式數(shù)據(jù)庫最好的代表者應(yīng)該是區(qū)塊鏈技術(shù)寥裂,不過性能是絕對無法滿足大部分游戲使用的,即使是僅有21個核心節(jié)點的EOS案疲,其極限QPS也遠(yuǎn)遜于普通配置的集中數(shù)據(jù)庫封恰。
游戲設(shè)計和網(wǎng)絡(luò)延遲的關(guān)系
游戲設(shè)計初期必然要對當(dāng)前全球網(wǎng)絡(luò)環(huán)境有一個初步了解,這點之前也有提到褐啡,基本上當(dāng)前物理鏈路的雙向延遲為300ms內(nèi)诺舔,但是考慮到無線信號不穩(wěn)定、傳統(tǒng)3G網(wǎng)絡(luò)性能等原因备畦,極端情況可能達(dá)500-1000ms甚至更高的情況低飒,游戲必須為此進(jìn)行一定取舍,早期幀同步游戲會因為網(wǎng)絡(luò)最差的玩家造成整個戰(zhàn)局的卡頓懂盐,而隨著技術(shù)的發(fā)展褥赊,樂觀鎖已經(jīng)通過舍棄低網(wǎng)絡(luò)質(zhì)量玩家的部分?jǐn)?shù)據(jù)包來保證全球的游戲體驗。
圖四:簡單全球網(wǎng)絡(luò)數(shù)據(jù)
這邊先不說延遲本身允粤,聊下限制網(wǎng)絡(luò)延遲的客觀因素和數(shù)據(jù):地球周長是40076千米 (赤道)崭倘,光速恒定299792458米/秒(真空),而網(wǎng)絡(luò)當(dāng)前主要是光纖傳輸类垫,在物理速度和傳輸介質(zhì)沒有突破性進(jìn)展的情況下繞地球一周需要近150ms司光,而實際網(wǎng)絡(luò)光纜不一定完全直線,中間設(shè)備轉(zhuǎn)發(fā)也會造成延遲開銷悉患,按照實際網(wǎng)絡(luò)質(zhì)量評估的話残家,中國全國覆蓋一般在100ms(包括偏遠(yuǎn)地區(qū))。
我們之前遇到一位用戶售躁,研發(fā)要求全球服在60ms的延遲以內(nèi)坞淮。按照正常情況,60ms一般可以勉強(qiáng)覆蓋北上廣三地?zé)衢T地區(qū)陪捷。但是要全球服的情況下會比較捉襟見肘回窘,這種情況下,建議做成跨國區(qū)域服的模式市袖。
另外關(guān)于國際出口的情況啡直,以中國為例烁涌,從我們的監(jiān)控情況看,常規(guī)出口的可用率并不樂觀酒觅,而我們亞太數(shù)據(jù)中心接入的電信CN2精品網(wǎng)可以做到不錯的穩(wěn)定性保證(也的確有全球服游戲通過此出口傳輸)撮执,但是并不能做到非常完美的SLA,不定期也會發(fā)生擁塞和抖動舷丹。而且這個問題并不是中國特例抒钱,臺灣地區(qū)、俄羅斯颜凯、印尼谋币、印度部分邦都存在有一定的跨國出口問題,需要通過外網(wǎng)接入點選擇或者產(chǎn)品解決方案如UCloud PathX解決方案進(jìn)行網(wǎng)絡(luò)優(yōu)化症概。
圖五:PathX案例視圖
所以在做一個全球服的項目之前瑞信,可以先做調(diào)研、和云廠商或者同行多聊聊穴豫,基于這些信息凡简,在關(guān)鍵幀和樂觀鎖的時間制定、游戲內(nèi)部預(yù)判及同步機(jī)制的設(shè)計上會更有把握精肃。
雜談拓展:區(qū)塊鏈游戲
區(qū)塊鏈游戲是一種新興的游戲模式秤涩,但是本質(zhì)上是依托于以太坊或者其他共識模式的鏈實現(xiàn)的玩法,當(dāng)前市場上的游戲主要分兩類:1司抱、純區(qū)塊鏈游戲筐眷;2、裝備或搜集元素上鏈习柠。
前者主要以以太貓為代表匀谣,核心是收集、養(yǎng)成類游戲资溃,隨著部分市場關(guān)注賦予了部分商業(yè)屬性武翎。后者則是融合了區(qū)塊鏈元素在其內(nèi)部,附加了很多其他玩法溶锭,諸如集換式卡牌等等宝恶。
區(qū)塊鏈行業(yè)還在摸索階段,共識算法趴捅、共同監(jiān)督垫毙、不可否認(rèn)性是其核心特質(zhì),但性能較低拱绑、需要支付GAS等也是其短板综芥,現(xiàn)在作相關(guān)評論還比較早,如果有興趣的話猎拨,可以鉆研下相關(guān)共識技術(shù)膀藐,對于各種鏈征峦、共識技術(shù)有一個認(rèn)知后,再根據(jù)自己的游戲模式選擇一個適合的場景消请。
一般來說區(qū)塊鏈游戲和鏈本身是相互依存的,如果鏈自身出現(xiàn)問題也會影響到游戲类腮,可以說鏈?zhǔn)腔A(chǔ)支撐臊泰,這個在選擇的時候建議慎重考慮。我們也在探索相關(guān)的技術(shù)方向?qū)嵺`蚜枢,并同公有云進(jìn)行結(jié)合缸逃。7月21號UCan下午茶成都站——“游戲出海,那些彎和那些坑”主題沙龍上厂抽,沈皓也會在現(xiàn)場深入分享出海游戲全球服架構(gòu)及解決方案需频,感興趣的讀者可以關(guān)注沙龍后續(xù)技術(shù)內(nèi)容。
作者介紹
沈皓:UCloud PathX產(chǎn)品早期方案設(shè)計者之一筷凤,深耕全球服游戲領(lǐng)域昭殉,曾全面負(fù)責(zé)多個知名游戲出海項目的全球/跨國業(yè)務(wù)對接、部署及落地藐守。對于MOBA挪丢、RTS、FPS等各類游戲的出海全球化的需求卢厂、難點乾蓬、架構(gòu)實現(xiàn)等深入分析并有獨到見解。