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

PUN多人網絡游戲的設計與實現

2020-09-05 08:23:23魏菊霞
科學導報·學術 2020年76期

魏菊霞

【摘 要】在游戲程序開發過程中,學生普遍對多人游戲的開發產生畏懼心理,而Unity公司的Photon Unity Networking(PUN)多人游戲插件包,功能強大,非常方便的為學生提供了一種解決方案,增強了學生的學習興趣。

【關鍵詞】多人游戲;PUN;游戲大廳;Unity

Photon 是德國Exit Games公司開發的高效、穩定、可拓展的網絡引擎。為當前世界上用戶最廣泛,支持游戲類型最多的專業網絡引擎之一。也是Unity3D應用商店里用戶評價最高的網絡組件之一。而Photon Unity Networking(簡稱PUN)則是一個基于Unity的多人游戲插件包。

1 游戲大廳的創建

1.1 房間與游戲大廳

PhotonCloud被構建用來做“room-based gamse”,即基于房間的游戲時,每次匹配有限數量的玩家,這些玩家是與其他房間的玩家分開的。通常情況下在一個房間里面的每一個玩家都會接受到其他玩家發送的任何信息。房間外的玩家則不能溝通,所有我們總數想要盡快加入房間。加入一個房間最好的方式就是使用隨機匹配。我們只需要請求服務器任何房間或帶特定屬性的房間即可。所有的房間都有一個名稱作為標識符。除非房間已滿或被關閉了,我們可以通過名稱來加入房間。為了方便玩家,主服務器可以為我們的應用程序提供一個房間列表。

制作的游戲程序應用的大廳存在于主服務器上,大廳中為游戲列出房間。如果不使用大廳,有可用的房間就會簡單地隨機加入一個房間,如果因為房間滿員等的原因沒有可用的房間可以加入,則創建一個新的房間。

1.2. 連接到服務器、房間訪問和創建

為了能夠連接到Photon云服務器,并且加入一個房間。需要創建一個新場景Laucher.uniry,新腳本Laucher,并掛載到場景的游戲對象上。Laucher可以參考官方腳本以進行大廳的創建和連接。

關于命名空間,雖然命名空間不是強制性的,給予你的腳本適當的namespace可以防止與其他資源和開發者沖突,如果Unity報錯,所有的開發人員將不得不為Unity重命名類,以允許執行該項目。如果沖突來自資源商店下載的資源,會非常棘手。

2 創建玩家Player

2.1玩家預制體

PUN中最重要的一個約定,預設體Perfab需要在網絡上被實例化,它需要被放在Resources文件夾中,否則就不會被找到。第二重要的,在Resources文件夾中需要注意預設的名字,Resource資源路徑中不應該有命名相同的預設體,Unity會使用找到的第一個。

在通常情況下,玩家攝像機總是跟隨玩家。但是當你連接到一個滿是玩家的房間中時,每個玩家上的CameraWork腳本都會努力控制主攝像機來看向自己的玩家。為了不出現這種情況,可以控制腳本行為,并根據是否是本地玩家來進行跟隨,或者將腳本依附在相機上并時刻注意場景中的本地玩家實例,然后只跟隨本地玩家。

2.2 網絡預制體

首先需要在預設上添加一個PhotonView組件。該組件用于將不同的實例在每臺電腦上連接起來。

在多人游戲中我們需要同步一個的明顯特征是角色的位置和旋轉,這樣當一個玩家移動時,其他計算機上的其他玩家代表以同樣的方式移動和旋轉。由于網絡延遲和數據同步的有效性,角色上的Transform組件會有其他問題。而PhotonTransformView組件可以使這個共同任務更容易,作為Transform組件和PhotonView之間的中間人。基本上,這個組件可以解決所要做的所有難點。

PhotonAnimatorView組件適用于進行動畫同步,它允許開發者定義哪些層權重和哪些參數要同步。層權重只需要在游戲中發生改變時同步,有可能逃脫而完全沒有同步。參數也一樣。有時它可能從其他因素中獲得動畫值。一個速度值是一個很好的例子,不需要精確地同步這個值,可以使用同步位置更新來估計它的值。如果可能的話,盡量少同步參數。

在組件中的Discrete synchronization即離散同步意味著一個值每秒被發送10次。接受客戶端的值傳遞給本地的動畫。而Continuous連續同步意味著PhotonAnimatorView每幀運行。當OnPhotonSerializeView被調用,該值自從上次被調用就開始記錄,在一起發送。接收客戶端然后按序列應用這些值,以保持平穩過渡。雖然這個模式是平滑的,它也發送更多的數據來實現這種效果。因此我們希望同步的某一項數據并不是需要特別精確的情況下,盡量通過使用離散同步來節省網絡帶寬。

在網絡用戶控制的一個關鍵方面是相同的預制體將在所有的玩家客戶端上被實例化,但其中只有一個角色是代表在當前電腦前玩游戲的用戶,所有其他實例代表在其他電腦上玩游戲的其他用戶,因此,首先要考慮的就是輸入管理。我們可以通過“isMine”語段來使得一個實例上啟用輸入而不是其他的。

