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

基于Unity3D的多通道下服務器客戶端同步

2015-09-27 00:33:25汪瑞四川大學計算機學院成都610065
現代計算機 2015年24期
關鍵詞:界面游戲

汪瑞(四川大學計算機學院,成都 610065)

基于Unity3D的多通道下服務器客戶端同步

汪瑞
(四川大學計算機學院,成都610065)

0 引言

在計算機技術飛速發展,信息化水平不斷提高的今天,以計算機集群為驅動的多通道技術已經越來越為人所熟知,得到普遍應用。多通道下的服務器客戶端同步技術是指當系統中存在單個服務器,多個客戶機時,保證每個客戶機都與服務器同步運行。而基于Unity3D引擎的多通道同步技術則需要先使用Unity分別編譯出服務器和客戶機程序,然后保證客戶機與服務器同步運行,更具挑戰性和創新性,當結合3D球幕的時候,會帶來諸如3D全景游戲等不一樣的體驗。

在基于Unity3D引擎的多通道同步技術的設計中,需要考慮很多問題,如多主機下的碰撞檢測(如何保證能在服務器和客戶機上都能實現碰撞檢測,并產生碰撞的粒子效果);再如畫面的同步更新,這里主要關注和解決的是動態目標,包括人物移動、子彈飛行等的同步效果。基于Unity3D引擎的多通道同步技術就是為了解決這些問題而設計的,通過該項技術,用戶可以正確實現C/S同步,并且可以清楚看見同步效果,如主角移動、子彈飛行等。

1 多通道下服務器與客戶端同步的關鍵技術與實現過程

網絡同步基本要義:實現服務器與客戶端的交互以及客戶端與客戶端的交互,而這首先要建立服務器與客戶端之間的連接,組成C/S結構,服務器一般相對獨立,可支持多個客戶端的訪問。服務器與客戶端交互原理為:客戶端向服務器發送請求,服務器給予反饋;或者服務器向客戶端發送請求,客戶端做出應答。在Unity引擎下,可以使用兩種方法建立客戶端與服務器之間的連接:

(1)基于UDP協議的無連接套接字(Socket)方式

使用無連接的套接字,我們能夠在自我包含的數據包里發送消息,采用獨立的讀函數讀取整個消息所讀取的消息是使用獨立的發送函數發送的。UDP是一種無連接的協議,因此,為了使服務器端應用能夠發送和接收UDP數據包,我們必須要做到以下兩點:創建一個Socket對象;將創建的套接字對象(Socket)與本地IPEndPoint(IP地址/端口組合)進行綁定。這樣,所創建的套接字就能夠在IPEndPoint上接收流入的UDP數據包或者將流出的UDP數據包發送到網絡中任意其他設備上。具體創建過程參見圖1。

圖1 簡單的UDP服務器的創建流程

建立UDP客戶端應用流程與服務器非常相似,都必須先要建立套接字對象以及本地IPEndpoint對象(IP地址/端口組合),由于客戶機不需要在指定的UDP端口等待流入的數據,因此不需要使用Bind()方法,也即不用將套接字Socket與IPEndpoint對象進行綁定,而是使用在數據發送時系統隨機指定的一個UDP端口,并且使用同一端口接收返回的消息。

(2)Unity系統內的網絡方法(Network)

此時在本地創建服務器時,為了保證服務器能接收到客戶端發來的請求,需要給接收請求腳本所綁定的對象添加網絡視圖組件(一般是添加到主攝像中)要先在場景中添加網絡視圖組件,并判斷聯網狀態,然后再創建服務器連接,具體流程參見圖2。

在客戶端的創建過程中,為了確保客戶端能向服務器發送消息請求,并且使得服務器能夠將來自某一客戶端的請求返回給(廣播消息)連接到服務器的所有客戶端,也必須要先添加網絡視圖組件—Network View;之后可以使用 RPC向服務器發送消息:networkView.RPC(“Function”,RPCMode;Message);其 中Function為服務器腳本中已經定義的接收消息函數:[RPC]void Function();RPCMode為發送消息的模式,有五種,如向服務器發送;發送給除發送者外,當前連接到服務器的每一個人;發送給連接到服務器的所有人等。Message為發送的消息。本文的實驗及實驗結果是采用第二種方法實現的。

