久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

Discuz! 官方交流社區(qū)

標(biāo)題: 游戲服務(wù)器架構(gòu)通識 [打印本頁]

作者: dongbangyun    時間: 2025-7-31 11:39
標(biāo)題: 游戲服務(wù)器架構(gòu)通識
前言

這節(jié)講座里,我們將從游戲服務(wù)器發(fā)展的簡單歷程出發(fā),鳥瞰一下目前大多數(shù)的游戲服務(wù)器架構(gòu)。

這里盡可能的避免陷入細(xì)節(jié)的技術(shù)問題,而是從技術(shù)進(jìn)化的結(jié)果狀態(tài),反推原始問題是什么。希望能通過這個過程,解釋清楚游戲服務(wù)器是在解決什么問題,痛點到底在哪里。

一、早期網(wǎng)游服務(wù)器

蠻荒時期的游戲服務(wù)器框架我們一筆帶過,那時的游戲服務(wù)器和一個小Web服務(wù)沒有區(qū)別。

蠻荒時代的服務(wù)器只負(fù)責(zé)存儲玩家賬號、數(shù)據(jù)、轉(zhuǎn)發(fā)場景內(nèi)其他玩家的行為。很多移動、使用技能等關(guān)鍵邏輯在服務(wù)器上根本沒有。隨意就能用變速齒輪改變游戲速度。

從《傳奇》的時代開始,游戲服務(wù)器就不再是簡單的上傳存檔、下載存檔、訪問頁面而已。游戲服務(wù)器內(nèi)部出現(xiàn)了游戲邏輯,既能用于同步每個玩家看到的世界,又能讓邏輯與客戶端分離,避免早期的網(wǎng)絡(luò)游戲那種毫無防范的邏輯體系(對外掛防御能力為0)。
(, 下載次數(shù): 40)


如圖,客戶端通過某種形式驗證登陸以后,就和服務(wù)器通過TCP直接相連了。這種服務(wù)器的承載能力不高,但那時在游戲邏輯上也務(wù)求簡化,把負(fù)載減少到極致。

· 例如:1、玩家看不到怪物的血量,或者只能看到正在打的怪物的血量。2、地圖有格子的概念,每個格子只能有一個單位,極大限制了同屏人數(shù)。

由于邏輯盡量簡化,雖然這時的服務(wù)器邏輯服務(wù)都是單進(jìn)程單線程的,但是也足夠表現(xiàn)交互的感受。

這種架構(gòu)奇怪的地方是處理網(wǎng)絡(luò)連接數(shù)據(jù)傳輸?shù)膲毫瓦壿嬏幚淼膲毫υ谕粋€服務(wù)器上(存儲模塊可能也在同一個進(jìn)程),就算邏輯處理壓力為0,承載人數(shù)也高不到哪去。

雖然這時的游戲服務(wù)器設(shè)計很簡陋,但是網(wǎng)游第一次給了玩家真實世界的感受。單服人數(shù)不足的問題可以靠開多組服務(wù)器實現(xiàn),所以曾經(jīng)出現(xiàn)了幾百上千組服務(wù)器的輝煌時代。

二、早期游戲服務(wù)器的改進(jìn)版本

當(dāng)開發(fā)者們有了初步經(jīng)驗以后,新作品的開發(fā),自然而然的過渡到了如下的形式:


(, 下載次數(shù): 43)
游戲邏輯服務(wù)依然是在一臺服務(wù)器上,單進(jìn)程(邏輯處理本身肯定是在一個線程中,可以有子線程負(fù)責(zé)內(nèi)網(wǎng)通信)。但是我們自然的想到,存儲負(fù)載和網(wǎng)絡(luò)連接負(fù)載可以從邏輯服上拆出來。

連接服務(wù)器負(fù)責(zé)把客戶端和服務(wù)器之間的消息轉(zhuǎn)化為服務(wù)器之間的消息,可以順便做一些加解密的工作。

這一點小改動極大提高了單服連接人數(shù)的上限。但是玩家要求提高了,空出來的性能很快被豐富的游戲系統(tǒng)吃掉了。

