簡介
Photon Unity Networking(PUN)基本教程是基于Unity3D的教程。 它會告訴你使用Photon云如何開發自己的多人游戲以及怎樣使用角色和動畫。 我們將學習許多重要的功能、提示和技巧,以大概了解使用PUN進行基于網絡開發的方法。
主要內容
- 概述
- Photon云
- 開發
概述
本教程將指導您從一個空項目開始,一步步遍及整個創建過程。 一路上,將解釋網絡游戲中的概念,以及常見陷阱和設計注意事項。
為了不僅僅讓玩家走動而不做任何事情,我們將實施一個基本的射擊系統,加上玩家的健康管理,這將幫助我們支持網絡中變量同步的解釋。
我們還將使用基于房間中的玩家數量的自定義尺寸競技場,競技場的尺寸基于當前玩家的數量被調整。 這將顯示關于自動同步場景的功能的幾個概念,以及一些提示,這些提示是關于在加載不同的場景時候如何處理玩家的,并且在這種情況下什么可能會出錯。:)
游戲目標
當游戲被啟動時,用戶將看到連接協議還有在UI中通知進展。 當房間被加入或創建時,玩家進入可調整大小的競技場,其中一次可以存在多達4個玩家。 玩家可以跑,轉身,以及火焰。 每個玩家發射的火光擊中其他玩家時將影響他們的健康。 當你的健康是0,游戲結束離開競技場。 然后,您再次看到介紹屏幕,讓您開始加入一個新游戲。
你應該知道的
本教程僅假設使用Unity編輯器和編程的基本知識。 然而,為了專注于Photon網絡新的概念介紹,最好有一些普通的非網絡游戲開發經驗。
示例代碼用C#編寫,但在Unity Script中工作類似。
Unity和Photon Cloud
創建一個新的Unity工程
確保您使用Unity 4.7或任何Unity 5版本。 創建一個新的項目,然后,一旦你吸收了概念和設計模式,就可以將它們應用到你自己的項目。
導入PUN和設置
打開資源商店并找到PUN資產并下載、安裝它。 當您導入所有Pun Assets時,讓Unity重新編譯。
PUN設置向導可以幫助您的網絡設置,并提供了一個方便的方式開始我們的多人游戲:Photon云!
云? 是的,云。 這是一個Photon服務器,我們可以用于我們的游戲。 這里要解釋一下。
以“免費計劃”使用云是免費的,這里可以輸入申請好的AppId或者郵件地址。
那么,這個“Photon Cloud”究竟做什么?
基本上,它是一群電腦,Photon服務器運行在上面。 這個“云”的服務器是由Exit Games公司維護,并為您的多人游戲提供無憂服務。 服務器是按需添加的,因此可以處理任何數量的玩家。
即使Photon Cloud不是完全免費的,但是成本也是低的,特別是與常規主機相比。
Photon Unity Networking將為您處理Photon云,下面是內部發生的事情:
每個人都首先連接到“Name Server”。 它檢查哪個應用程序您的客戶端(使用AppId)和客戶端要使用哪個區域。 然后將客戶端轉發到主服務器(Master Server)。
主服務器是一群區域服務器的中心。 它知道所有現有的游戲。 每當游戲(房間)被創建或加入時,客戶端都會被轉發到其他機器 - 稱為“游戲服務器(Game Server)”。
PUN中的設置非常簡單,您不必關心托管成本,性能或維護。
房間Rooms
Photon Cloud使用“基于房間游戲”的思想來構建,意思是每場比賽玩家有限制(比方說:小于10),與其他人分開。 在一個房間(通常),每個人都收到任何其他人發送。 在房間外面時,玩家不能溝通,所以我們總是希望他們盡快進入房間。
進入房間的最佳方法是使用隨機匹配。 我們只是要求進入服務器的任何房間或具有某些屬性的房間。
所有房間都有一個名稱作為標識符。 除非房間已滿或關閉,我們可以通過名字加入。方便起見,主服務器可以提供是我們的應用程序的房間的列表。
大廳Lobby
您的應用程序的大廳存在于主服務器上。 在我們的例子中,我們不會使用大廳,只要加入一個隨機房間(如果有的話),或者創建一個新房間,如果沒有現有的房間(房間可以有最大容量,所以他們可能是都滿了)。
AppIDs和游戲版本
如果每個人都連接到相同的服務器,必須有一種方法來將玩家與其他人分開。
每個游戲(如在應用程序中)在Cloud中獲取自己的“AppId”。 玩家只有在與具有相同的“AppId”的其他玩家遇到。
還有一個“游戲版本”,你可以用來分離玩家與老客戶端與那些與較新的。
地區
Photon Cloud被組織在全球各個地區,以防止與玩家的距離太遠,連接不好。 重要的是要理解這個概念,特別是當在不同地區與遠程團隊合作時。 因為地區劃分,與您的隊友測試游戲可能就不行了。 所以,確保所有測試者所在區域是相同的。
開發
下面每個部分涵蓋了項目開發階段的一個具體的部分,按順序進行很重要。
腳本和Photon Cloud知識水平也逐漸增加。
- 創建基本大廳場景。
- 通過用戶界面(UI)改善大廳場景。
- 創建游戲場景。
- 實現級別加載。
- 創建基本Player Prefab。
- 使相機跟隨您的玩家。
- 修改Player Prefab以添加網絡功能。
- 玩家實例化和場景切換。
- 玩家用戶界面(UI)。
小結
好的,我們實現了一個工作系統,用戶在互聯網上與其他玩家互動,以基本要求實現良好的體驗。
我們已經學習了如何控制PUN,如何監聽PUN狀態和當前上下文,以及利用直觀的組件輕松使用Animator。
我們還學習了Photon的一些有趣的功能,如自動場景同步,創建原始和強大的GamePlays。
要創建一個完整的游戲還有很多事情要做,準備發布,但這只是建立在我們在這里介紹內容的基礎之上。
- 請務必閱讀“開始使用”部分。
- 請瀏覽文檔和API參考,可以大體知道都有什么。 你可能不需要所有的東西,但當你需要或實現新功能的時候能夠記起來。 你會記得一些相關的功能或屬性,所以現在是時候正確地學習它們了。
- 使用論壇,不要猶豫分享你的問題,甚至挫折:)你不會被問題困住是至關重要的。 把問題寫出來讓別人理解,你會把你的問題有條理的整理出來,這有助于問題的解決。 沒有愚蠢的問題,這一切都取決于你的專業水平和你在學習/掌握Unity和PUN的程度。
原文地址
http://doc.photonengine.com/en-US/pun/current/tutorials/pun-basics-tutorial/intro