【Unity 插件推薦】用光子引擎實現多人線上遊戲,Photon PUN2 框架實作教學!

目錄
【Unity 插件推薦】用光子引擎實現多人線上遊戲,Photon PUN2 框架實作教學!

 

前言

 

相信許多開發遊戲的小夥伴對於製作多人遊戲充滿興趣,但往往被複雜的網路技術所困擾,但其實有了合適的工具與框架,這些挑戰都能迎刃而解。本篇文章將帶你了解如何使用 Photon 來協助開發多人遊戲,幫助你輕鬆跨越技術門檻,實現即時互動的遊戲體驗,文中不僅提供詳細的使用教學】,還附上實用的補充說明】,希望能幫助大家更好地掌握這個工具,提升開發過程中的創意與效率,也歡迎大家支持原文作者!

 

【Unity 插件推薦】用光子引擎實現多人線上遊戲,Photon PUN2 框架實作教學!

 

 

插件介紹

 

Photon 是一款強大的跨平台網路解決方案,適用於多人遊戲、聊天室和其他需要即時互動的應用。它由兩部分組成:Socket 伺服器和針對各平台編寫的 SDK。Photon 支援多種平台,並提供 Unity 遊戲開發專用的 Photon Unity Networking (PUN) SDK,讓開發者能輕鬆實現網路連線、資料同步及玩家匹配等功能。

 

Photon Engine Logo 圖片

 

 

功能特色

  • 高效能 Socket 伺服器Photon 提供高效的 Socket 伺服器,能夠處理大量的同時連線,適用於即時性要求高的多人遊戲】。
  • 跨平台支援:Photon 支援多種平台,包括 Windows】、Unity】、iOS】、Android】、HTML5】、Flash】 等,方便開發者一次編寫、多平台發布。
  • 可擴展性:Photon 的架構設計具備高可擴展性,無論是小型遊戲】還是大型多人遊戲】,都能輕鬆應對。
  • 便捷的匹配系統:內建的匹配系統幫助玩家快速找到對手或隊友,支持創建房間】、加入隨機房間】等操作,節省開發時間。
  • 多種網路拓撲:支援房間伺服器模式、主從伺服器模式等多種網路拓撲結構,能靈活滿足不同遊戲的需求。
  • SDK 支援Photon 為不同平台提供對應的 SDK,如 Photon Unity Networking (PUN)】,讓開發者能快速集成網路功能。

 

適用場景

  • 即時對戰遊戲:適用於 FPS】、MOBA】、競速等需要即時互動和快速反應的遊戲類型,Photon 的高效能伺服器能確保即時資料同步。
  • 合作冒險與生存遊戲:例如合作闖關】、沙盒世界】類的遊戲,Photon 能輕鬆實現多名玩家在同一遊戲世界中的互動。
  • 休閒遊戲與社交遊戲:例如棋牌】、猜謎】類的遊戲,Photon 內建的匹配功能適合這類遊戲快速找尋對手。
  • 大廳系統與聊天室:Photon 可用於設置遊戲大廳】、聊天室】等,即時訊息的傳遞、房間管理及玩家匹配都能輕鬆實現。
  • 多人VR/AR 體驗:適合用於多人 VR】或AR】 應用的同步互動,提供即時連線能力,使多人可以共同參與虛擬場景。

 

 

建立 PUN 雲端伺服器

 

先在 photon 網站內註冊帳號,再建立一個雲端伺服器,如下:

先在 photon 網站內註冊帳號,再建立一個雲端伺服器。

 

先在 photon 網站內註冊帳號,再建立一個雲端伺服器。

 

先在 photon 網站內註冊帳號,再建立一個雲端伺服器

 

說明:免費版 PUN 雲端伺服器最多支援 20 個玩家同時在線上。

 

 

下載 PUN 2

 

到 unity 資源商城下載 PUN 2 資源包
 

到 unity 資源商城下載 PUN2 資源包。

 

 

將資源分別導入到 Unity 專案

 

為了示範這裡我用 unity 自備的學習範本建立專案

 

這裡我用 unity 自備的學習範本建立專案。

 

將 PUN2 導入進 unity。

 

將 PUN2 導入進 unity。

 

 

配置

 

PUN 資源導入時,會彈出對話框,設定我們的 PUN(備註:如果沒有彈出,可能是你的專案出現錯誤,把錯誤解決後就會正常彈出)。

 

