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

Unity引擎下多人在線網(wǎng)絡游戲的設計與開發(fā)①

2020-05-22 04:46:02劉賢梅
計算機系統(tǒng)應用 2020年5期
關鍵詞:界面游戲系統(tǒng)

劉賢梅,劉 俊,賈 迪

(東北石油大學 計算機與信息技術學院,大慶 163311)

隨著虛擬現(xiàn)實技術和數(shù)字媒體技術的不斷發(fā)展,游戲產(chǎn)業(yè)的關注度也越來越高,數(shù)字游戲經(jīng)濟在整體經(jīng)濟中正占據(jù)著一定的比重.目前開發(fā)游戲的引擎平臺很多,而Unity 因其所具有的跨平臺性、易操作性、性能優(yōu)良等特點受到了市場的青睞[1].本文利用Unity3D 游戲開發(fā)引擎設計了一款多人在線對戰(zhàn)游戲.其中包括行走控制、人工智能系統(tǒng)、界面系統(tǒng)、服務端框架、客戶端框架、房間系統(tǒng)、戰(zhàn)場系統(tǒng)等多項內(nèi)容.多個玩家可以通過在線注冊、在線登錄、房間選擇等流程進入游戲,最終體驗在線3D 網(wǎng)絡游戲的娛樂.

目前,游戲產(chǎn)業(yè)正從傳統(tǒng)的2D/2.5D 游戲、單機游戲向新興的3D 游戲和在線網(wǎng)絡游戲發(fā)展.而3D 游戲和網(wǎng)絡游戲的興起就伴隨著技術和算法的改變.傳統(tǒng)的2D 路徑搜索方式已經(jīng)不能適用于3D 場景,因此需要改變或重新設計相應的尋路算法.游戲中的界面系統(tǒng)在游戲中占據(jù)了重要的地位,目前的UI 設計與交互費時費力,影響游戲的開發(fā)進度,急需設計出一種UI 框架來減少界面系統(tǒng)的開發(fā)周期.對于網(wǎng)絡游戲而言,最重要的就是玩家場景的一致性和實時性.一致性就需要建立對應的網(wǎng)絡通信協(xié)議,而實時性就要減少網(wǎng)絡傳書中的延遲誤差.

針對上述問題,本文使用Visual Studio 2017 開發(fā)平臺搭建服務器,實時進行數(shù)據(jù)傳輸與交換;采用Unity 引擎完成客戶端的開發(fā),使用MySQL 數(shù)據(jù)庫存儲用戶數(shù)據(jù).通過通信協(xié)議的搭建、UI 框架的設計、預測式位置同步方法的創(chuàng)建、NPC 的應用等完成了整個游戲的開發(fā),滿足了玩家的娛樂心理.

1 游戲設計

1.1 游戲背景

本游戲是一款西式魔幻風格的動作角色扮演游戲(ARPG),主要以傳說系列、伊蘇系列等經(jīng)典 RPG 游戲的感覺和理念而創(chuàng)作.游戲故事主要講述的是兩個部落的種族人民為了各自的利益,尋找陸地資源,在泰雷諾亞大陸上拼殺、搶奪資源的故事.

1.2 游戲功能

為了能夠滿足玩家的娛樂心理,同時也使游戲充滿趣味性,所以設計了如下功能:

1)注冊登錄:玩家首先需要進行玩家注冊,錄入玩家信息后系統(tǒng)會自動將信息添加到數(shù)據(jù)庫中.注冊成功后,在登錄界面輸入玩家信息進入游戲.

2)房間創(chuàng)建和加入:玩家登錄成功后,可以加入已經(jīng)創(chuàng)建的房間中,通過點擊加入按鈕加入,若房間人數(shù)已滿,則加入失敗;反之加入成功,等待游戲開始.玩家也可以自己創(chuàng)建房間,等待其他玩家的加入.

3)游戲運行:游戲運行的過程中,場景里除了玩家之外,還加入了怪物NPC.NPC 會有自身的一套行為,它們會在固定的路線上進行巡邏、攻擊、躲避等行為,增強游戲的樂趣.

4)玩家控制:玩家在游戲中通過鼠標控制角色的移動,或者通過鼠標點擊的方式讓角色自動尋路.在漫游的過程中撿取補給、增添裝備、強化技能.當遇見敵方玩家或者怪物時,釋放不同的角色技能來消滅對方.

5)特效、音效:玩家攻擊、釋放技能、死亡時,系統(tǒng)會給出相應的特效或者音效,使游戲的畫面感和浸入感增強.

