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

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

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

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

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

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

0 引言

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

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

在客戶端的創建過程中,為了確??蛻舳四芟蚍掌靼l送消息請求,并且使得服務器能夠將來自某一客戶端的請求返回給(廣播消息)連接到服務器的所有客戶端,也必須要先添加網絡視圖組件—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
主站蜘蛛池模板: 丁香亚洲综合五月天婷婷| 欧美精品成人一区二区视频一| 亚州AV秘 一区二区三区| 五月丁香在线视频| 国产精品福利在线观看无码卡| a毛片免费观看| 亚洲一区二区三区中文字幕5566| 婷婷色婷婷| 欧美yw精品日本国产精品| 亚洲欧美日韩视频一区| 亚洲水蜜桃久久综合网站 | 欧美中文字幕在线播放| 91精品啪在线观看国产60岁| 久久精品国产精品青草app| 无码日韩视频| 亚洲国产欧美国产综合久久| 91精品国产丝袜| 在线五月婷婷| 免费一级无码在线网站| 国产视频久久久久| 91区国产福利在线观看午夜| 亚洲乱码视频| 日韩一区精品视频一区二区| 人妻中文久热无码丝袜| 天天躁夜夜躁狠狠躁图片| 在线观看无码av免费不卡网站| 亚洲人人视频| 自拍欧美亚洲| 欧美一区二区福利视频| 蜜桃视频一区二区| 久久中文无码精品| 欧美成在线视频| 亚洲天堂视频在线观看免费| 久久久久亚洲AV成人网站软件| 蜜桃视频一区二区| 亚洲精品少妇熟女| 精品国产乱码久久久久久一区二区| 99国产在线视频| 亚洲黄网在线| 国产在线91在线电影| 亚洲中字无码AV电影在线观看| 在线无码av一区二区三区| 亚洲精品无码久久久久苍井空| 国产自视频| AV在线天堂进入| 久一在线视频| 国产乱人伦精品一区二区| 中文字幕在线播放不卡| 亚洲视频在线青青| 91精品视频在线播放| 国产区免费精品视频| 国产成人免费高清AⅤ| 欧美三級片黃色三級片黃色1| 欧美成人区| 精品99在线观看| 国产在线98福利播放视频免费 | 欧美日韩激情在线| 好紧太爽了视频免费无码| 噜噜噜综合亚洲| 黄色一及毛片| 26uuu国产精品视频| 亚洲欧美一区二区三区蜜芽| 2021国产精品自拍| 91在线无码精品秘九色APP| 欧美97欧美综合色伦图| 动漫精品啪啪一区二区三区| 日韩一区二区三免费高清| 国产精品亚洲五月天高清| 亚洲熟女中文字幕男人总站| 2021国产在线视频| 国产精品国产三级国产专业不| 91在线精品麻豆欧美在线| 国产91小视频在线观看| 亚洲手机在线| 老熟妇喷水一区二区三区| 欧美日韩中文国产| 亚洲国产精品一区二区第一页免| 狠狠躁天天躁夜夜躁婷婷| 毛片免费视频| 国产国语一级毛片在线视频| 麻豆国产精品一二三在线观看| 三上悠亚一区二区|