999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

多人在線網絡游戲服務器的設計與開發①

2017-10-20 03:09:13吳晶晶戴智超
計算機系統應用 2017年10期
關鍵詞:游戲信息設計

吳晶晶,戴智超

(泉州師范學院 數學與計算機科學學院,泉州 362000)(福建省大數據管理新技術與知識工程重點實驗室,泉州 362000)(智能計算與信息處理福建省高校重點實驗室,泉州 362000)

多人在線網絡游戲服務器的設計與開發①

吳晶晶,戴智超

(泉州師范學院 數學與計算機科學學院,泉州 362000)(福建省大數據管理新技術與知識工程重點實驗室,泉州 362000)(智能計算與信息處理福建省高校重點實驗室,泉州 362000)

服務器的效率是網絡游戲能否提供高質量的網絡服務的重要因素之一.本文針對這一問題,提出了模板化回調策略改良現有的網絡游戲的會話信息交互.文中基于VisualStudio與C++,重點剖析服務器架設過程中的關鍵技術和策略,設計開發了經典網絡人物扮演游戲服務器,分別由“數據庫”、“賬號服務器”、“網絡服務”和“副本”組成.實驗結果表明,采用模板化回調技術,有效降低服務器信息交互的延遲.實踐證明,本文所討論的關鍵技術可應用于場景漫游、游戲開發等多個領域,具有一定的實際應用價值.

服務器效率; 多人在線網絡游戲; 模板化回調設計; 高質量的網絡服務

隨著Android平臺游戲、iPhone平臺游戲以及Web網頁游戲迅猛發展,3D游戲成為當前游戲的發展熱點.MMORPG游戲即多人在線角色扮演類游戲,是現在最為流行的經典網絡游戲形式.隨著高性能智能手機的普及,市場上出現了如“王者榮耀”、“陰陽師”等這類極為優秀的次時代MMORPG.但這依然不足以滿足手機游戲玩家的需求,玩家們開始追求手機平臺游戲與PC平臺游戲的聯動.

固然手機性能已經可與PC比肩,但手機網絡問題依然高懸.現今普及的4G網絡,其速度已經接近PC網絡水平,但網絡穩定性依然遠遠達不到PC網絡水平,而且高額的流量費用也成了手機游戲難以與PC聯動的巨大障礙.為實現手機網絡游戲與PC網絡游戲的聯動,必須搭建高網絡穩定性、低流量消耗、低延遲的高性能多平臺通用服務器.通過這樣的服務器來實現高質量網絡服務.

高質量的網絡服務受限于三大因素:首先是網絡運營商的網絡質量,由第三方提供,如電信或是聯通等運營商; 其次是網絡協議層和路由算法的優化程度[1,2],游戲開發者在這方面則作為用戶,故本文不對其進行討論; 最后是服務器的效率.

關于如何提高網絡服務質量,國內的研究大多數針對網絡協議層,但國內也有針對提高服務器效率的優秀策略.如王瑞彪等人基于IOCP機制完成服務器通信層的實現[3].該方案實現了多線程信息投遞并實時監聽,降低了信息重復發送、排序錯誤概率,并為用戶留下完整的操作接口.林泊等人基于J2EE集成了應用服務器框架[4],實現在不對讀取速度造成影響的情況下降低了維護和操作難度.

本文針對如何提高服務器效率,提出“模板化回調”策略改良現有的網絡游戲的會話信息交互.實踐證明,本文所討論的關鍵技術可應用于場景漫游、游戲開發等多個領域,具有一定的實際應用價值.

1 服務器設計

1.1 服務器設計

本文中的服務器對應于文中由基于Unity3D開發的MMORPG游戲客戶端.玩家在游戲客戶端注冊并登錄個人賬號,服務器則將玩家錄入的信息新建為SQL表并存入數據庫[5]中.服務器核心處理客戶端發送來的所有信息請求.以“組隊”請求為例,由一位“隊長”發起請求,在經過服務器處理后,服務器再將信息同步到所有賬號被請求的“隊員”.通過服務器實現的“組隊”如圖1所示.基于這種會話形式,本文實現了多個客戶端之間依賴于彼此的賬號,在服務器中進行數據同步.