圖2  Unity創建服務器流程

2 太空射擊游戲制作

本文設計游戲模式為太空射擊游戲,游戲以太空為背景,在游戲中,主角和敵人是不同的太空飛行器,游戲開始后,主角會迎著敵方的火力前進,并能向敵人發射子彈并摧毀敵人。為了更好的表現同步效果,游戲中設定兩個主角Player1,Player2;Player1由創建游戲的服務器端玩家控制,Player2由聯入局域網服務器的客戶端玩家控制,在游戲運行過程中,兩個游戲中的玩家信息(如位置、射擊等)會相互同步實時更新。另:部分游戲模型來源于網絡。

此節僅說明游戲場景背景的創建和游戲主角Player(飛船)的添加,其他的諸如攝像機和燈光的設計、添加敵人等由于篇幅關系不在贅述。

游戲背景的設計:菜單欄選擇File->New Scene,創建一個新場景;菜單欄選擇GameObject->Create Other->Plane,創建一個平面體作為天空背景模型;在Project右鍵選擇Create->Material創建一個材質球,命名為Background,選擇Select指定其貼圖;然后將Background材質球拖至Scene窗口的天空背景模型上為其指定材質。

創建主角:在Project窗口選中Player1.fbx,將其拖動到Hierarchy窗口創建服務器端玩家飛船模型的游戲體,并在Inspector窗口設定其坐標(Position),旋轉角度(Rotation)和縮放程度(Scale)。同理可添加客戶端對應玩家飛船Player2。

圖3 游戲場景效果圖

其他游戲元素的設定略,編譯各游戲腳本略。最終游戲場景效果如圖3。

3 服務器和客戶端同步的實現(交互過程的實現)

我們在游戲場景中添加的兩個飛船分別命名為Player1,Player2,分別由服務器和客戶端兩個玩家控制,類似于局域網游戲模式。當創建游戲的玩家1(服務器端)或者連接到服務器的玩家2(客戶端)按下鍵盤上的W、S、A、D鍵時,能控制所對應的飛船Player1、Player2上下左右飛行,當按下F鍵時,飛船能沿著飛行方向發射子彈,擊打敵人。我們要做的同步即是將服務器端界面變化反映到客戶端或者將客戶端界面作出的更新反映到服務器游戲中,并且做出相應更新。例如當建立游戲的服務器端玩家按下W鍵控制Player1向前移動的時候,服務器端游戲程序會響應,并發送信號(發送W字母信息)到客戶端程序,客戶端接收到該信號,也作出相同的響應(客戶端界面上人物Player1也會向前移動);又或者當在客戶端按下F鍵,飛船Player2向敵人發射子彈,在服務器端飛船Player2也會向敵人發射子彈……

聲明發送網絡消息函數:[RPC]

//初始化服務器

以服務器端發送W鍵為例:[RPC]

當服務器端玩家連續按下F鍵,操控左邊飛船Player1發射子彈時,可以看到在客戶端游戲界面上,飛船Player1也同時向前發射子彈,同時在服務器界面左上角顯示了連接到服務器的客戶端信息 (端口號等)。這表明服務器已正確創建,客戶端已經連接入該服務器,并且二者能夠正確的進行交互,且程序執行效果好,靈敏度較高。

服務器端及客戶端運行效果分別如圖4、圖5所示:

圖4 服務器端運行界面

圖5 客戶端運行界面

4 結語

介紹兩種在Unity引擎內創建服務器和客戶端的過程,并制作了一個簡單的射擊游戲具體實現了第二種方法。同時在日常的一些項目開發中使用該種方法,效果十分良好。

[1]宣雨松,王軍花.Unity3D游戲開發[M].北京:人民郵電出版社,2012.

[2]金璽曾.Unity3D手機游戲開發[M].北京:清華大學出版社,2013.

[3]Richard Blum.C#網絡應用編程[M].高春蓉譯.北京:電子工業出版社,2003.

[4]周存杰著.Visual C#.NET網絡核心編程[M].北京:清華大學出版社,2002.

