【轉(zhuǎn)】手游頁游和端游的服務(wù)端的架構(gòu)與區(qū)別

GameRes游資網(wǎng)發(fā)布, 文 /韋易笑

手游頁游和端游的服務(wù)端本質(zhì)上沒區(qū)別,區(qū)別的是游戲類型。

類型1:卡牌间唉、跑酷等弱交互服務(wù)端

卡牌跑酷類因為交互弱,玩家和玩家之間不需要實時面對面PK利术,打一下對方的離線數(shù)據(jù)呈野,計算下排行榜,買賣下道具即可印叁,所以實現(xiàn)往往使用簡單的 HTTP服務(wù)器:

登錄時可以使用非對稱加密(RSA, DH)被冒,服務(wù)器根據(jù)客戶端uid,當(dāng)前時間戳還有服務(wù)端私鑰轮蜕,計算哈希得到的加密 key 并發(fā)送給客戶端昨悼。之后雙方都用 HTTP通信,并用那個key進(jìn)行RC4加密跃洛÷蚀ィ客戶端收到key和時間戳后保存在內(nèi)存,用于之后通信汇竭,服務(wù)端不需要保存 key葱蝗,因為每次都可以根據(jù)客戶端傳上來的 uid 和 時間戳 以及服務(wù)端自己的私鑰計算得到。用模仿 TLS的行為细燎,來保證多次 HTTP請求間的客戶端身份垒玲,并通過時間戳保證同一人兩次登錄密鑰不同。

每局開始時找颓,訪問一下,請求一下關(guān)卡數(shù)據(jù)叮贩,玩完了又提交一下击狮,驗算一下是否合法,獲得什么獎勵益老,數(shù)據(jù)庫用單臺 MySQL或者 MongoDB即可彪蓬,后端的 Redis做緩存(可選)。如果要實現(xiàn)通知捺萌,那么讓客戶端定時15秒輪詢一下服務(wù)器档冬,如果有消息就取下來,如果沒消息可以逐步放長輪詢時間,比如30秒酷誓;如果有消息披坏,就縮短輪詢時間到10秒,5秒盐数,即便兩人聊天棒拂,延遲也能自適應(yīng)。

此類服務(wù)器用來實現(xiàn)一款三國類策略或者卡牌及酷跑的游戲已經(jīng)綽綽有余玫氢,這類游戲因為邏輯簡單帚屉,玩家之間交互不強(qiáng),使用 HTTP來開發(fā)的話漾峡,開發(fā)速度快攻旦,調(diào)試只需要一個瀏覽器就可以把邏輯調(diào)試清楚了。

類型2:第一代游戲服務(wù)器 1978

1978年生逸,英國著名的財經(jīng)學(xué)校University of Essex的學(xué)生 Roy Trubshaw編寫了世界上第一個MUD程序《MUD1》牢屋,在University of Essex于1980年接入 ARPANET之后加入了不少外部的玩家,甚至包括國外的玩家牺陶∥袄《MUD1》程序的源代碼在 ARPANET共享之后出現(xiàn)了眾多的改編版本,至此MUD才在全世界廣泛流行起來掰伸。不斷完善的 MUD1的基礎(chǔ)上產(chǎn)生了開源的 MudOS(1991)皱炉,成為眾多網(wǎng)游的鼻祖:

MUDOS采用 C語言開發(fā),因為玩家和玩家之間有比較強(qiáng)的交互(聊天狮鸭,交易合搅,PK),MUDOS使用單線程無阻塞套接字來服務(wù)所有玩家歧蕉,所有玩家的請求都發(fā)到同一個線程去處理灾部,主線程每隔1秒鐘更新一次所有對象(網(wǎng)絡(luò)收發(fā),更新對象狀態(tài)機(jī)惯退,處理超時赌髓,刷新地圖,刷新NPC)催跪。