在服務器的設計上,傳統的高同步幀率普通RPG游戲為30幀,高更新率的動作游戲為60幀.相較于傳統同步率,本文則采取10幀的同步率,10幀的設定足夠實現事件流暢同步,同時避免了過高同步率導致的流量的不必要流失.

圖1 服務器“組隊系統”的設計

1.2 設計策略

為了更好地符合用戶的需求,本文對于服務器的設計提出以下策略:

① 服務器應標識并處理客戶端的靜態全局型請求,例如賬號登錄、登出請求.

② 服務器應實時處理客戶端對于賬號數據的靜態全局型請求,例如像申請賬號、修改賬號密碼、獲得新的道具等需要修改數據庫靜態表的請求.

③ 服務器應標識并處理客戶端的動態非全局型請求,例如人物受傷后生命值降低、發起的攻擊被躲開等.服務器標識與處理如圖2所示.

圖2 服務器標識與處理

1.3 服務器結構

本文服務器系統結構如圖3所示,服務器基于自主研發的Core核心架構,通過核心連接“數據庫”、“賬號服務器”、“網絡服務”、“副本”四個子程序構成.服務器這樣的設計模式,使維護、調試難度降低,并且由于服務器運行基于Core核心架構,提高了運行效率和編譯耦合度.

圖3 服務器核心結構

2 關鍵技術

2.1 賬號服務器運行邏輯

賬號服務器是服務器中剝離出來的重要子程序之一.賬號服務器只處理客戶端發出的賬號申請,例如“登錄”、“登出”、“注冊”等行為.在服務器核心中,由“網絡服務”接收賬號請求,然后賬號服務器管理這些賬號請求,設定對應賬號的訪問狀態.然后將請求對應的處理方式經由“網絡服務”再次發向對應的賬號.賬號服務器運行邏輯如圖4所示,以下是對賬號服務器運行邏輯的分析:

(1)預先聲明定義好 Account類型,構造兩個Account對象的數組:“登錄賬號數組”和“登出賬號數組”.

(2)Run每一幀監聽客戶端請求,若存在“登錄請求”就在“登錄賬號數組”中創建一個新的Account對象,并把“登錄請求”傳入的Account信息寫入新建的Account對象中達到復制構造的特性.

(3)Run每一幀監聽客戶端請求,若存在“登出請求”就在“登出賬號數組”中保存“登出玩家”,方法同(2).

(4)登出處理是在Run函數一開始就執行的.在每次下一幀的開始,遍歷“登出賬號數組”,然后將“登錄賬號數組”中所有相同的Account刪除,再清除“登出賬號數組”.

2.2 服務器信息交互

本文采用常用的會話通信方式,完成服務器與客戶端之間的數據交互.對于每次客戶端行為,例如來自客戶端的一次登陸請求,客戶端都會向服務器發起一次會話.服務器接收該會話內容,并通過RTTI[6,7]技術的設計,將相應的會話內容進行識別并加以打包.通過網絡監聽器監聽服務器狀態,網絡監聽器的設計基于訪問者設計模式[8].通過這一系列過程,完成服務器和客戶端間的信息交互,信息交互的實現思路如圖5所示.

圖4 賬號服務器運行邏輯

① 若服務器處于可訪問狀態時,服務器可以不斷接受信息,并不斷處理信息.

② 若服務器處于不可訪問狀態時,則服務器中斷接收新信息,并處理完拋出當前未接受完的數據包.

③ 當信息接收失敗時,服務器直接放棄接收該數據包.在服務器將該數據包拋出后,服務器進入下一幀的數據讀取.

圖5 服務器信息交互

2.3 降低網絡延遲的策略