如果實例控制中的PhotonView.isMine的值是true,意味著這個實例代表的就是這臺電腦上玩這個游戲的本地玩家。所以如果它是false,我們不想做任何事,并且像我們早先設置好的那樣僅僅依靠PhotonView組件來同步Transform和動畫組件。

2.3玩家實例化

實例化玩家預設非常簡單。需要在剛剛進入房間的時候實例化,可以依靠GameManager腳本中的Start( )消息,它將表明已經加載了游戲,這意味著在一個房間里了。當對角色進行實例化的時候,可以將生產點放在地面上方。這時許多在新玩家加入房間時防止碰撞的方法之一。玩家可以在場景中心附近移動,這樣就避免了突然的碰撞。一個“下落的”玩家帶來的視覺效果也是很漂亮干凈的。

然而,當其他玩家加入時,不同的場景將會被加載,我們希望整個游戲保持一致性并且在有人離開時不破壞現有的玩家。所以需要告訴Unity不破壞創建的實例,這意味著需要在一個場景被加載時立即檢查是否必須實例化。

3 總結

本文以Unity3D開發引擎中的插件Photon Unity Networking為背景,簡要介紹了PUN開發多人網絡游戲的具體知識,從創建游戲大廳、連接房間、創建玩家、實例化玩家,提出來具體的實施過程。拋磚引玉,為聯機游戲提供了一種新的解決方案。

參考文獻:

[1]姜波.網絡游戲中的規范研究——以多人在線角色扮演網絡游戲為例[J].中國青年社會科學,2021,40(01):99-107.

[2]呂艷陽.多人聯機對戰游戲的設計與實現[J].電腦知識與技術,2017,13(34):81-83+99.

[3]晉錚,章立.游戲設計中的極簡主義風格研究[J]. 包裝工程,2016(14):161-164.

[4]陳麗萍.游戲引擎技術基礎[J].安徽電子信息職業技術學院學報,2016,15(04):29-32.

基金項目:

廣東省高等教育教學改革項目(粵教高函[2018]132號):基于創新能力培養的《游戲程序設計》課程建設與教學改革

主站蜘蛛池模板: 久久精品无码国产一区二区三区 | 视频一区亚洲| 亚洲欧美成人在线视频| 99在线观看精品视频| 91香蕉视频下载网站| 国产美女免费| 国产午夜无码专区喷水| 色网站在线免费观看| 亚洲第一精品福利| 国产精品久久国产精麻豆99网站| 国产精品手机在线观看你懂的| 亚洲免费福利视频| v天堂中文在线| 国产成人禁片在线观看| 中国一级毛片免费观看| 午夜视频在线观看免费网站| 国产电话自拍伊人| 久久久精品久久久久三级| 一区二区三区在线不卡免费| 92精品国产自产在线观看| 精品久久蜜桃| 五月激激激综合网色播免费| 亚洲中文精品久久久久久不卡| 免费激情网站| 欧美笫一页| 免费激情网站| 国产H片无码不卡在线视频| 九九免费观看全部免费视频| 日日拍夜夜操| h视频在线观看网站| 国产成人精品亚洲77美色| 精品国产福利在线| 日韩精品亚洲一区中文字幕| AV片亚洲国产男人的天堂| 国产欧美另类| 女人18毛片久久| 亚洲国产成人精品无码区性色 | 国产毛片片精品天天看视频| 亚洲女人在线| 亚洲综合色区在线播放2019| a级毛片视频免费观看| 日韩最新中文字幕| 自拍偷拍一区| 怡春院欧美一区二区三区免费| 亚洲高清国产拍精品26u| 亚洲侵犯无码网址在线观看| 亚洲人成影视在线观看| 精品欧美一区二区三区在线| 国产亚洲精品在天天在线麻豆| 亚洲精品高清视频| www.youjizz.com久久| 波多野结衣爽到高潮漏水大喷| 欧美一区二区三区不卡免费| 欧美日韩精品在线播放| 国产精品极品美女自在线网站| 自偷自拍三级全三级视频 | 中文字幕在线永久在线视频2020| 免费观看无遮挡www的小视频| 日本欧美在线观看| 熟妇丰满人妻| 国产成人8x视频一区二区| 欧美午夜精品| 欧美日本中文| 亚洲中文久久精品无玛| 婷婷色狠狠干| 成人免费午间影院在线观看| 色综合天天视频在线观看| 波多野结衣视频网站| 亚洲第一精品福利| yjizz国产在线视频网| 无码一区二区三区视频在线播放| www.亚洲国产| 美臀人妻中出中文字幕在线| 色综合热无码热国产| 日韩无码视频网站| 内射人妻无码色AV天堂| 国产亚洲现在一区二区中文| 手机永久AV在线播放| 日本精品中文字幕在线不卡| 国产一区二区在线视频观看| 毛片免费在线| 久久99精品国产麻豆宅宅|