1.3 系統(tǒng)整體架構

圖1描述了本文所提出的游戲系統(tǒng)結構,多人在線網(wǎng)絡游戲系統(tǒng)包含客戶端和服務器端,客戶端包含接口、數(shù)據(jù)、界面、資源、網(wǎng)絡、房間和戰(zhàn)斗管理系統(tǒng).服務器端處理游戲運行時產(chǎn)生的數(shù)據(jù),包括玩家數(shù)據(jù)、房間數(shù)據(jù)和戰(zhàn)場數(shù)據(jù)等,同時對網(wǎng)絡通信進行管理.游戲支持手機、PC 等多種運行終端,并且具有良好的自適應性.

圖1 游戲系統(tǒng)結構圖

系統(tǒng)經(jīng)過人物建模和場景建模后進行場景集成,將集成好的場景文件導入到Unity3D 中,完成游戲場景的搭建.之后完成數(shù)據(jù)庫的設計,服務器、客戶端的制作.各個模塊相互獨立、耦合度低,便于后期的維護,能夠提升軟件開發(fā)的效率.

1.4 游戲設計難點

本文在線網(wǎng)絡游戲設計的難點在于游戲服務器端的設計,服務器系統(tǒng)架構圖如圖2所示.服務器端包含一個總服務器和多個分組服務器,系統(tǒng)為每一個創(chuàng)建的游戲房間分配一個分組服務器,它負責當前房間的消息處理和轉(zhuǎn)發(fā).總服務器負責玩家的登錄注冊以及分組服務器的管理.

圖2 服務器系統(tǒng)結構圖

2 關鍵技術及系統(tǒng)實現(xiàn)

2.1 網(wǎng)絡通信協(xié)議構建

通信協(xié)議是指雙方實體完成通信或服務所必須遵循的規(guī)則和約定.通過通信信道和設備互連起來的多個不同地理位置的數(shù)據(jù)通信系統(tǒng),要使其能協(xié)同工作實現(xiàn)信息交換和資源共享,它們之間必須具有共同的語言.交流什么、怎樣交流及何時交流,都必須遵循某種互相都能接受的規(guī)則.通信協(xié)議的構建可以讓通信雙方通過制定好的規(guī)則來進行數(shù)據(jù)的傳輸.在網(wǎng)絡游戲的設計中,網(wǎng)絡協(xié)議是最重要的,是整個游戲的核心.客戶端之間、客戶端與服務器之間通過協(xié)議完成消息的傳輸,保證游戲場景的一致性.

為了提高開發(fā)效率及控制成本,設計一種便捷、清晰、高效的協(xié)議格式.本文設計了兩種通信協(xié)議格式,圖3是客戶端向服務器發(fā)送的協(xié)議格式,圖4是服務器向客戶端發(fā)送的協(xié)議格式.

圖3 客戶端向服務器發(fā)送的協(xié)議格式

圖4 服務器向客戶端發(fā)送的協(xié)議格式

協(xié)議設計的思想是按照游戲中客戶端的請求類型進行設計的.游戲中大致有3 種請求類型:用戶類型、房間類型和戰(zhàn)斗類型,也就是協(xié)議格式中的RequestCode,根據(jù)請求類型細分成具體的請求方式,也就是格式中的ActionCode.Length 和Data 分別代表協(xié)議長度和協(xié)議內(nèi)容.這種協(xié)議的設計簡明清晰,數(shù)據(jù)小、解析快,服務器端可快速解析并轉(zhuǎn)發(fā),從而提升游戲運行速率.

當客戶端向服務器發(fā)送請求時,協(xié)議格式如圖3所示.例如當進行登錄請求時,需要將玩家的用戶名(id)和密碼(password)傳送至服務器,服務器接收后以此作為憑據(jù)查詢數(shù)據(jù)庫檢查用戶名和密碼是否存在.

當服務器向客戶端返回請求結果時,協(xié)議格式如圖4所示,ActionCode 與之前客戶端發(fā)送請求中的ActionCode 相對應,例如之前的登錄請求,服務器首先解析協(xié)議,然后查詢數(shù)據(jù)庫,若能匹配到請求中的用戶名和密碼,則返回string 類型的字符串Success,表示成功,否則返回Fail 表示失敗.客戶端收到服務器的返回結果時,首先解析協(xié)議,解析出協(xié)議中的各個字段,當解析到的結果為Success 時,表示登錄成功,進入到房間界面.否則,系統(tǒng)給出提示:登錄失敗.