對于MMORPG游戲而言,網絡延遲是一個長久以來的難題.為了提供玩家良好的游戲體驗,服務器的設計不僅要實現“時刻等待并處理”玩家發送的信息,同時還要保證網絡延遲不會對玩家的游戲體驗造成可視的影響.但網絡狀況往往遭受例如路由協議、網絡運營商等因素的干擾,因而服務器的設計中,應有應對網絡延遲的策略[9].

本次服務器通信協議采用TCP協議,但TCP協議與服務器的平臺Windows的數據標準不同.TCP協議只允許數據以8bits為單位進行發送與接收,而Windows中默認C++以32bits為單位將數據整齊排列到內存中.此時將數據發送出,如圖6所示,數據在TCP協議層還需經過拆解,并讀取接收,這一過程造成無意義的消耗.

同時,不同于客戶端中的數據接收,在服務器中,數據的接收是短暫性的動作,生命周期較短.因而數據流始終都是局部變量.因此,服務器的數據接收器應該是全局的變量,并且始終處于可接收新數據的狀態.再者,因為客戶端的數據發送都是成段數據包一起發送,一旦出現了網絡延而中斷傳輸,數據包丟包將會引起很明顯的游戲卡頓現象.因此若不進行特別的處理,一次十幾毫秒的網絡延遲就會帶來數個或是數十個數據包丟失.

圖6 傳統的網絡處理

故而本文采取了提前拆解所有數據包,以字節為單位進行多次傳輸.這樣每次就算丟包,也只丟失幾個字節,而不是一整個包.并且,這個過程中,加快了數據交換的進程.因為數據在平臺中以被拆解為8bits單位,因而在進入TCP協議層時,可以略過繁雜的從32bits到8bits單位的拆解過程.通過提前割裂數據來對應高時延網絡,進而提高了網絡容斷性[10].數據拆解傳輸的基本思路如圖7.

2.4 提高服務器效率的特殊策略——模板化信息回調處理實現低延遲網絡

對應上文存在的問題,需要設計一個合理的算法來完成信息的處理.前文中已提到服務器接收是一個全局的行為,接收一次數據是一個極為短暫的行為,因為每次接收的數據僅僅只有8bits.如果每次都聲明一個新的接收器對象,然后把數據包賦值給接收器,這期間的構造和析構成本就太大了.

因而本文提出以下解決方法:不予接收器賦值,而是讓接收器內只存放一個函數指針.每次接收數據時,數據的緩沖將會在函數指針指向的函數中完成.然后對該函數再封裝一層,并在封裝層中進行函數的回調.這樣就可以避免了不斷對一個遠大于8bits的接收器進行構造和析構.最后,再將這一過程進行模板化,使接收器可以接受其他各種類型的數據.

圖7 對網絡延遲的特殊處理

出于提高效率的目的,本文采用了回調而不使用遞歸.如果使用遞歸,可以有效的利用運行棧[11],通常認為這是高效的做法,其實不盡然.因為這期間的數據接收,接收次數不可知.從理論上而言,只要電源不斷、數據包足夠大,服務器將為接受一個數據包,而不斷地接受它的每一個8bits.這可能導致二叉樹的深度永遠無法測量[12],這個問題很致命,意味著需求的內存將永遠無法被估測.據此,本文使用回調代替遞歸,回調信息處理關鍵代碼如下:

(1)定義模板用于導入數據包,定義與回調相關的函數指針.

(2)重載所需的運算符,滿足模板對象參與計算時的需求.

(3)通過模板中傳入的對象 Holder,找到 Holder中的函數指針Callback.

(4)調用異步接收函數對Callback進行調用,然后進入Callback的回調接收數據.

3 網絡游戲服務器實現與效能優化分析