游戲世界采用房間的形式組織起來锁蠕,每個房間有東南西北四個方向可以移動到下一個房間,由于歐美最早的網(wǎng)游都是地牢迷宮形式的懊蒸,因此場景的基本單位被成為 “房間”荣倾。MUDOS使用一門稱為LPC的腳本語言來描述整個世界(包括房間拓?fù)洌渲闷锿瑁琋PC舌仍,以及各種劇情)妒貌。游戲里面的高級玩家(巫師),可以不斷的通過修改腳本來為游戲添加房間以及增加劇情铸豁。早年 MUD1上線時只有17個房間灌曙,Roy Trubshaw畢業(yè)以后交給他的師弟 Richard Battle,在 Richard Battle手上推姻,不斷的添加各種玩法到一百多個房間平匈,終于讓 MUD發(fā)揚(yáng)光大。

用戶使用 Telnet之類的客戶端用 Tcp協(xié)議連接到 MUDOS上藏古,使用純文字進(jìn)行游戲增炭,每條指令用回車進(jìn)行分割。比如 1995年國內(nèi)第一款 MUD游戲《俠客行》拧晕,你敲入:"go east"隙姿,游戲就會提示你:“后花園 - 這里是歸云莊的后花園,種滿了花草厂捞,幾個莊丁正在澆花输玷。此地乃是含羞草生長之地。這里唯一的出口是 north靡馁。這里有:花待 阿牧(A mu)欲鹏,還有二位莊丁(Zhuang Ding)”臭墨,然后你繼續(xù)用文字操作赔嚎,查看阿牧的信息:“l(fā)ook a mu”,系統(tǒng)提示:“花待 阿牧(A mu)他是陸乘風(fēng)的弟子胧弛,受命在此看管含羞草尤误。他看起來三十多歲,生得眉清目秀结缚,端正大方损晤,一表人才。他的武藝看上去【不是很高】红竭,出手似乎【極輕】”尤勋。然后你可以選擇擊敗他獲得含羞草,但是你吃了含羞草卻又可能會中毒死亡茵宪。在早期網(wǎng)上資源貧乏的時候最冰,這樣的游戲有很強(qiáng)的代入感。

用戶數(shù)據(jù)保存在文件中眉厨,每個用戶登錄時,從文本文件里把用戶的數(shù)據(jù)全部加載進(jìn)來兽狭,操作全部在內(nèi)存里面進(jìn)行憾股,無需馬上刷回磁盤鹿蜀。用戶退出了,或者每隔5分鐘檢查到數(shù)據(jù)改動了服球,都會保存會磁盤茴恰。這樣的系統(tǒng)在當(dāng)時每臺服務(wù)器承載個4000人同時游戲,不是特別大的問題斩熊。從1991年的 MUDOS發(fā)布后往枣,全球各地都在為他改進(jìn),擴(kuò)充粉渠,退出新版本分冈,隨著 Windows圖形機(jī)能的增強(qiáng)。1997游戲《UO》在 MUDOS的基礎(chǔ)上為角色增加的x,y坐標(biāo)霸株,為每個房間增加了地圖雕沉,并且為每個角色增加了動畫,形成了第一代的圖形網(wǎng)絡(luò)游戲去件。

因為游戲內(nèi)容基本可以通過 LPC腳本進(jìn)行定制坡椒,所以MUDOS也成為名副其實的第一款服務(wù)端引擎,引擎一次性開發(fā)出來尤溜,然后制作不同游戲內(nèi)容倔叼。后續(xù)國內(nèi)的《萬王之王》等游戲,很多都是跟《UO》一樣宫莱,直接在 MUDOS上進(jìn)行二次開發(fā)丈攒,加入房間的地圖還有角色的坐標(biāo)等要素,該架構(gòu)一直為國內(nèi)的第一代 MMORPG提供了穩(wěn)固的支持梢睛,直到 2003年肥印,還有游戲基于 MUDOS開發(fā)。

