日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

怎樣開發(fā)網(wǎng)頁游戲服務(wù)器端 服務(wù)器開發(fā)的開源軟件


怎樣開發(fā)網(wǎng)頁游戲服務(wù)器端 服務(wù)器開發(fā)的開源軟件


盡管網(wǎng)頁游戲開發(fā)應(yīng)用的是服務(wù)器端腳本編寫,但是它的運行還是需要一定的客戶端技術(shù)支持的,比如網(wǎng)頁瀏覽器,或者瀏覽器上常用的一些插件,如Java或者Flash 。最新的網(wǎng)頁游戲典型應(yīng)用是大型多人在線角色扮演游戲 。
最近參與開發(fā)了一款網(wǎng)頁游戲,網(wǎng)頁游戲和普通客戶端游戲不同,雖然都可以稱為網(wǎng)絡(luò)游戲,從服務(wù)器角度來說,網(wǎng)頁游戲所承載的用戶量是很少的,一般一組服務(wù)器3-4000玩家同時在線 。當(dāng)然,技術(shù)含量也相對較低 。開發(fā)周期短,一般為4-5個月 ?,F(xiàn)在就網(wǎng)頁游戲后臺開發(fā)的技術(shù),談?wù)勛约旱目捶?。
首先是網(wǎng)關(guān),所有玩家進入游戲,都是同網(wǎng)關(guān)連接,網(wǎng)關(guān)起著隔離游戲邏輯服務(wù)器和玩家的作用,保護游戲服務(wù)器內(nèi)部不受外部玩家有意或無意的攻擊 。一般一個網(wǎng)關(guān)下面會掛上多組地圖服務(wù)器,網(wǎng)關(guān)將用戶邏輯轉(zhuǎn)發(fā)到地圖服務(wù)器上做具體的處理,處理完成后,地圖服務(wù)器將處理結(jié)果送回網(wǎng)關(guān),網(wǎng)關(guān)再轉(zhuǎn)發(fā)給玩家 。乍一看,網(wǎng)關(guān)似乎有可能成為性能瓶頸,確實是性能瓶頸 。在網(wǎng)絡(luò)游戲中,單個客戶端上行流量是很小的,一般客戶端都會做控制,在戰(zhàn)斗和行走的時候,客戶端沒秒鐘基本上只會有3條上行數(shù)據(jù),但是下行廣播數(shù)據(jù)是非常龐大的,曾經(jīng)測試過300人同屏在線,每秒鐘3個位置更新消息,廣播量基本上是300*300*3=270000條消息,假如服務(wù)器為每一條消息調(diào)用一次send系統(tǒng)調(diào)用,那么意味著每秒鐘27萬次系統(tǒng)調(diào)用,是多么的龐大?。?br /> 一般網(wǎng)關(guān)前端收發(fā)消息部分毫無疑問會采用epoll的邊緣出發(fā)模式(非阻塞),多線程收/多線程發(fā) 。客戶端發(fā)上來的消息,通過網(wǎng)關(guān)路由到地圖服務(wù)器做具體的邏輯處理,對于地圖服務(wù)器通常都是一個服務(wù)器對應(yīng)一副或者多幅地圖,在這個地圖上玩家發(fā)生的所有事件,都有這個服務(wù)器來處理,地圖服務(wù)器采用單線程/單進程這種模式,主要是保證游戲邏輯的順序處理 。評價地圖服務(wù)器處理能力的一個指標是地圖服務(wù)器可以支撐多少怪,多少玩家,因為怪的AI都在服務(wù)器這邊做,服務(wù)器需要主動觸發(fā)事件,廣播給玩家,這個時候timer是不可缺少的資源,timer開得越多,系統(tǒng)性能也就越差了 。
另外,有一種簡單的處理方式,開一個timer,幾十毫秒統(tǒng)一處理一下地圖中的事件,比如補怪等 。對于數(shù)據(jù)庫訪問這一塊,目前很多網(wǎng)頁游戲開發(fā),都使用的是和mongodb類似的內(nèi)存數(shù)據(jù)庫,是不是可以不采用cache,而直接訪問數(shù)據(jù)庫了呢?答案是錯誤的,根據(jù)具體情況來定吧,基本上到最后,性能瓶頸都會在數(shù)據(jù)庫I/O這一塊了,主要是讀 。對于一些訪問量比較大的業(yè)務(wù),比如,任務(wù),戰(zhàn)斗,背包等,肯定是讀緩存,寫緩存和數(shù)據(jù)庫同時進行 。再切地圖和玩家下線時,清掉內(nèi)存中的信息 。原則上是服務(wù)器需要處理所有業(yè)務(wù)邏輯,所有接入游戲服務(wù)器的客戶端都需要在網(wǎng)關(guān)進行鑒權(quán)認證,只有合法玩家才能接入游戲邏輯服務(wù)器 。
為了不使網(wǎng)絡(luò)延時導(dǎo)致玩家體驗感下降,在及時戰(zhàn)斗的時候,客戶端需要先播放模擬打斗的動畫,由服務(wù)器進行驗證 。不同地圖消息的轉(zhuǎn)發(fā)在地圖管理器上面進行,地圖管理器是一個進程,維護了所有地圖服務(wù)器的連接,所有消息轉(zhuǎn)發(fā)都在地圖管理器來完成 。同時,為了減輕網(wǎng)關(guān)的壓力,一般一個網(wǎng)關(guān)接入的1000人左右,分多個網(wǎng)關(guān),不同網(wǎng)關(guān)的玩家信息,通過地圖管理器來轉(zhuǎn)發(fā) 。以下是服務(wù)器選擇性的用到的一些開源的軟件,并在此基礎(chǔ)上做了封裝:json4cpp、log4cpp、libevent、ACE、boost、mongoclient 。

推薦閱讀