本文采用上述的設計策略和關鍵技術,實現了基于VisualStudio與C++的MMORPG游戲服務器的開發.服務器運行狀態如圖8所示,當玩家登錄、登出時,服務器對其進行標記,方便服務器管理員實時觀測當前服務器運行狀態.以攻擊狀況為例,當攻擊成功時則產生攻擊特效如圖9所示,若玩家因為面朝方向錯誤時進行攻擊,則服務器如圖8標記該玩家攻擊失敗的信息.

圖8 網絡游戲服務器實現

同時,本設計引用第三方數據庫SQLite3,建立賬號對應的數據庫.服務器則以數據庫中SQL表為依據,記錄賬號對應的角色屬性、道具、任務狀況等個人信息,并在服務器運行期,以同步幀10為間隔不斷更新數據表內容.服務器管理員可以通過第三方軟件SQLiteStudio直接對數據庫內容進行操作,數據庫操作如圖10所示.

圖9 玩家正確攻擊時的特效

圖10 通過 SQLiteStudio 管理數據庫

本設計采取了模板化回調設計策略,對傳統網絡游戲服務器進行優化,服務器優化前后的效能比較如表1所示.從表中可以得出,使用該優化策略有效的降低了客戶端運行期的網絡延遲.同時該策略對于服務器運行期的數據丟包率也具有一定的優化作用.在降低了延遲和丟包率的基礎上,該策略對于服務器運行時的數據交互速度并未產生影響.

4 結語

本文基于VisualStudio與C++,研究經典網絡人物扮演游戲服務器的設計與開發.主要研究了通過提高服務器程序工作效率來提升網絡服務質量,從而使玩家獲得更好的游戲體驗.在服務器基本架構完成的基礎上,通過“模板化信息回調處理”策略使網絡延遲率下降,提高了網絡服務質量.

表1 服務器優化前后效能

1崔勇,吳建平,徐恪,等.互聯網絡服務質量路由算法研究綜述.軟件學報,2002,13(11):2065–2075.[doi:10.13328/j.cnki.jos.2002.11.002]

2羅赟騫,夏靖波,智英建,等.采用策略的 IP 網絡運行質量評估方法實現.小型微型計算機系統,2011,32(1):112–116.

3王瑞彪,李鳳岐,施玉勛,等.基于 IOCP 機制的網絡游戲服務器通信層的實現.計算機工程與應用,2009,45(7):75–78,81.

4林泊,周明輝,劉天成,等.一個 J2EE 應用服務器的 Web容器集成框架.軟件學報,2006,17(5):1195–1203.

5林培杰,朱安南,程樹英.Android 數據庫 SQLite 性能優化.計算機系統應用,2014,23(4):193–196.

6王玉亭,孫劍.應用程序框架中對象動態創建和RTTI機制的實現.計算機與現代化,2007,(8):50–52.

7何洪輝,劉驥宇.RTTI機制淺析.計算機與現代化,2010,(8):120–123.

9邱航,何明耘,陳雷霆.網絡游戲引擎中同步技術研究綜述.計算機應用研究,2007,24(1):14–17.

10張龍,周賢偉,王建萍,等.容遲與容斷網絡中的路由協議.軟件學報,2010,21(10):2554–2572.

11谷曉銘,霍瑋,桂劍,等.一種檢測運行棧與靜態數據區重疊的新方法.計算機工程與應用,2006,42(20):86–88,112.[doi:10.3321/j.issn:1002-8331.2006.20.027]

12王敏,趙曉雷.基于遍歷搜索二叉樹中最長路徑的算法研究.現代電子技術,2010,33(8):54–55,58.

Development of Multiplaying Online Game Server

WU Jing-Jing,DAI Zhi-Chao

(College of Mathematics and Computer Science,Quanzhou Normal University,Quanzhou 362000,China)(Fujian Provincial Key Laboratory of Data Intensive Computing,Quanzhou 362000,China)(Key Laboratory of Intelligent Computing and Information Processing,Fujian Province University,Quanzhou 362000,China)