由于連接服務(wù)器本身沒有時序性,很容易做分布式的(其實大部分游戲還是只用一個連接服),存儲服務(wù)不要求高實時性,高峰期存盤間隔可以稍長一些,不會對游戲服造成影響。

三、成熟形態(tài)的服務(wù)器框架

邏輯服務(wù)器的負(fù)載均攤方法一:按照功能劃分多個服務(wù)器進(jìn)程
(, 下載次數(shù): 41)


邏輯服務(wù)器的負(fù)載均攤方法二:按照場景劃分多個服務(wù)器進(jìn)程


對游戲服務(wù)器歷史有了基本了解后,成熟形態(tài)的游戲服務(wù)器很容易理解。簡單來說,就是把邏輯服務(wù)器單個進(jìn)程的壓力分?jǐn)偟蕉鄠€服務(wù)器。

難點在邏輯的設(shè)計上,要像做手術(shù)一樣把本來是一體的功能切開,并抽象出若干個API來保持聯(lián)系(服務(wù)器之間是TCP連接)。

在分解時,要找聯(lián)系相對最薄弱的環(huán)節(jié)入手,比如場景和場景之間分開、單獨抽出聊天服務(wù)、組隊服務(wù)、好友服務(wù)。

無論如何分解,最終結(jié)果只能是有限個服務(wù)。而且分解的越細(xì),開發(fā)難度就越大。因為跨服務(wù)器邏輯是把簡單的同步邏輯變成了異步Callback邏輯,而且容易出現(xiàn)時序問題等不易測試的問題。

單個場景服務(wù)幾乎是無法分解的。分解單個場景難度巨大以至于出現(xiàn)了BigWorld引擎來專門的解決場景分割問題,后面會談到。

(, 下載次數(shù): 48)

這種成熟形態(tài)的游戲服務(wù)器已經(jīng)能滿足現(xiàn)實中99%的頻繁交互類網(wǎng)游需求,是大型MMO端游、頁游的主流形式。

當(dāng)然有實力的公司在這個基礎(chǔ)上會做很多改動,實現(xiàn)動態(tài)開辟副本、相位技術(shù)等等,但是萬變不離其宗,其本質(zhì)和上圖沒有什么區(qū)別。



附:開房間式的網(wǎng)絡(luò)游戲

開房間式的網(wǎng)絡(luò)游戲也是游戲的一個重要分支,英雄聯(lián)盟、DOTA、很多手游例如皇室戰(zhàn)爭、王者榮耀等等。

這種游戲房間之間幾乎沒有交互,只有大廳內(nèi)有交互,可以理解為原始形態(tài)的游戲服務(wù)器的平行擴展。

房間式游戲擴展難度較小,只是需要根據(jù)玩家數(shù)量動態(tài)擴展游戲房間的數(shù)量、服務(wù)器數(shù)量。很像網(wǎng)站的架構(gòu)。



這種游戲架構(gòu)最最適合放在云平臺上,設(shè)計合理的話,它可能遇到的問題和大型網(wǎng)站幾乎一模一樣。不需要特別的討論它們。

只是,畢竟游戲不都是開房間的玩法。

(, 下載次數(shù): 40)

小結(jié):游戲服務(wù)器框架特點

1、真正的數(shù)據(jù)都在內(nèi)存中,數(shù)據(jù)庫性能不那么重要

· 注:很多大型游戲采用了共享內(nèi)存,避免宕機時損失過大。

2、單CPU性能比CPU數(shù)量重要的多。

3、目前有很多游戲,特別是手游,使用Redis讀寫代替內(nèi)存讀寫,甚至也有用Mongo的。

4、開新服、舊區(qū)合服的情況,非常適合云平臺。

五、先進(jìn)服務(wù)器框架

· 先進(jìn)服務(wù)器框架1 BigWorld

BigWorld引擎的代表作:

· 中國:《天下貳 》《天下叁》等等數(shù)十款,網(wǎng)易對BigWorld的實用化貢獻(xiàn)很大。

