亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        PUN多人網(wǎng)絡(luò)游戲的設(shè)計與實現(xiàn)

        2020-09-05 08:23:23魏菊霞

        魏菊霞

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

        【關(guān)鍵詞】多人游戲;PUN;游戲大廳;Unity

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

        1 游戲大廳的創(chuàng)建

        1.1 房間與游戲大廳

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

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

        1.2. 連接到服務(wù)器、房間訪問和創(chuàng)建

        為了能夠連接到Photon云服務(wù)器,并且加入一個房間。需要創(chuàng)建一個新場景Laucher.uniry,新腳本Laucher,并掛載到場景的游戲?qū)ο笊?。Laucher可以參考官方腳本以進行大廳的創(chuàng)建和連接。

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

        2 創(chuàng)建玩家Player

        2.1玩家預(yù)制體

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

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

        2.2 網(wǎng)絡(luò)預(yù)制體

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

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

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

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

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

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

        2.3玩家實例化

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

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

        3 總結(jié)

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

        參考文獻:

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

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

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

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

        基金項目:

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

        精品乱码卡1卡2卡3免费开放 | 亚洲熟妇av一区二区三区hd| 亚洲最大免费福利视频网| 18禁无遮拦无码国产在线播放| 日韩精品一区二区三区在线观看 | 八区精品色欲人妻综合网| 久久午夜无码鲁丝片直播午夜精品 | 狠狠久久精品中文字幕无码| 中文字幕二区三区在线| 国产激情一区二区三区在线| 国产一区二区女内射| 免费a级毛片在线观看| 青春草在线观看免费视频| 日本精品视频二区三区| 中文字幕+乱码+中文字幕一区| 亚洲红怡院| 一区二区三区视频免费观看在线| 国产一区二区三区毛片| 国产高潮刺激叫喊视频| 国产高清精品自在线看| 青青草免费视频一区二区| 亚洲精品一区二区国产精华液 | 久久综合九色欧美综合狠狠| 中国凸偷窥xxxx自由视频妇科 | 久久国产精品av在线观看| 国产自拍视频在线观看网站| 无码人妻av一区二区三区蜜臀| 无夜精品久久久久久| 国产自拍视频一区在线| 全黄性性激高免费视频| 国产精品亚洲一区二区无码 | 风韵丰满熟妇啪啪区老熟熟女| 1区2区3区高清视频| 精品亚洲一区二区99| 亚洲国产中文字幕一区| 久久er99热精品一区二区| 亚洲爆乳大丰满无码专区| 久久熟女少妇一区二区三区| 成人爽a毛片免费视频| 亚洲AV永久无码制服河南实里| 国产成人夜色在线视频观看|