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
主站蜘蛛池模板: 精品国产网站| 成人年鲁鲁在线观看视频| 四虎影视国产精品| 国产福利2021最新在线观看| 亚洲国产成人无码AV在线影院L | 国产成人精品一区二区三区| 久久精品丝袜| 久久综合伊人 六十路| 亚洲日韩精品综合在线一区二区| 国产一二视频| 伊人天堂网| 热久久国产| 欧美国产菊爆免费观看| 激情视频综合网| 国产精品久线在线观看| 四虎综合网| 在线精品亚洲国产| 成年人国产网站| 国产男女XX00免费观看| 嫩草影院在线观看精品视频| 日本欧美午夜| 手机精品福利在线观看| 4虎影视国产在线观看精品| 色偷偷av男人的天堂不卡| 青青青国产在线播放| 国产探花在线视频| 亚洲最新在线| 亚洲bt欧美bt精品| 91成人精品视频| 亚洲精品国产精品乱码不卞| julia中文字幕久久亚洲| 亚洲无码视频喷水| 热久久这里是精品6免费观看| 日本不卡在线视频| 日韩国产一区二区三区无码| 激情亚洲天堂| 免费播放毛片| 国产在线视频二区| 国产视频入口| 亚洲一级色| 热re99久久精品国99热| 欧美日一级片| 999精品视频在线| 手机在线免费毛片| 99热这里只有精品免费| 欧美一区二区三区香蕉视| 欧美另类一区| 99久久性生片| 成年av福利永久免费观看| 亚洲精品无码不卡在线播放| 激情网址在线观看| 欧美a级在线| 精品国产Av电影无码久久久| 日韩av手机在线| 这里只有精品国产| 欧美成人日韩| 日本手机在线视频| 亚洲午夜天堂| 亚洲精品黄| 狠狠五月天中文字幕| 色综合中文字幕| 午夜激情婷婷| 丁香五月婷婷激情基地| 国产在线欧美| 国产精品美人久久久久久AV| 美女一级毛片无遮挡内谢| 99视频在线免费观看| 国产中文一区a级毛片视频| 国产精品成人观看视频国产| 91精品国产综合久久香蕉922| 亚洲国产av无码综合原创国产| 国产精品va| 亚洲人妖在线| 露脸一二三区国语对白| AV天堂资源福利在线观看| 精品一区二区三区自慰喷水| 欧美a级在线| 欧美成人一区午夜福利在线| 国产91成人| 国产靠逼视频| 欧美日韩国产在线人| 国产99在线|