系統(tǒng)是基于Socket 的通信方式,協(xié)議的發(fā)送是調(diào)用Socket 中的Send 函數(shù).圖5是服務器和客戶端通信的時序圖.

圖5 服務器與客戶端的通信時序圖

2.2 UI 框架設計

UI 設計包括對游戲的人機交互、操作邏輯、界面美觀的整體設計.好的UI 設計不僅讓游戲變得更有樂趣、更有品味,更讓游戲的操作變得舒適簡單、愉悅自由.因此設計出一種通用的UI 框架對于提升游戲的開發(fā)進度有著很大的作用.本文的UI 框架設計方案是:首先,每一個界面對應一個面板(Panel),每一個面板對應一個類.在這個類中編寫面板的功能,再設計一個界面管理器,用它來控制界面的顯示和關閉.界面管理器中有兩個基本方法:分別是Open 和Close.

所有的面板類繼承一個面板基類,面板基類中有OnInit、OnShow、OnClose 等3 個固定的方法.

當調(diào)用界面管理器中的Open 方法時,界面管理器會依次調(diào)用對應面板中的OnInit 和OnShow.在這兩個函數(shù)中可以添加一些初始化方法,包括按鈕事件監(jiān)聽、網(wǎng)絡消息監(jiān)聽等.在調(diào)用的Close 方法時,界面管理器會調(diào)用面板類的OnClose 方法,在OnClose 可以添加一些資源釋放的功能,例如取消網(wǎng)絡消息監(jiān)聽.在OnInit 方法中設置skinPath 和layer,skinPath 代表皮膚路徑,系統(tǒng)會根據(jù)該路徑動態(tài)加載Resourses 中的界面資源.layer 代表層級,可以設置面板的優(yōu)先級,確定面板的上下層級關系.例如提示面板會顯示在其他功能面板之上,應該設置為最高優(yōu)先級.

界面管理器PanelManager 和面板基類的邏輯結構如圖6和圖7所示.

圖6 界面管理器邏輯結構圖

圖7 界面基類邏輯結構圖

界面管理器中的panels 是一個字典,它會保存所有已經(jīng)打開的面板,以便阻止重復打開,方便實現(xiàn)關閉功能.layers 是層級列表,維護每個面板的層級.

每個面板通過動態(tài)加載資源,然后進行實例化.每個面板都有自己單獨的面板類,繼承自面板基類,面板基類如圖7所示.在OnShow()方法中進行組件的初始化,例如找到登錄面板上的登錄按鈕組件,之后添加登錄按鈕的事件監(jiān)聽,當玩家點擊登錄按鈕時,向服務器發(fā)送登錄協(xié)議.

2.3 NPC 設計

NPC 的加入可以使游戲更加具有刺激性,使玩家能夠產(chǎn)生興趣[2].本文的NPC 設計采用的是動畫狀態(tài)機.目前游戲中加入了兩種怪物,為此系統(tǒng)根據(jù)怪物的特點,攻擊力的強弱,屬性值的差異、技能的多少設計了兩種動畫狀態(tài)機.

圖8表示的是一般怪物—哥布林動畫狀態(tài)機,因其能力較弱,所以加入了較少的動畫和攻擊技能.圖9展示的是Boss 怪物的狀態(tài)機,由于屬性強,給其加入了多種攻擊技能和多種狀態(tài)動畫.

圖8 哥布林動畫狀態(tài)機圖

圖9 Boss 動畫狀態(tài)機圖

系統(tǒng)設計的怪物有3 種狀態(tài):巡邏,追趕玩家和戰(zhàn)斗,如圖中的Walk、Run 和Attack.當怪物距離玩家較遠時,怪物在固定的幾個點來回緩慢行走(Walk),同時實時觀察自己周圍是否有玩家進入;當怪物法線有玩家進入周圍時,進入追趕玩家狀態(tài),朝著玩家的方向奔跑(Run);在追趕狀態(tài),當玩家跑遠了,怪物發(fā)現(xiàn)玩家已經(jīng)不在自己范圍內(nèi)時則返回巡邏狀態(tài);反之當追趕上玩家,即玩家在自己攻擊范圍內(nèi)時則進入攻擊狀態(tài),此時不再移動,而是朝向玩家播放攻擊動畫.

2.4 系統(tǒng)特效

一個比較成功的游戲中往往會有許多華麗炫酷的特效,包括場景特效和人物技能特效.本文的游戲中也加入了相應的特效設計.場景特效包括火焰、煙霧特效等,人物技能特效包括閃電光特效、刀光特效、煙霧魔法特效等.每一個特效都是由多種效果組合完成.圖10展示的是游戲中的特效效果.