雖然后面圖形化增加了很多東西绝葡,但是這些MMORPG后端的本質(zhì)還是 MUDOS深碱。隨著游戲內(nèi)容的越來越復(fù)雜,架構(gòu)變得越來越吃不消了藏畅,各種負(fù)載問題慢慢浮上水面敷硅,于是有了我們的第二代游戲服務(wù)器。

類型3:第二代游戲服務(wù)器 2003

2000年后愉阎,網(wǎng)游已經(jīng)脫離最初的文字MUD绞蹦,進(jìn)入全面圖形化年代。最先承受不住的其實是很多小文件榜旦,用戶上下線幽七,頻繁的讀取寫入用戶數(shù)據(jù),導(dǎo)致負(fù)載越來越大溅呢。隨著在線人數(shù)的增加和游戲數(shù)據(jù)的增加澡屡,服務(wù)器變得不抗重負(fù)猿挚。同時早期 EXT磁盤分區(qū)比較脆弱,稍微停電驶鹉,容易發(fā)生大面積數(shù)據(jù)丟失绩蜻。因此第一步就是拆分文件存儲到數(shù)據(jù)庫去。

此時游戲服務(wù)端已經(jīng)脫離陳舊的 MUDOS體系室埋,各個公司在參考 MUDOS結(jié)構(gòu)的情況下办绝,開始自己用 C在重新開發(fā)自己的游戲服務(wù)端。并且腳本也拋棄了 LPC姚淆,采用擴(kuò)展性更好的 Python或者 Lua來代替孕蝉。由于主邏輯使用單線程模型,隨著游戲內(nèi)容的增加肉盹,傳統(tǒng)單服務(wù)器的結(jié)構(gòu)進(jìn)一步成為瓶頸昔驱。于是有人開始拆分游戲世界,變?yōu)橄旅娴哪P停?/p>

游戲服務(wù)器壓力拆分后得意緩解上忍,但是兩臺游戲服務(wù)器同時訪問數(shù)據(jù)庫骤肛,大量重復(fù)訪問宇葱,大量數(shù)據(jù)交換祝旷,使得數(shù)據(jù)庫成為下一個瓶頸溢十。于是形成了數(shù)據(jù)庫前端代理(DB Proxy)尺锚,游戲服務(wù)器不直接訪問數(shù)據(jù)庫而是訪問代理稍味,再有代理訪問數(shù)據(jù)庫舵变,同時提供內(nèi)存級別的cache苟鸯。早年 MySQL4之前沒有提供存儲過程捆毫,這個前端代理一般和 MySQL跑在同一臺上面睛,它轉(zhuǎn)化游戲服務(wù)器發(fā)過來的高級數(shù)據(jù)操作指令絮蒿,拆分成具體的數(shù)據(jù)庫操作,一定程度上代替了存儲過程:

但是這樣的結(jié)構(gòu)并沒有持續(xù)太長時間叁鉴,因為玩家切換場景經(jīng)常要切換連接土涝,中間的狀態(tài)容易錯亂。而且游戲服務(wù)器多了以后幌墓,相互之間數(shù)據(jù)交互又會變得比較麻煩但壮,于是人們拆分了網(wǎng)絡(luò)功能,獨立出一個網(wǎng)關(guān)服務(wù) Gate(有的地方叫 Session常侣,有的地方叫 LinkSvr之類的蜡饵,名字不同而已):

把網(wǎng)絡(luò)功能單獨提取出來,讓用戶統(tǒng)一去連接一個網(wǎng)關(guān)服務(wù)器胳施,再有網(wǎng)關(guān)服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)到后端游戲服務(wù)器溯祸。而游戲服務(wù)器之間數(shù)據(jù)交換也統(tǒng)一連接到網(wǎng)管進(jìn)行交換。這樣類型的服務(wù)器基本能穩(wěn)定的為玩家提供游戲服務(wù),一臺網(wǎng)關(guān)服務(wù)1-2萬人焦辅,后面的游戲服務(wù)器每臺服務(wù)5k-1w鸟召,依游戲類型和復(fù)雜度不同而已,圖中隱藏了很多不重要的服務(wù)器氨鹏,如登錄和管理。這是目前應(yīng)用最廣的一個模型压状,到今天任然很多新項目會才用這樣的結(jié)構(gòu)來搭建仆抵。

