簡介
Photon Unity Networking(PUN)基本教程是基于Unity3D的教程望伦。 它會告訴你使用Photon云如何開發(fā)自己的多人游戲以及怎樣使用角色和動畫舍悯。 我們將學(xué)習許多重要的功能、提示和技巧嚣鄙,以大概了解使用PUN進行基于網(wǎng)絡(luò)開發(fā)的方法肺魁。
主要內(nèi)容
- 概述
- Photon云
- 開發(fā)
概述
本教程將指導(dǎo)您從一個空項目開始添瓷,一步步遍及整個創(chuàng)建過程渺蒿。 一路上痢士,將解釋網(wǎng)絡(luò)游戲中的概念彪薛,以及常見陷阱和設(shè)計注意事項茂装。
為了不僅僅讓玩家走動而不做任何事情,我們將實施一個基本的射擊系統(tǒng)善延,加上玩家的健康管理少态,這將幫助我們支持網(wǎng)絡(luò)中變量同步的解釋。
我們還將使用基于房間中的玩家數(shù)量的自定義尺寸競技場易遣,競技場的尺寸基于當前玩家的數(shù)量被調(diào)整彼妻。 這將顯示關(guān)于自動同步場景的功能的幾個概念,以及一些提示豆茫,這些提示是關(guān)于在加載不同的場景時候如何處理玩家的侨歉,并且在這種情況下什么可能會出錯。:)
游戲目標
當游戲被啟動時揩魂,用戶將看到連接協(xié)議還有在UI中通知進展幽邓。 當房間被加入或創(chuàng)建時,玩家進入可調(diào)整大小的競技場火脉,其中一次可以存在多達4個玩家牵舵。 玩家可以跑,轉(zhuǎn)身倦挂,以及火焰畸颅。 每個玩家發(fā)射的火光擊中其他玩家時將影響他們的健康。 當你的健康是0方援,游戲結(jié)束離開競技場没炒。 然后,您再次看到介紹屏幕犯戏,讓您開始加入一個新游戲送火。
你應(yīng)該知道的
本教程僅假設(shè)使用Unity編輯器和編程的基本知識。 然而笛丙,為了專注于Photon網(wǎng)絡(luò)新的概念介紹漾脂,最好有一些普通的非網(wǎng)絡(luò)游戲開發(fā)經(jīng)驗。
示例代碼用C#編寫胚鸯,但在Unity Script中工作類似骨稿。
Unity和Photon Cloud
創(chuàng)建一個新的Unity工程
確保您使用Unity 4.7或任何Unity 5版本。 創(chuàng)建一個新的項目,然后坦冠,一旦你吸收了概念和設(shè)計模式形耗,就可以將它們應(yīng)用到你自己的項目。
導(dǎo)入PUN和設(shè)置
打開資源商店并找到PUN資產(chǎn)并下載辙浑、安裝它激涤。 當您導(dǎo)入所有Pun Assets時,讓Unity重新編譯判呕。
PUN設(shè)置向?qū)Э梢詭椭木W(wǎng)絡(luò)設(shè)置倦踢,并提供了一個方便的方式開始我們的多人游戲:Photon云!
云侠草? 是的辱挥,云。 這是一個Photon服務(wù)器边涕,我們可以用于我們的游戲晤碘。 這里要解釋一下。
以“免費計劃”使用云是免費的功蜓,這里可以輸入申請好的AppId或者郵件地址园爷。
那么,這個“Photon Cloud”究竟做什么式撼?
基本上童社,它是一群電腦,Photon服務(wù)器運行在上面端衰。 這個“云”的服務(wù)器是由Exit Games公司維護叠洗,并為您的多人游戲提供無憂服務(wù)。 服務(wù)器是按需添加的旅东,因此可以處理任何數(shù)量的玩家灭抑。
即使Photon Cloud不是完全免費的,但是成本也是低的抵代,特別是與常規(guī)主機相比腾节。
Photon Unity Networking將為您處理Photon云,下面是內(nèi)部發(fā)生的事情:
每個人都首先連接到“Name Server”荤牍。 它檢查哪個應(yīng)用程序您的客戶端(使用AppId)和客戶端要使用哪個區(qū)域案腺。 然后將客戶端轉(zhuǎn)發(fā)到主服務(wù)器(Master Server)。
主服務(wù)器是一群區(qū)域服務(wù)器的中心康吵。 它知道所有現(xiàn)有的游戲劈榨。 每當游戲(房間)被創(chuàng)建或加入時,客戶端都會被轉(zhuǎn)發(fā)到其他機器 - 稱為“游戲服務(wù)器(Game Server)”晦嵌。
PUN中的設(shè)置非常簡單同辣,您不必關(guān)心托管成本拷姿,性能或維護。
房間Rooms
Photon Cloud使用“基于房間游戲”的思想來構(gòu)建旱函,意思是每場比賽玩家有限制(比方說:小于10)响巢,與其他人分開。 在一個房間(通常)棒妨,每個人都收到任何其他人發(fā)送踪古。 在房間外面時,玩家不能溝通券腔,所以我們總是希望他們盡快進入房間伏穆。
進入房間的最佳方法是使用隨機匹配。 我們只是要求進入服務(wù)器的任何房間或具有某些屬性的房間颅眶。
所有房間都有一個名稱作為標識符蜈出。 除非房間已滿或關(guān)閉田弥,我們可以通過名字加入涛酗。方便起見,主服務(wù)器可以提供是我們的應(yīng)用程序的房間的列表偷厦。
大廳Lobby
您的應(yīng)用程序的大廳存在于主服務(wù)器上商叹。 在我們的例子中,我們不會使用大廳只泼,只要加入一個隨機房間(如果有的話)剖笙,或者創(chuàng)建一個新房間,如果沒有現(xiàn)有的房間(房間可以有最大容量请唱,所以他們可能是都滿了)弥咪。
AppIDs和游戲版本
如果每個人都連接到相同的服務(wù)器,必須有一種方法來將玩家與其他人分開十绑。
每個游戲(如在應(yīng)用程序中)在Cloud中獲取自己的“AppId”聚至。 玩家只有在與具有相同的“AppId”的其他玩家遇到。
還有一個“游戲版本”本橙,你可以用來分離玩家與老客戶端與那些與較新的扳躬。
地區(qū)
Photon Cloud被組織在全球各個地區(qū),以防止與玩家的距離太遠甚亭,連接不好贷币。 重要的是要理解這個概念,特別是當在不同地區(qū)與遠程團隊合作時亏狰。 因為地區(qū)劃分役纹,與您的隊友測試游戲可能就不行了。 所以暇唾,確保所有測試者所在區(qū)域是相同的促脉。
開發(fā)
下面每個部分涵蓋了項目開發(fā)階段的一個具體的部分啰挪,按順序進行很重要。
腳本和Photon Cloud知識水平也逐漸增加嘲叔。
- 創(chuàng)建基本大廳場景亡呵。
- 通過用戶界面(UI)改善大廳場景。
- 創(chuàng)建游戲場景硫戈。
- 實現(xiàn)級別加載锰什。
- 創(chuàng)建基本Player Prefab。
- 使相機跟隨您的玩家丁逝。
- 修改Player Prefab以添加網(wǎng)絡(luò)功能汁胆。
- 玩家實例化和場景切換。
- 玩家用戶界面(UI)霜幼。
小結(jié)
好的嫩码,我們實現(xiàn)了一個工作系統(tǒng),用戶在互聯(lián)網(wǎng)上與其他玩家互動罪既,以基本要求實現(xiàn)良好的體驗铸题。
我們已經(jīng)學(xué)習了如何控制PUN,如何監(jiān)聽PUN狀態(tài)和當前上下文琢感,以及利用直觀的組件輕松使用Animator丢间。
我們還學(xué)習了Photon的一些有趣的功能,如自動場景同步驹针,創(chuàng)建原始和強大的GamePlays烘挫。
要創(chuàng)建一個完整的游戲還有很多事情要做,準備發(fā)布柬甥,但這只是建立在我們在這里介紹內(nèi)容的基礎(chǔ)之上饮六。
- 請務(wù)必閱讀“開始使用”部分。
- 請瀏覽文檔和API參考苛蒲,可以大體知道都有什么卤橄。 你可能不需要所有的東西,但當你需要或?qū)崿F(xiàn)新功能的時候能夠記起來撤防。 你會記得一些相關(guān)的功能或?qū)傩运浞纾袁F(xiàn)在是時候正確地學(xué)習它們了。
- 使用論壇寄月,不要猶豫分享你的問題辜膝,甚至挫折:)你不會被問題困住是至關(guān)重要的。 把問題寫出來讓別人理解漾肮,你會把你的問題有條理的整理出來厂抖,這有助于問題的解決。 沒有愚蠢的問題克懊,這一切都取決于你的專業(yè)水平和你在學(xué)習/掌握Unity和PUN的程度忱辅。
原文地址
http://doc.photonengine.com/en-US/pun/current/tutorials/pun-basics-tutorial/intro