此文并不是聚潤堂所在公司當前運營的網游游戲服務器架構,而是在看過了近十個商業網游的架構,在現階段心目中規劃的簡單實用的網游服務器架構。
網游的本質是人和人之間關系,人越多,關系越多,越能把人留住。開服頭三天,人數是最多,為了保證一個月后,玩家等級達到一定的等級,策劃的玩法都可以完全展開,單組服務器容納人數越多越好,如果是PVE結構的游戲,最好能容納1萬人左右。這樣在一個月后流失率50%的情況下,還有5000人左右在一組服務器內,已經產生比較強大的社會結構,各種高級玩法才有進行的基礎。如果是PVP洗用戶的游戲,容納人數越高越好。兩款較好的國戰游戲,《征途》達到了每組4萬人,《成吉思汗》,推測至少也達到了兩萬人。
采用完美常用的分線結構,運營到后期,就會出現每線人數較少,線內,線和線之間都互動不起來。但如果不分線,在開服一剎那,用戶全部堆積在同一個新手村,基本玩不動。《天龍八部》提出了較好的解決方案,建立多個平行的新手村地圖,一主多副,開服時盡可能多的同時容納新用戶的涌入,高等[來源:GameRes.com]級玩家從其它地圖回新手村只能到達主新手村。
下圖中每個方框表示一個獨立的進程APP組件,每個服務進程如果發生宕機會影響部分用戶,整體服務但不會全部中斷。在宕機進程重啟后,又可以并入整體,全部服務得以繼續。
圖片附件

gls:game login server,游戲登錄服務器,某種程序上,其不是核心組件,gls調用外部的接口,進行基本的用戶名密碼認證。此外需要實現很多附屬的功能:登錄排隊(對開服非常有幫助),GM超級登錄通道(GM可以不排隊進入游戲),封測期間激活用戶控制,限制用戶登錄,控制客戶端版本等。
db:實質上是后臺sql的大內存緩沖,隔離了數據庫操作,比較內存中的數據,只把改變的數據定時批量寫入sql。系統的算法,開發穩定性都要求非常高。
center:所有組件都要在這里注冊,在線玩家的session狀態都在這里集中存放,和各組件有心跳連接。所有對外的接口也全部通過這里。
角色入口:玩家登錄游戲后的選擇角色
gs:game server,最核心組件,同一地圖,所有游戲邏輯相關的功能,都在這里完成。
gate:建立和用戶的常鏈接,主要作sockt轉發,屏蔽惡意包,對gs進行保護。協議加密解密功能,一個gate共享多個gs,降低跳轉地圖連接不上的風險。
IM,關系,寄售:表示其它組件,負責對應的跨地圖發生全局的游戲邏輯。
細節是魔鬼。此架構簡單、清晰、明了,和其它網游架構相比其實沒有什么本質的區別。團隊的代碼開發能力,項目管理能力才是關鍵。一個gs承擔能力有限,在現在硬件環境下,一個有經驗的開發人員,一個gs應該能達到1500人的上限。整個架構的上限,瓶頸在center調度壓力,db的讀寫壓力。
引用一段深以為然的話做結束:
==========
http://blog.csdn.net/lfhfut/archive/2010/04/14/5483266.aspx
4。游戲開發并沒有什么高深的技術
首先需要明確的一點,游戲項目是工程項目,不是科研項目。
工程項目的目的是在有限的人力跟財力之下實現出既定的需求,而這個需求從前面的分析可以知道,要求并不高,所以,需求的實現過程也就并沒有多么高深。
至少在我經歷過的項目里,沒有什么驚天地泣鬼神似的英雄人物,沒有創造出多么偉大的算法,我們所做的,只是使用現在的技術,現有的方法,拼合成一個軟件產品,一個融合了程序、美術、策劃勞動力的軟件產品。
游戲開發的過程里,沒有,也不需要多厲害的技術高手,需要的僅僅只是有耐心,有責任心的普通技術人員。
===========
最后贊一句:Dia真是跨平臺畫流程圖的好軟件,聚潤堂的日常使用中已經完全替代了Visio。
參考:
白云哥的blog
http://blog.csdn.net/lfhfut/archive/2007/09.aspx
一種經典的網絡游戲服務器架構
http://www.shnenglu.com/johndragon/archive/2008/04/10/46768.html
傳奇3的架構圖
http://bbs.gameres.com/showthread.asp?threadid=47752&page=10
185樓,187樓,分了兩部分。聚潤堂把其合在一起方便查看
posted on 2011-01-20 11:25
李陽 閱讀(1346)
評論(0) 編輯 收藏 引用 所屬分類:
游戲開發