人都是有慣性的,按照先前的經(jīng)驗种冬,似乎把 MUDOS拆分的越開性能越好镣丑。于是大家繼續(xù)想,網(wǎng)關(guān)可以拆分呀娱两,基礎(chǔ)服務(wù)如聊天交易莺匠,可以拆分呀,還可以提供web接口十兢,數(shù)據(jù)庫可以拆分呀趣竣,于是有了下面的模型:

這樣的模型好用么?確實有成功游戲使用類似這樣的架構(gòu)旱物,并且發(fā)揮了它的性能優(yōu)勢遥缕,比如一些大型 MMORPG。但是有兩個挑戰(zhàn):每增加一級服務(wù)器宵呛,狀態(tài)機(jī)復(fù)雜度可能會翻倍单匣,導(dǎo)致研發(fā)和找bug的成本上升;并且對開發(fā)組挑戰(zhàn)比較大宝穗,一旦項目時間吃緊户秤,開發(fā)人員經(jīng)驗不足,很容易弄掛逮矛。

比如我見過某上海一線游戲公司的一個 RPG上來就要上這樣的架構(gòu)鸡号,我看了下他們團(tuán)隊成員的經(jīng)驗,問了下他們的上線日期橱鹏,勸他們用前面稍微簡單一點的模型膜蠢。人家自信得很,認(rèn)為有成功項目是這么做的莉兰,他們也要這么做挑围,自己很想實現(xiàn)一套。于是他們義無反顧的開始編碼糖荒,項目做了一年多杉辙,然后,就沒有然后了捶朵。

現(xiàn)今在游戲成功率不高的情況下蜘矢,一開始上一套比較復(fù)雜的架構(gòu)需要考慮投資回報率狂男,比如你的游戲上線半年內(nèi) PCU會去到多少?如果一個 APRG游戲品腹,每組服務(wù)器5千人都到不了的話岖食,那么選擇一套更為貼近實際情況的結(jié)構(gòu)更為經(jīng)濟(jì)。即使后面你的項目真的超過5千人朝著1萬人目標(biāo)奔的話舞吭,相信那個時候你的項目已經(jīng)掙大錢了 泡垃,你數(shù)著錢加著班去逐步迭代,一次次拆分它羡鸥,相信心里也是樂開花的蔑穴。

上面這些類型基本都是從拆分 MUDOS開始,將 MUDOS中的各個部件從單機(jī)一步步拆成分布式惧浴。雖然今天任然很多新項目在用上面某一種類似的結(jié)構(gòu)存和,或者自己又做了其他熱點模塊的拆分。因為他們本質(zhì)上都是對 MUDOS的分解衷旅,故將他們歸納為第二代游戲服務(wù)器捐腿。

類型4:第三代游戲服務(wù)器 2007

從魔獸世界開始無縫世界地圖已經(jīng)深入人心,比較以往游戲玩家走個幾步還需要切換場景柿顶,每次切換就要等待 LOADING個幾十秒是一件十分破壞游戲體驗的事情叙量。于是對于 2005年以后的大型 MMORPG來說,無縫地圖已成為一個標(biāo)準(zhǔn)配置九串。比較以往按照地圖來切割游戲而言绞佩,無縫世界并不存在一塊地圖上面的人有且只由一臺服務(wù)器處理了:

每臺 Node服務(wù)器用來管理一塊地圖區(qū)域,由 NodeMaster(NM)來為他們提供總體管理猪钮。更高層次的 World則提供大陸級別的管理服務(wù)品山。這里省略若干細(xì)節(jié)服務(wù)器,比如傳統(tǒng)數(shù)據(jù)庫前端烤低,登錄服務(wù)器肘交,日志和監(jiān)控等,統(tǒng)統(tǒng)用 ADMIN概括扑馁。在這樣的結(jié)構(gòu)下涯呻,玩家從一塊區(qū)域走向另外一塊區(qū)域需要簡單處理一下:

玩家1完全由節(jié)點A控制,玩家3完全由節(jié)點B控制腻要。而處在兩個節(jié)點邊緣的2號玩家复罐,則同時由A和B提供服務(wù)。玩家2從A移動到B的過程中雄家,會同時向A請求左邊的情況效诅,并向B請求右邊的情況。但是此時玩家2還是屬于A管理。直到玩家2徹底離開AB邊界很遠(yuǎn)乱投,才徹底交由B管理咽笼。按照這樣的邏輯將世界地圖分割為一塊一塊的區(qū)域,交由不同的 Node去管理戚炫。

對于一個 Node所負(fù)責(zé)的區(qū)域剑刑,地理上沒必要連接在一起,比如大陸的四周邊緣部分和高山部分的區(qū)塊人比較少双肤,可以統(tǒng)一交給一個Node去管理叛甫,而這些區(qū)塊在地理上并沒有聯(lián)系在一起的必要性。一個 Node到底管理哪些區(qū)塊杨伙,可以根據(jù)游戲?qū)崟r運行的負(fù)載情況,定時維護(hù)的時候進(jìn)行更改 NodeMaster 上面的配置萌腿。

于是碰到第一個問題是很多 Node服務(wù)器需要和玩家進(jìn)行通信限匣,需要問管理服務(wù)器特定UID為多少的玩家到底在哪臺 Gate上,以前按場景切割的服務(wù)器這個問題不大毁菱,問了一次以后就可以緩存起來了米死,但是現(xiàn)在服務(wù)器種類增加不少,玩家又會飄來飄去贮庞,按UID查找玩家比較麻煩峦筒;另外一方面 GATE需要動態(tài)根據(jù)坐標(biāo)計算和哪些 Node通信,導(dǎo)致邏輯越來越厚窗慎,于是把:“用戶對象”從負(fù)責(zé)連接管理的 GATE中切割出來勢在必行于是有了下面的模型:

網(wǎng)關(guān)服務(wù)器再次退回到精簡的網(wǎng)絡(luò)轉(zhuǎn)發(fā)功能物喷,而用戶邏輯則由按照 UID劃分的 OBJ服務(wù)器來承擔(dān),GATE是按照網(wǎng)絡(luò)接入時的負(fù)載來分布遮斥,而 OBJ則是按照資源的編號(UID)來分布峦失,這樣和一個用戶通信直接根據(jù) UID計算出 OBJ服務(wù)器編號發(fā)送數(shù)據(jù)即可。而新獨立出來的 OBJ則提供了更多高層次的服務(wù):

對象移動:管理具體玩家在不同的 Node所管轄的區(qū)域之間的移動术吗,并同需要的 Node進(jìn)行溝通尉辑。

數(shù)據(jù)廣播:Node可以給每個用戶設(shè)置若干 TAG,然后通知 Object Master 按照TAG廣播较屿。

對象消息:通用消息推送隧魄,給某個用戶發(fā)送數(shù)據(jù),直接告訴 OBJ隘蝎,不需要直接和 GATE打交道购啄。

好友聊天:角色之間聊天直接走 OBJ/OBJ MASTER。

整個服務(wù)器主體分為三層以后嘱么,NODE專注場景闸溃,OBJ專注玩家對象,GATE專注網(wǎng)絡(luò)。這樣的模型在無縫場景服務(wù)器中得到廣泛的應(yīng)用辉川。但是隨著時間的推移表蝙,負(fù)載問題也越來越明顯,做個活動乓旗,遠(yuǎn)來不活躍的區(qū)域變得十分活躍府蛇,靠每周維護(hù)來調(diào)整還是比較笨重的,于是有了動態(tài)負(fù)載均衡屿愚。