Nowadays,the run-time performance of server becomes a crucial factor for online games.To solve the problem,this paper proposes a new method,which uses the callback strategy based on templates,to improve the run-time performance of game-server.Based on Visual Studio and C++,the key technology and strategy during the erection of server are researched.In the article,the server is divided into 4 parts:database,account server,network and map.The experimental result shows that the delay in server session reduces obviously by using the callback strategy based on templates.Through this experiment,it is proved that the key technology proposed can be used in VR environments,game development and many other fields and has practical value.

server efficiency; multiplaying-online-game; callback designing based on templates; high-quality network

10.13328/j.cnki.jos.1996.03.001]

吳晶晶,戴智超.多人在線網絡游戲服務器的設計與開發.計算機系統應用,2017,26(10):264–269.http://www.c-s-a.org.cn/1003-3254/6005.html

福建省科技廳自然科學基金面上項目(2017J01776); 福建省省屬高校科研專項項目(JK2015037); 泉州師范學院青年博士預研基金項目(2015QBKJ02); 泉州師范學院博士科研啟動項目(G17003)

2017-01-24; 采用時間:2017-02-20

猜你喜歡
游戲信息設計
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
設計之味
舒適廣告(2008年9期)2008-09-22 10:02:48
主站蜘蛛池模板: 久久青草免费91观看| 久久国产拍爱| 国产网友愉拍精品| 99久久精品久久久久久婷婷| 国内老司机精品视频在线播出| 亚洲无线一二三四区男男| 最新无码专区超级碰碰碰| 久久精品日日躁夜夜躁欧美| 亚洲日本中文字幕乱码中文| 91在线播放免费不卡无毒| 久热re国产手机在线观看| 国产欧美日韩综合在线第一| 久久一本日韩精品中文字幕屁孩| 欧美一区二区福利视频| 特级aaaaaaaaa毛片免费视频| 色哟哟国产精品一区二区| 激情网址在线观看| 中文字幕人成乱码熟女免费| 福利视频一区| 亚洲天堂网2014| 这里只有精品在线播放| 性色一区| 波多野结衣在线se| 亚洲成aⅴ人在线观看| av一区二区三区在线观看| 这里只有精品在线| 欧美激情第一区| 欧美视频二区| 国产一级视频久久| 亚欧乱色视频网站大全| 欧美激情综合一区二区| 色老头综合网| 亚洲日韩精品综合在线一区二区| 亚洲第一区精品日韩在线播放| 玖玖免费视频在线观看| 亚洲国产av无码综合原创国产| 成年人视频一区二区| 玖玖精品在线| 日韩在线中文| 欧美啪啪视频免码| 在线免费看黄的网站| 国产精品吹潮在线观看中文| 老司机久久99久久精品播放| 国产午夜福利亚洲第一| 亚洲欧洲日韩国产综合在线二区| 天天视频在线91频| 天堂va亚洲va欧美va国产| 麻豆精品久久久久久久99蜜桃| 午夜不卡福利| 亚洲大学生视频在线播放| 国产自产视频一区二区三区| 亚洲水蜜桃久久综合网站| 日a本亚洲中文在线观看| 久久婷婷五月综合97色| 国产传媒一区二区三区四区五区| h视频在线播放| 午夜视频日本| 国产激情第一页| 免费一级成人毛片| 亚洲成a∧人片在线观看无码| 欧美精品啪啪一区二区三区| 97se亚洲综合在线| 99久久精品国产综合婷婷| 欧美色图第一页| аv天堂最新中文在线| 亚洲第一黄片大全| 97在线观看视频免费| 国产嫖妓91东北老熟女久久一| 久久久久久高潮白浆| 亚洲综合色吧| 久久综合国产乱子免费| 美女扒开下面流白浆在线试听| 亚洲日本中文字幕天堂网| 欧美影院久久| 女人18毛片一级毛片在线| 免费无码在线观看| 国产美女无遮挡免费视频网站| 91系列在线观看| 真实国产精品vr专区| 欧美福利在线| 久久精品66| 最新加勒比隔壁人妻|