在雲計算時代,網路遊戲為什麼要分伺服器?
在雲計算時代,網路遊戲為什麼要分伺服器?很多網路遊戲在不同的地圖邊緣,為什麼不能平滑過渡,而要生硬切換?用戶在登錄網路遊戲的時候,需要選擇伺服器,這是不是一種很不好的用戶體驗?為什麼用戶在登錄QQ和Facebook的時候,不需要選擇伺服器?網路遊戲為什麼需要暫停遊戲維護?而QQ和Facebook就不需要暫停服務維護?
技術上,可以不分伺服器。
但需解決兩個問題:1、策劃設計 與 玩家習慣 能否適應不分伺服器。重度ARPG分服是個約定俗稱的事情了,可以突破,但需要緩慢的過程,這個過程一定略微落後於技術發展的進度。2、少數情況下,玩家過度集中帶來的性能以及帶寬壓力。這個壓力不僅僅體現在服務端,更主要是體現在客戶端,再好的伺服器架構也解決不了客戶端渲染壓力以及帶寬壓力的問題。如果策劃設計和遊戲玩法足以不考慮以上兩個問題,其實不分服的ARPG也並不少見了,譬如《暗黑破壞神3》,那個大區僅僅是為了解決訪問延遲問題,就負載而言完全可以容納。
做手游伺服器,沒做過端游,簡單回答下。
1、關於雲,你要是用過雲主機的話,你就知道了雲只是個美好的概念,遠沒想像中那麼好。原來用過一個三流雲廠商的提供的主機(為了省錢),開機時間長後時鐘會不準,每次維護的時候要同步時間,你能想像每次活動告訴玩家10:00開,結果10:05才開么。偶會也會當機(說好的雲呢)。感覺就是一個物理機上裝了多個虛擬機。2、關於分服,樓上說的不斷開新服吸引玩家是一方面,在頁游和手游上體現尤為明顯,新開的伺服器會有很多人充錢充級別,不停的開服合服,刷用戶。還有會給特定渠道開單獨的服。這都是次要原因,其實主要是因為伺服器壓力問題,這個會在下面地圖上說。
3、QQ和Facebook為什麼不分服,你要是了解的話,你就會知道QQ和facebook的伺服器多的連他們自己的大部分員工都不知道有多少台,他們的伺服器比現在任何一個遊戲的伺服器都多的不是一星半點,你在facebook登錄,你眼睛看到的只是一個入口,實際上要遠比你想像的複雜,系統會根據一系列演算法,將你的請求放到其中一個數據中心上進行處理。
對於WEB應用(facebook,QQ客戶端暫且不談)來說,跟遊戲伺服器也是有差別的,例如剛才說的登錄請求,簡單來說只是去伺服器上驗證一下用戶名密碼然後返回個結果就結束了。生命周期為發起請求到返回結果。而對於遊戲伺服器來說,遊戲世界開啟後,就算沒有玩家登錄,很多東西就要不停的計算(例如怪物AI)。當有玩家登錄時,玩家會一直存在於伺服器內存中,就算你不做任何做操。生命周期為上線開始到下線為止(一般情況)。
而你所看到的伺服器(遊戲),只是你看到的一個列表而已(一區、二區、三區這樣的),這個對應的不一定是一台真正的物理伺服器(物理伺服器類似一台看得見摸得著的電腦),一個遊戲的分區,可能會對應一個網關伺服器,多個遊戲邏輯伺服器,多個資料庫伺服器。
4、關於地圖,很多端游已經實現了無縫銜接,但是也不會有特別特別特別大的地圖。而對於手游來說,小地圖更適合手遊玩家操作(誰也不想在手機上跑圖玩)。分圖原因很多,只談伺服器壓力來說,一般遊戲伺服器,可以按照地圖來進行分割。即對於負載大的地圖A(可能會發生大規模戰鬥的或者主城),可以放到物理伺服器A上。負載大的地圖B,放到物理伺服器B上,其他方到物理伺服器C上。按照地圖來劃分不同的物理機好處在於,一般不會出現跨地圖操作的事。例如RPG、ARPG玩家A跟玩家B發生PK,一般不會設計成能跨地圖PK,都在同一個伺服器上,計算攻擊傷害等會比較方便。如果不在一個伺服器上,那還要跨物理機傳輸一些數據,對於很多計算來說相對會麻煩很多。
5、停服維護,遊戲伺服器來說有些內容是可以做成不停服維護的,這些內容在於一些基礎的數據配置,例如道具的配置,任務的配置等。也看情況,前面說了當玩家登錄時玩家會一直存在有伺服器的內存中,包括玩家的一些相應的數據,如果更新的內容可能會對玩家內存中的數據造成破壞,那這樣不重啟更新,就會導致很多玩家出錯(回檔是好事,有時候連號都上不去才是悲劇)。對於QQ和facebook不停服維護,只能說他們做的很好,不一定是不停服,只是讓你覺得沒停服而已,例如對於WEB系統維護,可以將全部的用戶請求放到物理機A上,維護物理機B,當B維護好後,請求轉到物理機B上,再去維護物理機A(猜測,只是一種解決方案,不要較真)。對於遊戲伺服器,很多內容是放到內存里了,所以想做成WEB那種先切到A,在轉到B,要涉及內存數據的轉換……目前還沒有這種解決方案,起碼我是不知道。
順帶說一句,EVE是只有一個遊戲伺服器(不是說物理機)的。嗯 排行榜只有一個的話不利於營收.....
不斷開新伺服器可以吸引玩家砸錢爭第一,老區做不動了。
rpg網遊分區是因為地圖容量(空間,資源)有限。lol之類的分區可以減小伺服器壓力(比如搜索其他主機的時候)。地圖不能平滑過度是為了減小資源消耗(活動區域以外的地圖都處於不激活狀態)。
問題太多了~我就回答為什麼要分服和為什麼地圖要切換吧。
首先從遊戲設計的角度來說,提供幾個觀點。遊戲中玩家投入的資源主要是兩種,時間和金錢。越先開始遊戲的玩家,在時間這個資源上面積累得也就越多,對於後來的玩家是不利的,而且這種不利會一直增加,最終導致新的「有追求」的玩家不願意再進入。這個問題可以通過不斷更新遊戲,在不提高消費的同時拔高數值來降低新玩家的門檻,但是又需要綜合考慮對新手的吸引力和老玩家的感受。多個伺服器可以有多個第一名-_-!每次開新服的時候可以針對原來伺服器在玩家成長上出現的問題微調一下。
從技術角度出發,對於分服,在角色數不超過一個機房的承載力的前提下(保守估計1億個角色吧),是不需要數據分服的,也就是說角色可以去不同的伺服器,見到不同的人。邏輯分服的話跟負載上限有關,和地圖切換合併起來說。對於地圖不切換(比如像老滾那樣)的網遊,一般稱為無縫伺服器(seamless server),對於這種需求的建議是:不要提這種需求。因為實現起來難度太大,目前沒有成熟的實現。對於目前成熟的體系,無法實現這個需求的原因,跟地圖無關,跟地圖上面的人數有關。比如你可以做個遊戲,把整個地球做進去,北京發個導彈可以打到紐約,這個沒問題,但是這個地球上面的人數是會有個上限的(按照魔獸世界5,6年前的例子,大概是2000~4000人,現在應該可以承擔更多的人了)。但如果地圖是切換的,比如從上海到北京地圖需要切換,可以承擔的用戶就翻倍了(卡利姆多2000,東部王國2000)這個跟雲一點關係都沒有,實際上是一個進程可以承擔的人數上限。實際上如果跑到雲上面,可以承擔的人數更少。以上吧~我要去寫代碼了。主要還是由於性能的考慮,運營和其他方面的原因都是次要的。網路遊戲對消息處理的速度和響應速度有相當高的要求,基本上都在100ms以內,並且,還涉及到大量的消息廣播:比如角色的移動、聊天、怪物的走動等都需要「廣播」給「能看到它」的玩家們。所以絕大多數網路遊戲的服務端的邏輯處理都是在進程內部進行,且一個進程可能只負責部分地圖區塊的邏輯,無法水平擴展,所以理論上一個進程可以「負擔」的「地圖的大小/玩家的數量」是有限制的。
來答一個這個。
先說事實,一般看到分服的是強交互的網路遊戲,弱交互的社交類的網遊(這就跟一個網頁應用差不多了),是不分服的。原因如下:
1)強交互的網遊,每個九宮格的所有玩家的所有消息,打怪的,移動的,掉血,等等等,都要實時同步給所有在九宮格的其他玩家;弱交互網遊則沒有這個限制。
2)另外,由於邏輯複雜,參與個體多,全局變數多,強交互網遊通常用單線程實現(準確點,是單地圖單線程)。弱交互網遊也沒有這個限制。
這兩個點就卡死了服務人數上限。
伺服器性能瓶頸起的決定的作用。否則分服這種違反用戶體驗的東西不會存在。
不選不代表不分,只是人家在背後已經給你選好了。
部落衝突不就是沒有分不同區么?全球玩家一起
雲計算也是多台伺服器,不是超級計算機。
"這遊戲是不是單機的啊?怎麼不能選伺服器選區啊?"
「這遊戲是不是沒人玩啊,怎麼才3個區啊?」「你看我玩的XXX遊戲火得不得了,X個伺服器Y個區Z條線,熱熱鬧鬧!」親身體驗。推薦閱讀:
※彈幕系統更新的血與淚
※在linux環境下安裝並配置jdk
※深化「一核兩翼」戰略 華為雲業務的選擇和堅持
※雲計算進入下半場:生態和深化應用成核心