動態(tài)負(fù)載均衡有兩種方法汇跨,第一種是按照負(fù)載,由 Node Master 定時動態(tài)移動修改一下各個 Node的邊界妆距,而不同的玩家對象按照先前的方法從一臺 Node上遷移到另外一臺 Node上:

圖11 動態(tài)負(fù)載均衡

這樣 Node Master定時查找地圖上的熱點區(qū)域穷遂,計算新的場景切割方式,然后告訴其他服務(wù)器開始調(diào)整娱据,具體處理方式還是和上面對象跨越邊界移動的方法一樣蚪黑。

但是上面這種方式實現(xiàn)相對復(fù)雜一些,于是人們設(shè)計出了更為簡單直接的一種新方法:

圖12 基于網(wǎng)格的動態(tài)負(fù)載均衡

還是將地圖按照標(biāo)準(zhǔn)尺寸均勻切割成靜態(tài)的網(wǎng)格中剩,每個格子由一個具體的Node負(fù)責(zé)忌穿,但是根據(jù)負(fù)載情況,能夠?qū)崟r的遷移到其他 Node上结啼。在遷移分為三個階段:準(zhǔn)備掠剑,切換,完成郊愧。三個狀態(tài)由Node Master負(fù)責(zé)維護(hù)朴译。準(zhǔn)備階段新的 Node開始同步老 Node上面該網(wǎng)格的數(shù)據(jù),完成后告訴NM属铁;NM確認(rèn)OK后同時通知新舊 Node完成切換动分。完成切換后,如果 Obj服務(wù)器還在和老的 Node進(jìn)行通信红选,老的 Node將會對它進(jìn)行糾正澜公,得到糾正的 OBJ將修正自己的狀態(tài),和新的 Node進(jìn)行通信喇肋。

很多無縫動態(tài)負(fù)載均衡的服務(wù)端宣稱自己支持無限的人數(shù)坟乾,但不意味著 MMORPG游戲的人數(shù)上限真的可以無限擴(kuò)充,因為這樣的體系會受制于網(wǎng)絡(luò)帶寬和客戶端性能蝶防。帶寬決定了同一個區(qū)域最大廣播上限甚侣,而客戶端性能決定了同一個屏幕到底可以繪制多少個角色。

從無縫地圖引入了分布式對象模型開始间学,已經(jīng)完全脫離 MUDOS體系殷费,成為一種新的服務(wù)端模型印荔。又由于動態(tài)負(fù)載均衡的引入,讓無縫服務(wù)器如虎添翼详羡,容納著超過上一代游戲服務(wù)器數(shù)倍的人數(shù)上限仍律,并提供了更好的游戲體驗,我們稱其為第三代游戲服務(wù)端架構(gòu)实柠。網(wǎng)游以大型多人角色扮演為開端水泉,RPG網(wǎng)游在相當(dāng)長的時間里一度占據(jù)90%以上,使得基于 MMORPG的服務(wù)端架構(gòu)得到了蓬勃的發(fā)展窒盐,然而隨著玩家對RPG的疲憊草则,各種非MMORPG游戲如雨后春筍般的出現(xiàn)在人們眼前,受到市場的歡迎蟹漓。

類型5:戰(zhàn)網(wǎng)游戲服務(wù)器

經(jīng)典戰(zhàn)網(wǎng)服務(wù)端和 RPG游戲有兩個區(qū)別:RPG是分區(qū)分服的炕横,北京區(qū)的用戶和廣州區(qū)的用戶老死不相往來。而戰(zhàn)網(wǎng)葡粒,雖然每局游戲一般都是 8人以內(nèi)份殿,但全國只有一套服務(wù)器,所有的玩家都可以在一起游戲塔鳍,而玩家和玩家之使用 P2P的方式連接在一起,組成一局游戲:

玩家通過 Match Making 服務(wù)器使用:創(chuàng)建呻此、加入轮纫、自動匹配、邀請 等方式組成一局游戲焚鲜。服務(wù)器會選擇一個人做 Host掌唾,其他人 P2P連接到做主的玩家上來。STUN是幫助玩家之間建立 P2P的牽引服務(wù)器忿磅,而由于 P2P聯(lián)通情況大概只有 75%糯彬,實在聯(lián)不通的玩家會通過 Forward進(jìn)行轉(zhuǎn)發(fā)。

大量的連接對戰(zhàn)葱她,體育競技游戲采用類似的結(jié)構(gòu)撩扒。P2P有網(wǎng)狀模型(所有玩家互相連接),和星狀模型(所有玩家連接一個主玩家)吨些。復(fù)雜的游戲狀態(tài)在網(wǎng)狀模型下難以形成一致搓谆,因此星狀P2P模型經(jīng)受住了歷史的考驗。除去游戲數(shù)據(jù)豪墅,支持語音的戰(zhàn)網(wǎng)系統(tǒng)也會將所有人的語音數(shù)據(jù)發(fā)送到做主的那個玩家機(jī)器上泉手,通過混音去重再編碼的方式返回給所有用戶。

戰(zhàn)網(wǎng)類游戲偶器,以競技斩萌、體育缝裤、動作等類型的游戲為主,較慢節(jié)奏的 RPG(包括ARPG)有本質(zhì)上的區(qū)別颊郎,而激烈的游戲過程必然帶來到較 RPG復(fù)雜的多的同步策略憋飞,這樣的同步機(jī)制往往帶來的是很多游戲結(jié)果由客戶端直接計算得出,那在到處都是破解的今天袭艺,如何保證游戲結(jié)果的公正呢搀崭?

主要方法就是投票法,所有客戶端都會獨立計算猾编,然后傳遞給服務(wù)器瘤睹。如果結(jié)果相同就更新記錄,如果結(jié)果不一致答倡,會采取類似投票的方式確定最終結(jié)果轰传。同時記錄本劇游戲的所有輸入,在可能的情況下瘪撇,找另外閑散的游戲客戶端驗算整局游戲是否為該結(jié)果获茬。并且記錄經(jīng)常有作弊嫌疑的用戶,供運營人員封號時參考倔既。

類型7:休閑游戲服務(wù)器

休閑游戲同戰(zhàn)網(wǎng)服務(wù)器類似恕曲,都是全區(qū)架構(gòu),不同的是有房間服務(wù)器渤涌,還有具體的游戲服務(wù)器佩谣,游戲主體不再以玩家 P2P進(jìn)行,而是連接到專門的游戲服務(wù)器處理:

和戰(zhàn)網(wǎng)一樣的全區(qū)架構(gòu)实蓬,用戶數(shù)據(jù)不能象分區(qū)的 RPG那樣一次性load到內(nèi)存茸俭,然后在內(nèi)存里面直接修改。全區(qū)架構(gòu)下安皱,為了應(yīng)對一個用戶同時玩幾個游戲调鬓,用戶數(shù)據(jù)需要區(qū)分基本數(shù)據(jù)和不同的游戲數(shù)據(jù),而游戲數(shù)據(jù)又需要區(qū)分積分?jǐn)?shù)據(jù)酌伊、和文檔數(shù)據(jù)腾窝。勝平負(fù)之類的積分可以直接提交增量修改,而更為普遍的文檔類數(shù)據(jù)則需要提供讀寫令牌居砖,寫令牌只有一塊燕锥,讀令牌有很多塊。同帳號同一個游戲同時在兩臺電腦上玩時悯蝉,最先開始的那個游戲獲得寫令牌归形,可以操作任意的用戶數(shù)據(jù)。而后開始的那個游戲除了可以提交勝平負(fù)積分的增量改變外鼻由,對用戶數(shù)據(jù)采用只讀的方式暇榴,保證游戲能運行下去厚棵,但是會提示用戶,游戲數(shù)據(jù)鎖定蔼紧。