圖10 特效效果圖

2.5 游戲運行及操作控制

本文設計的游戲內(nèi)存和內(nèi)核的使用率低,對于GPU 硬件的要求較高.基本運行和最高運行時的需求如表1.

表1 游戲運行需求

玩家可通過鼠標和鍵盤的方式控制角色,行走時可使用鼠標點擊地面或者按WASD 鍵控制人物在場景中的走動.同時,Q、R、T 按鍵為人物技能鍵,B 為背包鍵.

3 關鍵算法

3.1 導航網(wǎng)格尋路算法

在游戲?qū)?zhàn)的過程中,玩家角色需要在游戲場景中行走,因此需要解決角色的尋路問題.當玩家點擊地面時,角色會自動走向點擊的位置.由于Unity3D 自帶的尋路方式精確度不夠,不能很好的滿足玩家的心理.所以本文在此基礎上進行改進,使之能夠玩家的需求.

3.1.1 三角導航網(wǎng)格的生成

導航網(wǎng)格是一個凸多邊形的集合,凸多邊形指其內(nèi)部任意兩點的連線都在其內(nèi)部,每個單元在路徑搜索的過程中高度獨立.本文首先利用建模工具對地圖進行處理,剔除障礙物所在區(qū)域,生成可行走區(qū)域的多邊形網(wǎng)格地圖.然后對多邊形網(wǎng)格進行三角剖分,使尋路算法能夠運用于多邊形網(wǎng)格.本文的多邊形網(wǎng)格地圖三角剖分采用的是一種快速約束Delaunay 三角剖分算法[3].算法如下:

輸入:navmesh 多邊形導航網(wǎng)格數(shù)據(jù)輸出:Delaunay 三角網(wǎng)格1.讀取網(wǎng)格信息,保存邊界和頂點信息;2.遍歷邊界邊,作為起始約束邊;3.如果頂點不為空;4.判斷可見點;5.創(chuàng)建三角形外接圓和外接圓的包圍盒;6.遍歷外接圓包圍盒的所有頂點;7.判斷DT 點;8.連接兩點之間的線;9.返回三角形,返回第3 步.

三角剖分的前后效果如圖11所示.

圖11 三角剖分效果圖

3.1.2 網(wǎng)格尋路

本文基于改進A*算法[4]的3D 場景的自動尋路.網(wǎng)格尋路的效果如圖12所示,藍色區(qū)域為可行走區(qū)域,其他為不可行走區(qū)域.

3.2 預測式位置同步算法

由于存在網(wǎng)絡延遲,很難做到實時的、精確的位置同步,只能通過各種方法來盡量減少誤差[5].傳統(tǒng)的有瞬移式位置同步算法和移動式位置同步算法,但是游戲體驗不好,誤差比較大,實時性較差.所以本文采用預測式位置同步來提升用戶的體驗,減少誤差.

在某些有規(guī)律可循的條件下,比如玩家勻速或者勻加速運動,我們能夠預測玩家在接下來某個時間點的位置,讓玩家提前走到預測的位置上去,這就是預測算法.

圖12 路徑生成

假設玩家的移動速度保持不變,同步時間不變,玩家2 可以預測玩家1 的后續(xù)同步位置.如圖13所示.玩家1 經(jīng)過B 點時發(fā)送同步信息,玩家2 根據(jù)s=vt計算得出下一次同步時玩家1 應移動到C點,然后以速度v向C點移動.此時的距離誤差為v·t(延遲).

圖13 剛剛同步位置的距離誤差

如圖14所示,玩家2 始終保持著速度v向預測位置靠近,距離誤差一直是v·t(延遲).若忽略網(wǎng)絡延遲時間,則誤差為0.

圖14 同步位置后的距離誤差

玩家1 不可能一直保持恒定的速度(包括速度的大小和方向).玩家2 雖然可以計算最近兩次同步信息的差值來獲取較為準確的移動速度,但是誤差還是存在.但總體上這種誤差在可接受范圍之內(nèi),平均誤差依然為0.

4 系統(tǒng)優(yōu)化

游戲制作完成后,需要對系統(tǒng)進行優(yōu)化以此來提升游戲運行的流暢度和玩家的游戲體驗.為此,本文采用了以下幾個技術來優(yōu)化系統(tǒng).

(1)LOD (Level Of Detail)技術