PUN 資源導入時,會彈出對話框,設定我們的 PUN。

 


把我們申請的 App ID 填入。

 

把我們申請的 App ID 填入。

 

把我們申請的 App ID 填入。

 

配置 PhotonServerSettings。

 

配置 PhotonServerSettings。

 

 

開始使用

 

如有問題可以檢閱 Photon 的使用文檔

在專案新建一個空對象,我們將他命名為 NewworkLauncher。

 

在專案新建一個空對象,我們將他命名為 NewworkLauncher。

 

新建一個腳本程式碼 Launcher,綁定腳本 。

 

新建一個腳本程式碼 Launcher,綁定腳本 。

 

編寫 Launcher 程式碼。

 

using System.Collections;

using System.Collections.Generic;

sing UnityEngine;

using Photon.Pun;

public class Launcher : MonoBehaviourPunCallbacks

{

   // 在第一幀執行前調用

   void Start()

   {

       // 使用我們設定好的 PhotonServerSettings

       PhotonNetwork.ConnectUsingSettings();

   }

   // 是否已連接到伺服器的大廳

   public override void OnConnectedToMaster()

   {

       Debug.Log("歡迎");

       PhotonNetwork.JoinRandomRoom();

   }

}
 

然後運行我們的項目,看看效果,是否成功連接伺服器。

 

然後運行我們的項目,看看效果,是否成功連接伺服器。

 

繼續編寫程式碼,實現每當我們客戶端連接時產生一個主角,對應的客戶端產生對應的主角。

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using Photon.Pun;

using Photon.Realtime;

public class Launcher : MonoBehaviourPunCallbacks

{

   // 在第一幀執行前調用

   void Start()

   {

       // 使用我們設定好的 PhotonServerSettings

       PhotonNetwork.ConnectUsingSettings();

   }

   // 是否已連接到伺服器的大廳

   public override void OnConnectedToMaster()

   {

       Debug.Log("歡迎");

       PhotonNetwork.JoinRandomRoom();

       // 如果 "someRoom" 房間不存在就創建,存在就加入

       /**

        * 第一個參數:房間的名字

        * 第二個參數:房間的參數,例如最大玩家數

       **/

       RoomOptions roomOptions = new RoomOptions();

       roomOptions.IsVisible = false;

       // 最多 4 個玩家

       roomOptions.MaxPlayers = 4;

       PhotonNetwork.JoinOrCreateRoom("someRoom", roomOptions, TypedLobby.Default);

   }

}
 

 

為主角新增組件

 

加上下面三個元件,並修改對應配置。

主要是 Photon view 元件,表示我們的伺服器是否來觀察這個遊戲角色,修改 auto find active。

 

主要是 Photon view 元件,表示我們的伺服器是否來觀察這個遊戲角色,修改 auto find active。

 

修改玩家控制腳本,實現不同玩家各自操作各種的角色。

 

using Photon.Pun;

// …

PhotonView photonView;

void Awake()

{

   // …

   photonView = GetComponent<PhotonView>();

}

void Update()

{

   // 連上伺服器,但如果觀察的角色不是當前腳本的角色,則無法操作

   if (PhotonNetwork.IsConnected && !photonView.IsMine)

   {

       return;

   }

   // 角色操作代碼

}

// ...
 

將玩家設定為預設體,如果希望網路話遊戲,需要將玩家預設體加入 Resources。

 

將玩家設定為預設體,如果希望網路話遊戲,需要將玩家預設體加入 Resources。

 

刪除原廠的 player 角色或隱藏。

 

刪除原廠的 player 角色或隱藏。

 

連線 room 之後,產生角色預設體,完整 Launcher 程式碼。

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using Photon.Pun;

using Photon.Realtime;

public class Launcher : MonoBehaviourPunCallbacks

{

   // 在第一幀執行前調用

   void Start()

   {

       // 使用我們設定好的 PhotonServerSettings

       PhotonNetwork.ConnectUsingSettings();

   }

   // 是否已連接到伺服器的大廳

   public override void OnConnectedToMaster()

