最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

為什么說星際公民的持續(xù)性推流和服務(wù)器網(wǎng)格化是必須的技術(shù)?

2023-02-21 00:36 作者:卡吉雅之影  | 我要投稿

要理解持續(xù)性推流和服務(wù)器網(wǎng)格化的重要性,得先了解下現(xiàn)在的游戲服務(wù)器架構(gòu)為什么不滿足需求,依據(jù)我個(gè)人來自某某精英這類傳統(tǒng)的單局FPS游戲的開發(fā)經(jīng)驗(yàn)(3.18之前的的星際公民也是這樣,3.18之前的星際公民本質(zhì)上是一個(gè)單局類的游戲而不是MMO類型的游戲,這個(gè)很重要,后面會(huì)說),DS/DGSLobby Server一定是分離的。


所謂DS或DGS指Dedicated Server/Dedicated Game Server,我們一般稱之為戰(zhàn)斗服,負(fù)責(zé)游戲Gameplay邏輯的處理與同步。Lobby Server一般稱為大廳服,用于保存裝備等級(jí)成就等賬號(hào)信息數(shù)據(jù),處理商城交易、好友等業(yè)務(wù)邏輯,同時(shí)負(fù)責(zé)拉起DS。當(dāng)然Lobby Server和DS可以在同一個(gè)物理服務(wù)器上(一般不會(huì)這么做,主要涉及到數(shù)據(jù)安全和延遲的問題)但是一定是不同進(jìn)程。登陸大廳的時(shí)候玩家的Client只連接到Lobby Server,啟動(dòng)匹配后由Lobby Server找到可以主持一局游戲的DS并匹配其他玩家,然后拉起DS并下發(fā)DS的地址到Client,然后Client再連接DS服務(wù)器。

?

Lobby Server里的玩家的裝備等數(shù)據(jù)由Lobby Server下發(fā)到DS,然后再通過DS同步到Client。UE或者CryEngine(StarEngine的原型)這類引擎下Client和DS是同構(gòu)的也即同一份代碼運(yùn)行在不同的地方,通過RPC/值復(fù)制(FPS類游戲一般不用鎖幀同步)來做Client和DS的通信,通過引擎原生的Actor Channel來傳遞DS到客戶端的數(shù)據(jù)。所以多數(shù)游戲只有Lobby Server是由真正的后臺(tái)開發(fā)人員負(fù)責(zé)的,DS和Client都是客戶端開發(fā)人員負(fù)責(zé)。此時(shí)DS內(nèi)存中的數(shù)據(jù)為Actor的信息(游戲中的實(shí)體,比如一個(gè)水瓶,也是Client和DS通訊的基本單元。又比如AI,完全由DS驅(qū)動(dòng),然后從DS同步到客戶端,所以星際公民里DS卡的時(shí)候AI就會(huì)卡),Gameplay邏輯數(shù)據(jù)等信息(傷害、Buff、任務(wù)的進(jìn)度之類)等。

?

這種情況下,Lobby Server的數(shù)據(jù)保存在持續(xù)性的數(shù)據(jù)庫內(nèi)(一般就是sql數(shù)據(jù)庫了),DS內(nèi)的數(shù)據(jù)只存在于DS的內(nèi)存中而不會(huì)保存到數(shù)據(jù)庫(這就是問題所在),所以如果DS宕機(jī)或者單局游戲結(jié)束,DS里的數(shù)據(jù)就全部丟失。當(dāng)然對(duì)局結(jié)束或者宕機(jī)后,部分?jǐn)?shù)據(jù)會(huì)由DS上報(bào)到Lobby Server做永久性保存(比如任務(wù)進(jìn)度之類,F(xiàn)PS游戲都有局內(nèi)擊殺數(shù)量達(dá)到多少個(gè)這樣的任務(wù),這個(gè)就是DS處理完后再發(fā)回Lobby Server的),部分情況下局內(nèi)也會(huì)由Client直接發(fā)送協(xié)議數(shù)據(jù)到Lobby Server(某些單局類游戲支持從局內(nèi)收集金幣帶出到大廳倉庫)??梢詤⒖急局乖趩尉钟螒騼?nèi)放置一個(gè)建筑,這局游戲結(jié)束后這個(gè)建筑的位置顯然不會(huì)保存下來,下一次對(duì)局開始后這臺(tái)DS重新拉起Game Mode等Gameplay邏輯。

?

那如果是這種情況,實(shí)際上就面臨兩個(gè)問題,一是建筑類玩法顯然是沒有辦法支撐的,二是一個(gè)DS進(jìn)程主持一局游戲,玩家的上限必然有限制(受帶寬、服務(wù)器性能的影響,比如星際公民之前玩家上限只有50現(xiàn)在會(huì)多一些,UE DS的理論上限大概是1000個(gè)客戶端,但是實(shí)際上也做不到,CryEngine還要更差一些)。所以現(xiàn)有的星際公民實(shí)際上是一個(gè)單局類型的游戲,你進(jìn)入游戲宇宙只是進(jìn)入了一局幾十人的游戲,只是這一局游戲會(huì)無限長直到這個(gè)服務(wù)器的所有玩家斷開連接或者服務(wù)器宕機(jī),這個(gè)DS就會(huì)被回收,數(shù)據(jù)被清空,直到下一次由Lobby Server拉起新一局游戲。

?