LOD 是對模型建立了一個模型金字塔,根據(jù)攝像機距離對象的遠近,選擇使用不同精度的模型.它的好處是可以在適當?shù)臅r候大量減少需要繪制的頂點數(shù)目[6].圖15展示了使用LOD 技術后油桶從一個完整網(wǎng)格到簡化網(wǎng)格,最后完全被剔除的例子.當距離攝像機較近的情況下使用LOD0 層級的模型,即高精度模型;較遠的情況下使用LOD2 層級,即低精度模型.

圖15 使用LOD 技術效果圖

(2)遮擋剔除技術

遮擋剔除是當一個物體被其他物體遮擋住而不在攝像機的可視范圍內(nèi)時不對其進行渲染.遮擋剔除前后的效果如圖16所示.使用該技術后,系統(tǒng)會自動剔除相機視野中被遮擋的物體.

圖16 使用遮擋剔除技術效果圖

(3)Lightmaps 技術

主要用于場景中整體的光照效果.這種技術主要是提前把場景中的光照信息存儲在一張光照紋理中,然后在運行時刻只需要根據(jù)紋理采樣得到光照信息即可.與之配合的還有Light Probes 技術.

5 結語

本文實現(xiàn)了多人在線網(wǎng)絡游戲系統(tǒng),其中包括行走控制、人工智能系統(tǒng)、界面系統(tǒng)、服務端框架、客戶端框架、房間系統(tǒng)、戰(zhàn)場系統(tǒng)等多項內(nèi)容.游戲操作簡易,界面美觀,畫面感強,在后期的體驗中整體上滿足玩家的需求.

后期的工作是在游戲中添加更多的功能模塊,為游戲增加不同場景的地圖和不同游戲角色,使玩家有更多的選擇.

猜你喜歡
界面游戲系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發(fā)方法研究
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
人機交互界面發(fā)展趨勢研究
數(shù)獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
主站蜘蛛池模板: 手机成人午夜在线视频| 又猛又黄又爽无遮挡的视频网站 | 麻豆AV网站免费进入| 欧美一级99在线观看国产| 精品久久人人爽人人玩人人妻| 久青草网站| 国产成年女人特黄特色毛片免| 欧美日韩一区二区三区在线视频| 亚洲欧美极品| 国产黄色免费看| 男人天堂亚洲天堂| 免费一级成人毛片| 亚洲最黄视频| 五月天香蕉视频国产亚| 丝袜无码一区二区三区| 国产亚洲欧美日韩在线观看一区二区| 国产91在线免费视频| 亚洲天堂伊人| 最新精品国偷自产在线| 亚洲国产中文欧美在线人成大黄瓜| 国产av一码二码三码无码| 日韩专区欧美| 美女扒开下面流白浆在线试听| 五月天婷婷网亚洲综合在线| 中文字幕日韩视频欧美一区| 午夜少妇精品视频小电影| 中文字幕人成人乱码亚洲电影| 97综合久久| 原味小视频在线www国产| 九色综合视频网| 亚洲视频无码| 国产一级精品毛片基地| 亚洲资源站av无码网址| 伊人久久大香线蕉aⅴ色| 九色免费视频| 91国内外精品自在线播放| 啊嗯不日本网站| 自拍偷拍欧美| 国产毛片片精品天天看视频| 51国产偷自视频区视频手机观看 | 中国精品自拍| 久久美女精品| 色偷偷一区| 欧美在线精品怡红院| av手机版在线播放| 国产精品无码AV片在线观看播放| 欧洲日本亚洲中文字幕| 岛国精品一区免费视频在线观看| 18黑白丝水手服自慰喷水网站| 亚洲精品高清视频| 99热精品久久| 国产三级精品三级在线观看| 国产不卡一级毛片视频| 久久黄色影院| 欧美日韩免费观看| 日韩欧美视频第一区在线观看| 久久这里只有精品66| 婷婷激情亚洲| 久久久久亚洲AV成人网站软件| 国产91在线|中文| 呦女亚洲一区精品| 久草视频福利在线观看| 国产成人精品日本亚洲| 狠狠色狠狠色综合久久第一次| 日本成人福利视频| 人妻丝袜无码视频| 亚洲 日韩 激情 无码 中出| 国产特一级毛片| 最新国产网站| 欧美全免费aaaaaa特黄在线| 波多野结衣久久高清免费| 无码人中文字幕| 99久视频| 四虎精品国产永久在线观看| 一级毛片在线播放免费观看| 国产内射一区亚洲| 亚洲一级毛片免费看| 久久黄色视频影| 欧美在线国产| 国产免费久久精品99re不卡| 亚洲青涩在线| 激情六月丁香婷婷四房播|