上篇文章《游戲開發(fā)經(jīng)驗談(一):游戲架構(gòu)里隱藏的五個坑及其應(yīng)對方案》,我們主要講解了游戲架構(gòu)設(shè)計當(dāng)中隱藏的一些坑及其應(yīng)對方案,錯過的小伙伴可以點擊鏈接回溯之前的內(nèi)容。本期內(nèi)容,將會重點介紹對戰(zhàn)類全球服游戲的設(shè)計思路與技術(shù)實現(xiàn)。
鹽池網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),鹽池網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為鹽池千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的鹽池做網(wǎng)站的公司定做!對戰(zhàn)類游戲的設(shè)計思路
協(xié)議的選擇
游戲設(shè)計之初,需要決定選擇哪種協(xié)議來進行通訊。對于對戰(zhàn)類游戲來說,首先推薦的肯定是UDP。
盡管UDP對開發(fā)基礎(chǔ)有較高的要求,需要開發(fā)者自己實現(xiàn)傳輸成功檢驗、重傳以及可靠性保證等,但相對于低開發(fā)成本的TCP,UDP在效率和時效性上都有極大的優(yōu)勢,它可以根據(jù)業(yè)務(wù)特性進行短間隔重傳,或者直接發(fā)送復(fù)數(shù)包來提高弱聯(lián)網(wǎng)狀態(tài)的成功率。
此外,相比于UDP的低延時,TCP的重傳時間是秒級,對于對戰(zhàn)類游戲來說,TCP的重傳速度無疑會造成非常糟糕的玩家體驗,雖然有BBR一類的技術(shù),但也僅僅只能實現(xiàn)更高效的帶寬利用,對于實際業(yè)務(wù)響應(yīng)效率沒有特別大的提升。
當(dāng)然,除了技術(shù)角度分析,公司的實際情況也是需要納入考慮的重要的一環(huán)。總體來說,COC、KOA(阿瓦隆之王)等地圖類少交互的游戲用TCP是沒有問題的,而CR(皇室戰(zhàn)爭)、自由之戰(zhàn)、全民槍戰(zhàn)、槍林彈雨,這類MOBA、FPS等強聯(lián)網(wǎng)需求的對戰(zhàn)游戲,UDP基本是必備的。
同步機制
幀同步:快節(jié)奏、同時希望降低服務(wù)器不必要負載的對戰(zhàn)類手游,幀同步是不二的選擇。幀同步的好處是可以精減上傳信息,只是做一些簡單的數(shù)據(jù)匯總上報,需要的帶寬非常少。
狀態(tài)同步:安全性很高,但狀態(tài)同步需要的帶寬量遠大于幀同步,而全球服游戲本身面臨著非常嚴(yán)峻的全球網(wǎng)絡(luò)環(huán)境,甚至很多情況下需要專線來解決網(wǎng)絡(luò)問題,這時候,網(wǎng)絡(luò)開銷將是比較大的成本。
簡而言之,一句話:如果你想做全球服游戲,請務(wù)必學(xué)會幀同步。
最后,簡單說一下對戰(zhàn)游戲的幾點特性:1)因為采用UDP和幀同步,數(shù)據(jù)包交互包量巨大;2)玩家快照和幀數(shù)據(jù)保存需要高性能大容量的內(nèi)存存儲;3)網(wǎng)絡(luò)穩(wěn)定要求高;4)架構(gòu)主要以模塊化為主,有的甚至可以兩地三中心容災(zāi),需要敏捷部署。
總體來說,對戰(zhàn)類游戲?qū)ο到y(tǒng)架構(gòu)有較高的要求。而云平臺產(chǎn)品,正是為幫助用戶解決這些問題而存在的。
網(wǎng)絡(luò)架構(gòu)設(shè)計
那么,我們是如何為對戰(zhàn)類強聯(lián)網(wǎng)用戶提供網(wǎng)絡(luò)支撐的呢?首先,在網(wǎng)絡(luò)質(zhì)量方面,我們采用自建的BGP及自有AS號,直接和電信聯(lián)通移動等運營商進行路由對接。相比于找中間商,這種方式在網(wǎng)絡(luò)的覆蓋質(zhì)量、故障容災(zāi)能力以及高可用上,都有更好的保障。
此外,我們將機房和網(wǎng)絡(luò)進行了分離,網(wǎng)絡(luò)出口各自獨立,通過不同的物理路徑走到不同的出口POP點,這里的POP點就是UCloud自建BGP和運營商建立連接的地方,最底層是可用區(qū),也就是傳統(tǒng)意義上的機房。當(dāng)用戶在UCloud平臺部署的時候,就是利用了可用區(qū)的架構(gòu)。
這種方式可以將所有的機房資源池化并通過專線打通內(nèi)網(wǎng),為用戶免費提供相同地區(qū)不同機房間的網(wǎng)絡(luò)互通,方便用戶實現(xiàn)跨機房高可用的容災(zāi)架構(gòu),同時多POP點也可以規(guī)避物理路徑問題或者運營商本地城域網(wǎng)故障(比如北京本地)帶來的影響,保證機房出口的持續(xù)高可用。
基于UCloud云平臺的游戲架構(gòu)示例
下圖是一個基于UCloud云平臺的全球服游戲架構(gòu),首先,數(shù)據(jù)存儲層直接使用了高可用數(shù)據(jù)庫和Redis來降低運維成本,并保證業(yè)務(wù)可用性;后端在原生產(chǎn)品的邏輯上,對諸如半同步等功能進行了自研強化,在不改變?nèi)魏斡脩羰褂昧?xí)慣的情況下,強化數(shù)據(jù)一致性、安全性、以及查詢性能。
此外,服務(wù)器區(qū)域采用整體框架集群+高性能負載均衡的接入模式,TCP四層報文轉(zhuǎn)發(fā),保證大并發(fā)下的性能可靠;而對戰(zhàn)服務(wù)器采用了注冊機制,房間管理服務(wù)器為主從高可用,由于對戰(zhàn)采用了UDP+幀同步的模式,包量可能會達到5W-8W甚至更多,因此直接采用了網(wǎng)絡(luò)增強云主機來承載。
在全局層面,數(shù)據(jù)庫和負載均衡器都采用了UCloud跨可用區(qū)容災(zāi)的高可用產(chǎn)品和集群,業(yè)務(wù)服務(wù)器在我們的D/E兩個可用區(qū)對半部署,保證業(yè)務(wù)的機房級容災(zāi)能力。
根據(jù)對戰(zhàn)游戲的特性,簡單總結(jié)下對戰(zhàn)游戲架構(gòu)設(shè)計需要注意的幾個點:1)服務(wù)集群化。如果要做全球化對戰(zhàn)游戲,服務(wù)器需要集群高可用,如果是滾服模式,運維成本以及玩家跨服對戰(zhàn)成本將會非常高;2)服務(wù)模塊化。功能拆分時便于管理擴容,并且大化利用效率節(jié)省成本;3)業(yè)務(wù)自動化。幫助降低運維成本,在業(yè)務(wù)突發(fā)的情況下能夠快速擴容提升敏捷性。
全球服技術(shù)實現(xiàn)
全球服游戲?qū)⑴c人斗的主旨放大化,隨著國戰(zhàn)以及其他國別特性玩法的加入,基于全球服的對戰(zhàn)游戲能夠很好地激發(fā)玩家的歸屬感,提升玩家對游戲的黏著度和對戰(zhàn)積極度。落實到技術(shù)層面,相比于分區(qū)對戰(zhàn)游戲,全球服對戰(zhàn)游戲的實現(xiàn)難度要高上許多,主要在于以下三點:
網(wǎng)絡(luò): 對戰(zhàn)類游戲模式不同對于網(wǎng)絡(luò)性能的要求不同,但為了保證傳輸性能,普遍會選用UDP協(xié)議實現(xiàn)業(yè)務(wù)可靠傳輸;
代碼: 核心架構(gòu)可能同分區(qū)的對戰(zhàn)游戲沒有特別大的區(qū)別,但是在網(wǎng)絡(luò)設(shè)計、部署架構(gòu)模式、網(wǎng)絡(luò)延遲等情況下需要考慮更多;
架構(gòu): 不管是集中部署還是分布式部署,架構(gòu)的本地承載量、模塊化設(shè)計都要考慮應(yīng)對全球玩家涌入的問題。
網(wǎng)絡(luò)
我國實際出口的公網(wǎng)主要有電信163、聯(lián)通、移動以及電信CN2四大類,總帶寬方面電信是大的,聯(lián)通次之,移動最小。就實際利用率來說,電信163出口常年擁堵,可用率不足80%,聯(lián)通移動情況稍好,但是由于本身出口量較小,應(yīng)對網(wǎng)絡(luò)波動的能力不容樂觀。
CN2是電信專門為企業(yè)級客戶開通的國際出口,這也是中國當(dāng)前最優(yōu)的國際出口網(wǎng)絡(luò),但即便是CN2也并非完全穩(wěn)定,根據(jù)監(jiān)控記錄顯示,CN2鏈路每月仍然會有幾次較長時間的抖動,如果正好趕上游戲大推依然會有風(fēng)險。
最保險的方案就是使用專線,專線具有SLA和可用性保證,并具有高穩(wěn)定、低延遲、零丟包等特性,但是成本相對公網(wǎng)會高上許多。
UCloud在海外采用的同樣是自有BGP技術(shù),并且基于BGP+海外專線,保證最優(yōu)的訪問質(zhì)量,其基于路由的定位準(zhǔn)確度遠高于CDN的智能DNS。
此外,在運維和產(chǎn)品保障方面,我們將國內(nèi)的模式復(fù)制到了海外,并且根據(jù)不同的機房情況和地區(qū)特性進行了優(yōu)化,將海外的機房架構(gòu)和云產(chǎn)品架構(gòu)在全局上和國內(nèi)同步,以保證客戶體驗的一致性和服務(wù)的標(biāo)準(zhǔn)性。
代碼
此前,我們接觸過一個用戶,他們希望獲得一個有保障的網(wǎng)絡(luò)優(yōu)化加速方案來實現(xiàn)全球服,并且要求整個加速過程對業(yè)務(wù)無感知無侵入。簡而言之,就是在不更改任何的代碼的前提下,實現(xiàn)網(wǎng)絡(luò)加速。為此我們進行了系列技術(shù)調(diào)研和方案設(shè)計,PathX方案由此誕生。
前期的設(shè)計實現(xiàn)上,我們針對三四層網(wǎng)絡(luò)轉(zhuǎn)發(fā)以及基層代理這兩種方式進行了深入調(diào)研,調(diào)研過程中發(fā)現(xiàn),采用基層代理的方式會中斷TCP連接,同時,在使用的過程中還會出現(xiàn)業(yè)務(wù)無法轉(zhuǎn)發(fā)的情況,也就是所謂的“假死”。通過對比,最終我們選擇了三四層網(wǎng)絡(luò)轉(zhuǎn)發(fā)的方案,并且做一個比較廣的協(xié)議支持架構(gòu)。
后續(xù),我們也針對CR的UDP對戰(zhàn)需求進行了迭代,在原有的基礎(chǔ)上融合DPDK和高包量技術(shù),設(shè)計了UDP+幀同步高包量業(yè)務(wù)的承載轉(zhuǎn)發(fā)模式。隨著全球服時代的到來,我們將這些特性迭代進PathX產(chǎn)品,如今已經(jīng)是2.0的版本了。
架構(gòu)
全球服情況下,海量用戶數(shù)據(jù)需要集中的接入、處理和分析,而在大數(shù)據(jù)領(lǐng)域,Hadoop是當(dāng)仁不讓、最經(jīng)濟的大數(shù)據(jù)解決方案,但是Hadoop的使用門檻非常高,需要至少7-8人的維護團隊。而相對使用簡單的的普通數(shù)據(jù)庫如MySQL集群等,在性能和性價比上都不是非常理想。
為了解決用戶的高性能大數(shù)據(jù)分析需求,我們研發(fā)了數(shù)據(jù)倉庫解決方案UDW,UDW基于PostgreSQL研發(fā),具有PB級別的高性能數(shù)據(jù)存儲能力,此外,我們根據(jù)用戶的不同需求區(qū)分了存儲密集型和計算密集型,可分別用于數(shù)據(jù)量大或者對計算實時性要求較高的場景。
下圖是一個比較標(biāo)準(zhǔn)的全球服游戲架構(gòu)圖。首先,用戶在美國部署核心業(yè)務(wù)服務(wù)器,包括數(shù)據(jù)庫、玩家節(jié)點、大數(shù)據(jù)、登錄服等。然后通過全球加速方案,為玩家提供一個質(zhì)量穩(wěn)定的游戲服務(wù)。有的用戶如FPS類的游戲廠商,會在海外額外部署一個小的微型節(jié)點,用來保證對玩家的最小延遲和穩(wěn)定性。
架構(gòu)設(shè)計中,還有一個比較重要的點是關(guān)鍵幀的使用限制,關(guān)鍵幀和游戲預(yù)判會嚴(yán)重影響用戶對游戲的要求。比如用戶要求延遲控制在60毫秒以內(nèi),那么對于60毫秒以上延遲的地區(qū),游戲是無法覆蓋的,超過60毫秒的玩家就會直接掉線。
在部署全球服游戲的時候,除了要考慮網(wǎng)絡(luò)延遲對玩家的影響,玩家集中涌入對對戰(zhàn)的影響等問題之外,還要測算出符合游戲要求的核心節(jié)點、不同區(qū)域玩家的最佳訪問路徑、哪個區(qū)的玩家可以連接到哪里的服務(wù)器等等,這是問題都需要在游戲設(shè)計前期就規(guī)劃好。
全球服游戲設(shè)計的一些想法和建議
云商、研發(fā)、運維這三者雖然分工不同,但都是項目組不可或缺的重要組成。以我過往的經(jīng)驗,運維和研發(fā)之間在項目前期的交流通常都非常少,這樣就會導(dǎo)致出現(xiàn)故障時,大家經(jīng)常相互“甩鍋”,運維工程師覺得是代碼的問題,而開發(fā)則認(rèn)為是運維做得不夠好,這對于游戲項目來說是百害而無一利的。
從項目的角度,建議云商、研發(fā)、運維這三者能夠做到互相深入合作,云商能夠針對游戲用戶的訴求,提供最合適的產(chǎn)品和解決方案;運維是保證整個游戲長遠穩(wěn)定運行的核心人員,業(yè)務(wù)如何做到高可用、如何能夠在后期便捷的進行維護,這些都是運維非常擅長的領(lǐng)域;而研發(fā)是整個項目能夠?qū)崿F(xiàn)的基石,代碼的實現(xiàn)思路會很大程度上固化一個游戲的運維方式。
在項目建設(shè)前期,三方都不應(yīng)局限于自己的領(lǐng)域,互相協(xié)作開放。在項目允許的情況下,研發(fā)設(shè)計框架時可以聯(lián)合運維、公有云的架構(gòu)人員一同評估游戲的實現(xiàn)方式,盡量在前期考慮到系統(tǒng)的可用性、穩(wěn)定性以及抗壓性等問題,這樣才能從技術(shù)角度避免很多不必要的彎路或者錯漏,比如上篇文章所說的中心服單點問題,實現(xiàn)業(yè)務(wù)的長遠發(fā)展。
想要獲取更多技術(shù)和活動資訊,可掃關(guān)注“UCloud技術(shù)公告牌”微信公眾號;或搜索微信ID:ucloud_tech進行關(guān)注。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章標(biāo)題:游戲開發(fā)經(jīng)驗談(二):對戰(zhàn)類全球服游戲的設(shè)計與實現(xiàn)-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.rwnh.cn/article32/dscgsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、網(wǎng)站維護、品牌網(wǎng)站制作、軟件開發(fā)、網(wǎng)站設(shè)計公司、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容