類型8:現(xiàn)代動作類網(wǎng)游

從早期的韓國動作游戲開始婆硬,傳統(tǒng)的戰(zhàn)網(wǎng)動作類游戲和 RPG游戲開始嘗試融合。單純的動作游戲玩家容易疲倦奸例,留存也沒有 RPG那么高彬犯;而單純 RPG戰(zhàn)斗卻又慢節(jié)奏的乏味,無法滿足很多玩家激烈對抗的期望查吊,于是二者開始融合成為新一代的:動作 + 城鎮(zhèn) 模式谐区。玩家在城鎮(zhèn)中聚集,然后以開副本的方式幾個人出去以動作游戲的玩法來完成各種 RPG任務(wù)逻卖。本質(zhì)就是一套 RPG服務(wù)端+副本服務(wù)端宋列。由于每次副本時人物可以控制在8人以內(nèi),因此可以獲得更為實時的游戲體驗评也,讓玩家玩的更加爽快炼杖。

說了那么多的游戲服務(wù)器類型,其實也差不多了盗迟,剩下的類型大家拼湊一下其實也就是這個樣子而已坤邪。游戲服務(wù)端經(jīng)歷了那么多結(jié)構(gòu)上的變遷,內(nèi)部開發(fā)模式是否依然不變罚缕?究竟是繼續(xù)延續(xù)傳統(tǒng)的開發(fā)方式艇纺?還是有了更多突破性的方法?經(jīng)歷那么多次架構(gòu)變遷怕磨,后面是否有共通的邏輯喂饥?未來的發(fā)展還會存在哪些困難消约?游戲服務(wù)端開發(fā)如何達(dá)到最終的彼岸肠鲫?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市或粮,隨后出現(xiàn)的幾起案子导饲,更是在濱河造成了極大的恐慌,老刑警劉巖氯材,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渣锦,死亡現(xiàn)場離奇詭異,居然都是意外死亡氢哮,警方通過查閱死者的電腦和手機(jī)袋毙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冗尤,“玉大人听盖,你說我怎么就攤上這事胀溺。” “怎么了皆看?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵仓坞,是天一觀的道長。 經(jīng)常有香客問我腰吟,道長无埃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任毛雇,我火速辦了婚禮嫉称,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘禾乘。我一直安慰自己澎埠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布始藕。 她就那樣靜靜地躺著蒲稳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伍派。 梳的紋絲不亂的頭發(fā)上江耀,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音诉植,去河邊找鬼祥国。 笑死,一個胖子當(dāng)著我的面吹牛晾腔,可吹牛的內(nèi)容都是我干的舌稀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼灼擂,長吁一口氣:“原來是場噩夢啊……” “哼壁查!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起剔应,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤睡腿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后峻贮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體席怪,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年纤控,在試婚紗的時候發(fā)現(xiàn)自己被綠了挂捻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡船万,死狀恐怖刻撒,靈堂內(nèi)的尸體忽然破棺而出惜辑,到底是詐尸還是另有隱情,我是刑警寧澤疫赎,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布盛撑,位于F島的核電站,受9級特大地震影響捧搞,放射性物質(zhì)發(fā)生泄漏抵卫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一胎撇、第九天 我趴在偏房一處隱蔽的房頂上張望介粘。 院中可真熱鬧,春花似錦晚树、人聲如沸姻采。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慨亲。三九已至,卻和暖如春宝鼓,著一層夾襖步出監(jiān)牢的瞬間刑棵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工愚铡, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蛉签,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓沥寥,卻偏偏與公主長得像碍舍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子邑雅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容