那肯定就有人質(zhì)疑說很早以前就有游戲又能千人同屏,又能在游戲服務(wù)器內(nèi)持久性的保存建筑,比如EVE。這就是游戲類型帶來的限制,EVE這類MMO游戲,Client和服務(wù)器是異構(gòu)的,也就是服務(wù)器代碼和Client代碼不同,這類游戲服務(wù)器可能既負(fù)責(zé)玩家數(shù)據(jù)也負(fù)責(zé)Gameplay邏輯。并且同步上使用幀同步,所謂幀同步就是有服務(wù)器讓所有客戶端保持同步在客戶端和服務(wù)端分別進(jìn)行相同的輸入,并保證有相同的輸出,并且強(qiáng)制鎖定等待服務(wù)器和客戶端的同步,這就是為什么EVE存在時(shí)間膨脹的說法,同屏游戲人數(shù)越多,需要同步和計(jì)算的數(shù)據(jù)就越多,服務(wù)器幀率就越低,進(jìn)而導(dǎo)致客戶端幀率被降低(因?yàn)榉?wù)器和客戶端之間的幀同步是鎖定的)。但是星際公民是一款FPS游戲,需要同步更加精細(xì)與更大量的數(shù)據(jù),比如子彈的速度,子彈擊中的部位等等(也是鑒于此,F(xiàn)PS類游戲大部分?jǐn)?shù)據(jù)是由客戶端計(jì)算并上報(bào)給DS再由DS進(jìn)行校驗(yàn),這也是為什么FPS等類型游戲外掛會(huì)更多),而且即不可能接受服務(wù)器幀率和客戶端幀率一致的情況(星際公民r_displayinfo 4可以看到服務(wù)器幀率一般只有20多幀,這還只是一個(gè)服務(wù)器幾十人的情況)也不可能接受實(shí)時(shí)同步Lobby Server數(shù)據(jù)到DS的網(wǎng)絡(luò)延遲,所以必須采用前面所介紹的Lobby Server分離的值同步的DS-Client的服務(wù)器架構(gòu),當(dāng)然這個(gè)也存在技術(shù)債的問題,早期星際公民直接使用CryEngine開始開發(fā)也必然是這種架構(gòu)。

?

而星際公民游戲的需求導(dǎo)致必須在傳統(tǒng)FPS游戲CS架構(gòu)的情況下解決一下兩個(gè)問題,一、持久化DS內(nèi)存中數(shù)據(jù),它包括Actor的位置、狀態(tài)等一系列Gameplay數(shù)據(jù),這是建造、探索等玩法所必需的,玩家在局內(nèi)對(duì)游戲宇宙造成的影響或改變必須是永久性的。二、玩家的數(shù)量不局限于單局幾十個(gè)人,而是像一個(gè)MMO一樣支持上千人共同游戲。


PES解決第一個(gè)問題,持續(xù)性推流將DS的中的需要持久化的數(shù)據(jù)實(shí)時(shí)保存下來,用于支撐一個(gè)持久性的宇宙。然后在此基礎(chǔ)上可以解決第二個(gè)問題,一個(gè)DS的容量有上限,所以最直觀的方式就是分布式DS,由原本的一局游戲由一個(gè)DS服務(wù)幾十個(gè)玩家改成同一局游戲由多個(gè)DS同時(shí)服務(wù)幾百上千名玩家。


但是這就導(dǎo)致了另一個(gè)問題,以前是一個(gè)DS只需要同步幾十名玩家的數(shù)據(jù),現(xiàn)在不僅僅DS到玩家需要同步,DS之間也需要同步,如果每一個(gè)DS同時(shí)向所有其他DS同步數(shù)據(jù)就會(huì)導(dǎo)致整個(gè)系統(tǒng)的復(fù)雜度變?yōu)閚^2,即每增加一個(gè)服務(wù)器節(jié)點(diǎn)都需要向所有其他服務(wù)器同步數(shù)據(jù),這在服務(wù)器性能上和帶寬上都是不可接受的,所以這就需要服務(wù)器網(wǎng)格化,把負(fù)責(zé)數(shù)據(jù)同步的部分剝離成一個(gè)單獨(dú)的復(fù)制層,所有的客戶端和所有的DS都連接到同一個(gè)復(fù)制層上,復(fù)制層是一個(gè)專有的服務(wù)器,專門用于數(shù)據(jù)的復(fù)制(Replication,游戲開發(fā)中的復(fù)制一般用這個(gè)詞),DS不再負(fù)責(zé)數(shù)據(jù)同步,而只負(fù)責(zé)處理游戲邏輯,客戶端和DS的數(shù)據(jù)先同步給復(fù)制層,復(fù)制層再同步給其他DS和客戶端,同時(shí)復(fù)制層也負(fù)責(zé)PES將數(shù)據(jù)進(jìn)行持久化的保存。所以這兩項(xiàng)核心技術(shù)一定是必須的,否則星際公民的很多游戲玩法和游戲愿景都難以實(shí)現(xiàn)。


當(dāng)然分布式DS的方案不止星際公民在做,很多開放世界類游戲也需要這類技術(shù),比如TX的G6就有做一套UE的分布式DS方案,但是那個(gè)就只是使用了Ghost Actor等方式來實(shí)現(xiàn)分布式DS,都不如PES + Server Meshing這么徹底。


為什么說星際公民的持續(xù)性推流和服務(wù)器網(wǎng)格化是必須的技術(shù)?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
达拉特旗| 济源市| 济南市| 沂南县| 牙克石市| 安福县| 海宁市| 乌兰浩特市| 曲水县| 仙居县| 盱眙县| 武义县| 花莲市| 湖南省| 会同县| 进贤县| 临城县| 舟曲县| 瑞丽市| 焦作市| 香港| 崇文区| 镇沅| 富民县| 宁国市| 聂拉木县| 武汉市| 松江区| 什邡市| 乌海市| 始兴县| 囊谦县| 长岛县| 棋牌| 镇赉县| 卫辉市| 错那县| 盐山县| 孝感市| 平和县| 文登市|