   {

       Debug.Log("歡迎");

       // PhotonNetwork.JoinRandomRoom();

       base.OnConnectedToMaster();

       // 如果 "someRoom" 房間不存在就創建,存在就加入

       /**

        * 第一個參數:房間的名字

        * 第二個參數:房間的參數,例如最大玩家數

       **/

       RoomOptions roomOptions = new RoomOptions();

       roomOptions.IsVisible = false;

       // 最多 4 個玩家

       roomOptions.MaxPlayers = 4;

       PhotonNetwork.JoinOrCreateRoom("someRoom", roomOptions, TypedLobby.Default);

   }

   // 加入房間方法

   public override void OnJoinedRoom()

   {

       base.OnJoinedRoom();

       Debug.Log("歡迎11");

       // 生成玩家

       // 參數1:哪個角色

       // 參數2:生成的位置

       // 參數3:旋轉方法

       PhotonNetwork.Instantiate("Player", new Vector3(1, 1, 0), Quaternion.identity, 0);

   }

}
 

 

最終效果展示

 

最終效果展示

 

 

申請中國大陸地區的 PUN 雲端伺服器

 

由於原文作者來自中國大陸,接下來的內容將以中國大陸地區申請 PUN 雲端伺服器進行介紹。有需求或感興趣的夥伴們,歡迎繼續閱讀!

 

讓我們繼續看下去!

 

這裡申請的雲端伺服器在國外,網路非常卡頓,可以依照步驟繼續申請國內雲端伺服器。

中國區光子雲免費申請網站申請國內 PUN 雲端伺服器,如下:

 

在中國區光子雲免費申請網站申請國內 PUN 雲端伺服器。

 

說明:剩下未展示的選項使用者可以隨便填寫,核准需等待 1~2 個工作日,核准通過後會收到郵件通知(一般會通過的),申請成功後再使用該 App ID 配置 PhotonServerSettings 就不會網路卡頓。

 

 

中國區設定方法

 

注意:當你的 App ID 申請了中國區後,海外就無法使用了,你可以再創建一個 App 用於海外區。

找到 LoadBalancingClient.cs 檔案進行修改。

 

public string NameServerHost = "ns.photonengine.io";

 

 

public string NameServerHost = "ns.photonengine.cn";
 

找到 LoadBalancingClient.cs 檔案進行修改。


在 Assets\Photon|PhotonUnityNetworking\Resources 下的 PhotonServerSettings 固定區域填入 CN。

在 Assets\Photon|PhotonUnityNetworking\Resources 下的 PhotonServerSettings 固定區域填入 CN。

 

 

Photon Engine 影片介紹

 

 

 

光子引擎插件下載點

 

【Photon PUN 2

Asset Store下載連結:Photon PUN 2

官方文檔:Photon Unity Networking (PUN) SDK

————————————————

以上內容改編節錄 CSDN 作者:向宇it

 

更多好用插件:【Unity 好用插件推薦】持續更新,一起讓遊戲開發事半功倍!

 

 

 

本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。

特約作家簡介

X
A
Y
B
JamXu的頭像
JamXu
十年遊戲研發
二十年遊戲台主
三十年遊戲玩家

經中華網龍遊戲企劃進入遊戲圈,然後被雷打到去學程式前後端又學了點設計帶帶幾個研發團隊,見證了 3D 渲染技術及遊戲引擎互相進步,也見證了研發代理的更迭與博弈遊戲的興起,再毅然研究起 SEO 網路行銷社群廣告投放,深信自研自賣才是最大贏家,期望能為台灣研發重回輝煌時光貢獻一點力量。如果你也有遊戲夢,歡迎交流認識。


支持贊助 / DONATE

 

亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。

亞洲電玩通AsiaGameMaster - Steam 遊戲鑑賞家
亞洲電玩通AsiaGameMaster - FB 粉絲專頁
亞洲電玩通AsiaGameMaster - IG 粉絲專頁
亞洲電玩通AsiaGameMaster - Twitter
亞洲電玩通AsiaGameMaster - Yoytube 粉絲專頁
亞洲電玩通AsiaGameMaster - Tiktok

BTC

亞洲電玩通AsiaGameMaster - BTC 鏈贊助地址

352Bw8r46rfXv6jno8qt9Bc3xx6ptTcPze

 

ETH

亞洲電玩通AsiaGameMaster - ETH 鏈贊助地址

0x795442E321a953363a442C76d39f3fbf9b6bC666

 

TRON

亞洲電玩通AsiaGameMaster - TRON 鏈贊助地址

TCNcVmin18LbnXfdWZsY5pzcFvYe1MoD6f

延伸閱讀