· 國際:《魔獸世界》早期版本,《坦克世界》,《戰(zhàn)爭雷霆》

BigWorld的核心理念,要回到上面講過的場景分割問題。

BigWorld利用平面切分的原理,將場景劃分為小塊,不同的塊可以運行在不同的服務(wù)器上。而且塊的劃分是動態(tài)的,根據(jù)玩家密集程度、數(shù)量動態(tài)調(diào)整塊的大小。。

具體技術(shù)上,使用了Actor模型,要求每個對象都是獨立的Entity,對象之間只能通過消息協(xié)作,嚴(yán)格限制對象之間的直接交互。

后來隨著手游的崛起、端游的衰落、網(wǎng)游玩法向多元化發(fā)展,這一系列的變化,導(dǎo)致BigWorld引擎很快就衰落了。

BigWorld引擎從曾經(jīng)的大紅大紫,到現(xiàn)在的無人問津,反映出游戲服務(wù)器技術(shù)的發(fā)展趨勢。BigWorld的強制Actor模型,實際上是犧牲了開發(fā)效率,換取了服務(wù)器可擴展性。

理論上單服承載人數(shù)可以達(dá)到百萬級別。但是游戲的業(yè)務(wù)邏輯的修改很頻繁,開發(fā)效率低下是游戲設(shè)計師不能承受之重。

這種架構(gòu)天生就是為云計算準(zhǔn)備的,而且單個物理機承載量十分有限,每個游戲大區(qū)都需要大量實體機。

如果BigWorld成功…… 可惜的是,它和實際市場的發(fā)展趨勢背道而馳了。

游戲開發(fā)相比電商系統(tǒng),項目規(guī)模小幾個數(shù)量級,但是相對的,迭代速度要快幾倍。項目之間如果類型不同或是玩法有差異,能復(fù)用的代碼并不多。

聊聊十萬行代碼。游戲服務(wù)器開發(fā)速度受美術(shù)資源制作速度、客戶端開發(fā)速度制約。近幾年我猜測服務(wù)器方面并不會有大的技術(shù)革新。

游戲開發(fā)未來的趨勢是多元化、低門檻化、大眾化。很長一段時間內(nèi)BigWorld這種大怪獸級別的引擎不會再崛起。

分布式框架的崛起時間點,無論如何,也在VR技術(shù)成熟之后了。



· 先進(jìn)服務(wù)器框架2、Skynet

Skynet是新興的一種通用型服務(wù)器框架(完全開源),它游走在傳統(tǒng)不易分布服務(wù)器和分布式服務(wù)器之間。

它是一種泛用型框架,不僅能很好的作為游戲服務(wù)器框架使用,而且用來搭建HTTP服務(wù)也具有驚人的性能(幾百行代碼的簡單HTTP實現(xiàn),能達(dá)到nginx 60%的性能)。

矛盾的是,由于它對腳本虛擬機做了一些重要的Hack,導(dǎo)致它完全綁定在了Lua這一種語言上。

Skynet原理闡述:

把服務(wù)抽象為微服務(wù),一個系統(tǒng)內(nèi)可以建立成千上萬個微服務(wù),Skynet調(diào)度m個線程(m=CPU核心數(shù))、處理n個微服務(wù)各自的事件。

由于n個微服務(wù)在同一個進(jìn)程內(nèi),可以達(dá)到0延遲的內(nèi)部通信(極端情況下無拷貝)

同時Lua虛擬機又提供了沙盒機制,微服務(wù)之間的Lua邏輯代碼不會有任何干擾,必要的時候又可以在C語言層面、Lua沙盒之外共享數(shù)據(jù)。

由于服務(wù)本身有良好的隔離性,可以較為方便的把服務(wù)部署到多物理機上(考慮到性能問題,不能像BigWorld那樣任意部署)。

Skynet這種架構(gòu)已經(jīng)在Lua體系的游戲公司內(nèi)大量使用(以網(wǎng)易系為代表),悄無聲息的滲透到其他公司里。(和Lua語言當(dāng)年的情況有點像,是金子總會發(fā)光的。)