Unity3D;Multi-Channel;Server;Client

Server and Client Synchronous in Multi-Channel Based on Unity3D

WANG Rui
(College of Computer Science,Sichuan University,Chengdu 610065)

1007-1423(2015)24-0026-04

10.3969/j.issn.1007-1423.2015.24.007

汪瑞(1991-),男,安徽安慶人,碩士研究生,研究方向為圖形圖像技術

2015-06-19

2015-07-21

近年來,多通道技術已經日益成熟并得到廣泛應用,而基于Unity3D引擎的多通道下服務器客戶端同步,是進行Unity多人游戲開發的關鍵步驟。介紹兩種創建服務器和客戶端的方法,并使用第二種方法設計適合局域網中兩名玩家操作的天空射擊游戲,實驗結果表明,該方法可行且靈敏度較高。

Unity3D;多通道;服務器;客戶端

國家863計劃項目(No.2013AA013902)

In recent years,the multi-channel technology has become more and mature,server and client synchronous in multi-channel based on U-nity3D is the key process to develop multi-players game in Unity.Introduces two methods to create server and client,and uses the second method design the spaceshotting game suitable for two players in the local area network,the experimental result shows that this method is feasible and has high sensitivity.

猜你喜歡
界面游戲
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
游戲
電子顯微打開材料界面世界之門
人機交互界面發展趨勢研究
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
主站蜘蛛池模板: 国产经典免费播放视频| 成人自拍视频在线观看| 精品撒尿视频一区二区三区| 亚洲精品第一页不卡| 精品国产香蕉伊思人在线| 91精品啪在线观看国产| 免费毛片网站在线观看| 99精品视频播放| 国产无码在线调教| 久草国产在线观看| 国内精品久久久久久久久久影视 | 欧美亚洲一二三区| 91丨九色丨首页在线播放 | 一级爱做片免费观看久久| 无码精油按摩潮喷在线播放| 亚洲无码久久久久| 国产福利免费视频| 成人免费一级片| 久草视频一区| 欧美亚洲综合免费精品高清在线观看| 亚洲天堂免费观看| 在线观看网站国产| 国产福利小视频高清在线观看| 亚洲第一成人在线| 99久久精品国产麻豆婷婷| 亚洲日韩精品综合在线一区二区| 欧美亚洲一区二区三区在线| 亚洲欧洲一区二区三区| 91视频青青草| 免费全部高H视频无码无遮掩| 亚洲欧洲日韩综合色天使| 91外围女在线观看| 国产在线一二三区| 91网址在线播放| 91色爱欧美精品www| 爆乳熟妇一区二区三区| 国产激情国语对白普通话| 中文字幕乱码二三区免费| 国产极品美女在线| 亚洲中文字幕av无码区| 久久精品无码中文字幕| 欧美日韩在线观看一区二区三区| 欧美无遮挡国产欧美另类| 91免费精品国偷自产在线在线| 伊人久久婷婷| 亚洲日本中文综合在线| 伊伊人成亚洲综合人网7777| 成人91在线| 欧美一级夜夜爽www| 毛片免费观看视频| 三级毛片在线播放| 麻豆国产原创视频在线播放| 亚洲日韩精品无码专区97| 亚洲黄色高清| 67194亚洲无码| 人人爽人人爽人人片| 国产交换配偶在线视频| 国产伦片中文免费观看| 97国产成人无码精品久久久| 欧美日韩专区| 久久99精品久久久久久不卡| 国产高清免费午夜在线视频| 免费 国产 无码久久久| 久久精品中文字幕少妇| 天堂在线亚洲| 97se亚洲综合不卡| 操美女免费网站| 亚洲免费福利视频| 亚洲天天更新| 亚洲Aⅴ无码专区在线观看q| 欧美国产综合视频| 国产成人亚洲毛片| 中文字幕亚洲专区第19页| 影音先锋丝袜制服| 四虎影视8848永久精品| 精品欧美日韩国产日漫一区不卡| 无码高潮喷水在线观看| 亚洲精品无码不卡在线播放| 毛片网站在线看| 香蕉伊思人视频| 中文字幕啪啪| 亚洲日韩国产精品无码专区|