六、先進(jìn)服務(wù)器框架3、以Go語言為主的其他框架

Go語言的goroutine特性,給游戲開發(fā)者帶來巨大的想象空間。

在Go語言的基礎(chǔ)上,很容易出現(xiàn)更好的房間式游戲框架、類似Skynet的框架、改進(jìn)型的傳統(tǒng)框架。

但是可以大膽預(yù)測,最終實現(xiàn)的效果不會超過erlang、skynet這類框架的范圍。這是因為游戲業(yè)務(wù)本身的特性決定的。



結(jié)束語

本文簡要探討了十幾二十年來,主流服務(wù)器框架的發(fā)展脈絡(luò),以MMO-RPG這種最具代表性的網(wǎng)游類型為主(同時MMO對服務(wù)器架構(gòu)的挑戰(zhàn)也是最大的),兼談到一些其他類型的游戲。由于游戲類型多種多樣,各個國家和地區(qū)的開發(fā)商所偏好的架構(gòu)方式也大有不同,文中難免掛一漏萬,但不太影響整體脈絡(luò),也不影響對網(wǎng)游服務(wù)器的核心問題的總結(jié)——邏輯拆分。







歡迎光臨 Discuz! 官方交流社區(qū) (http://m.9999xn.com/) Powered by Discuz! X5.0
久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线
亚洲色图色小说| 欧美日韩二区三区| 欧美视频中文一区二区三区在线观看| 在线不卡一区二区| 国产精品久久久久久久久免费桃花| 一个色妞综合视频在线观看| 国产在线精品一区二区| 91麻豆福利精品推荐| 久久精品欧洲| 国产网站一区二区| 美女视频网站黄色亚洲| 韩国一区二区三区在线观看 | 亚洲欧洲三级电影| 狠狠色狠狠色合久久伊人| 国产精品分类| 91精品国产入口在线| 亚洲欧美激情一区二区| 国产suv精品一区二区6| 一本久久综合| 久久这里只有精品首页| 男人的j进女人的j一区| 激情久久综合| 欧美大片免费久久精品三p| 性久久久久久久久久久久| 91美女在线观看| 欧美久久免费观看| 亚洲国产aⅴ天堂久久| 欧美高清视频一区二区三区在线观看| 在线观看日韩一区| 一个色妞综合视频在线观看| 色综合天天综合网国产成人综合天| 欧美视频日韩视频在线观看| 一区二区三区中文字幕精品精品| 91在线观看下载| 制服视频三区第一页精品| 天天做天天摸天天爽国产一区| 黄色日韩精品| 国产亚洲成aⅴ人片在线观看| 国产在线精品一区二区三区不卡 | 国内成人精品2018免费看| 国产一区二区三区高清| 国产视频一区在线观看| 国产精品69毛片高清亚洲| 久久久久国内| 亚洲色图欧美偷拍| 午夜精品av| 国产三级久久久| 成人动漫一区二区三区| 欧美一区二区三区视频免费| 韩国v欧美v日本v亚洲v| 日本电影欧美片| 午夜精品福利一区二区三区蜜桃| 91久久亚洲| 18成人在线观看| 国产一区二区三区无遮挡| 久久精品一区二区三区不卡牛牛| 成人亚洲精品久久久久软件| 91精品国产91热久久久做人人 | 日韩欧美一区二区在线视频| 久久99久久精品| 欧美体内she精高潮| 老司机精品视频导航| 欧美影院一区二区三区| 日韩成人一级片| 日本久久电影网| 热久久一区二区| 欧美三级日韩在线| 国产一区二区剧情av在线| 欧美精三区欧美精三区| 国产精品一区在线| 精品99久久久久久| 午夜国产精品视频| 中文字幕日韩精品一区| 一区二区精品| 亚洲一区二区三区精品在线| 久久久久久久久久久久久久一区| 日韩不卡一区二区| 精品视频在线免费看| 国产福利电影一区二区三区| 久久综合色播五月| 一区二区在线视频观看| 亚洲精品菠萝久久久久久久| 久久婷婷影院| 国产精品18久久久久久vr| 久久先锋资源网| 亚洲国产精品一区在线观看不卡| 亚洲一区二区不卡免费| 欧美视频中文字幕| 99久久精品国产导航| 亚洲日本在线观看| 久久亚洲视频| 粉嫩高潮美女一区二区三区| 国产精品欧美一区二区三区| 亚洲一区欧美二区| 国产一区二区三区国产| 久久这里都是精品| 一级成人国产| 国产精品一级二级三级| 亚洲国产精品t66y| 久久综合图片| 99re这里只有精品首页| 一区二区三区不卡视频| 欧美婷婷六月丁香综合色| 91丝袜美腿高跟国产极品老师| 亚洲另类在线制服丝袜| 欧美群妇大交群中文字幕| 欧美日韩免费精品| 男人的j进女人的j一区| 国产香蕉久久精品综合网| 久久久精品五月天| av一区二区三区在线| 一卡二卡三卡日韩欧美| 日韩欧美一区二区三区在线| 国产欧美丝祙| av福利精品导航| 视频一区欧美精品| 国产日韩av一区二区| 91久久国产综合久久| 欧美精品二区| 国产一区二区在线观看免费| 1区2区3区国产精品| 777色狠狠一区二区三区| 99riav国产精品| 成人一区二区三区视频| 五月婷婷激情综合| 亚洲国产高清在线观看视频| 欧美三级中文字幕| 在线亚洲激情| 欧美在线黄色| 国产在线视频不卡二| 亚洲高清视频中文字幕| 国产日韩一级二级三级| 欧美精品一级二级| 亚洲一区亚洲| 极品少妇一区二区三区| 成人丝袜高跟foot| 久久电影网站中文字幕| 亚洲综合区在线| 亚洲国产精品黑人久久久| 欧美一区二区在线不卡| 老司机午夜精品视频| 亚洲国产精品一区二区第四页av| av亚洲精华国产精华精华 | 7777精品伊人久久久大香线蕉| 国产欧美一区二区三区另类精品| 欧美aⅴ99久久黑人专区| 国产精品一区二区免费不卡| 日本午夜精品视频在线观看 | 欧美网站一区二区| 久久国产欧美| 亚洲国产裸拍裸体视频在线观看乱了中文| 成人深夜在线观看| 国产精品一区二区久久精品爱涩| 日韩国产精品久久久| 亚洲自拍与偷拍| 亚洲欧美一区二区久久| 中文字幕免费一区| 久久欧美中文字幕| 精品成人一区二区三区| 欧美一卡2卡三卡4卡5免费| 欧美日韩精品一区二区三区四区 | 精品一区二区国语对白| 亚洲v精品v日韩v欧美v专区| 亚洲精品国产第一综合99久久| 国产精品久久久一本精品| 久久日一线二线三线suv| 日韩欧美国产午夜精品| 91精品国产福利| 91精品国产综合久久精品| 欧美日韩精品电影| 欧美日韩国产小视频| 欧美视频一区二| 51精品秘密在线观看| 在线成人小视频| 日韩一区二区免费高清| 欧美一区午夜精品| 精品免费国产二区三区| 26uuuu精品一区二区| 久久男人中文字幕资源站| 久久人人97超碰com| 国产午夜精品一区二区| 国产精品伦理在线| 亚洲欧美视频一区| 亚洲综合网站在线观看| 视频精品一区二区| 另类的小说在线视频另类成人小视频在线| 免费的国产精品| 国产一二精品视频| 99re热这里只有精品视频| 欧美成人69av| 亚洲裸体视频| 欧美专区18| 欧美人动与zoxxxx乱| 精品国内二区三区| 国产精品理伦片| 亚洲制服丝袜一区| 美女任你摸久久| 成人免费视频网站在线观看| 色综合欧美在线| 99视频在线精品国自产拍免费观看|