十分鐘, 為你的網路連線遊戲加上語音聊天功能

Ryan Tseng
Jul 24 · 8 min read

在前幾篇的文章中, 小編有示範用 PUN 2 來實作一個網路連線射擊遊戲.
玩家進入遊戲場後, 要操控自己的機器人, 一邊用動感光波射擊其他玩家, 同時也要躲避其他玩家的攻擊.

詳細作法請參考: PUN 2 | 連線射擊遊戲 (1/4)

話說, 這個遊戲太安靜了. 沒能和遊戲場中朋友同好一起喊殺吆喝, 實在少了玩家間即時互動的樂趣. 這回, 小編就來示範, 簡單幾個步驟, 即能為網路連線遊戲加上語音聊天的功能.

先介紹這次用到的套件: Photon Voice 2.

Photon Voice 2 為 Photon Voice 的後繼版本, 能更好的支援 Unity. 其與 PUN 2 完全相容, 可將語音聊天和音頻流, 傳輸到 PUN 2 的相關應用中, 簡化麻煩的程式連接的工作流程, 亦可切分開來, 搭配 Photon Realtime, Photon Bolt 或 Photon Chat 一起運作, 甚至是獨立為一隻應用程式也可以. 其套件包可以從 Asset Store 直接下載.


開啟遊戲專案, 匯入 Photon Voice 2 套件

首先, 將網路連線射擊遊戲的 Unity 專案複製一份, 取名叫做 pun_basic_voice.

在 Unity 開啟 pun_basic_voice 專案.
開啟 Asset Store, 找到 Photon Voice 2 FREE, 下載並且匯入.

在 Import Unity Package 視窗, 點按 Import 全部匯入.

匯入完成後, 可以看到在 Project 視窗, Assets 資料夾底下, 多了一個叫做 Photon Voice 的資料夾.

設定 AppId

使用 Photon Voice 2 套件前, 需要輸入 AppId.

如何取得 AppId 呢?
用戶可到 Photon Cloud 註冊/登入, 在 Cloud Dashboard 點按 建立新 應用程式.

Photon Type 選 “Photon Voice”.
名稱可隨意輸入.
按 建立 建立新的應用程式.

將新應用程式的應用程式 ID 複製起來.

取得 AppId 後, 從選單 Window/Photon Unity Networking/Highlight Server Settings 叫出 PhotonServer Settings, 將 AppId 貼在 App Id Voice 欄位中.

若在先前實作網路連線遊戲時, 已有申請 AppId 並輸入給 App Id Realtime. 也可將 App Id Realtime 的數值直接複製起來, 並貼到 App Id Voice 欄位中.

到此, 我們把 pun_basic_voice 遊戲專案的基礎環境設定好了.
動手做進一步的整合之前, 先簡單的說明一下 Photon Voice 2 的整合概念.

Photon Voice 2 整合概念

Photon Voice 2 套件與 PUN 2 遊戲專案的整合, 會在遊戲連接上 Photon Cloud 並進入遊戲室後, 自動建立語音聊天的通道.
Photon Voice 2 套件提供有 PhotonVoiceNetwork 元件來與遊戲場景整合, 並需設定其搭配的 Recorder 和 Speaker 元件來處理錄音與播音的細節.
另外, 在遊戲專案的角色 Prefab 部份, 也需與 PhotonVoiceView 元件做整合, 以及設定其搭配的 Recorder 和 Speaker 元件.

首先, 來為遊戲場景增加 Photon Voice Network 元件.

在遊戲場景增加 Photon Voice Network 元件

pun_basic_voice 有四個遊戲場景, 分别是場景- Room for 1, 場景- Room for 2, 場景- Room for 3 與場景- Room for 4.

開啟場景- Room for 1.
在 Hierarchy 視窗, 新增一個 Empty GameObject, 取名為 “Voice”.

在 Hierarchy 視窗, 選取 Voice.
然後在 Inspector 視窗裡, 點按 Add Component, 增加一個 Photon Voice Network 元件, 並將:

等三個選項勾選起來.

接著, 在 Inspector 視窗裡, 再點按 Add Component, 增加一個 Recorder 元件, 並將:

等兩個選項勾選起來.

最後, 再把 Recorder 元件拖拉到 Photon Voice Network 元件的 Primary Recorder 欄位中.

到此, 即為場景- Room for 1 增加了 Photon Voice Network 與 Recorder 等元件與設定. 將場景- Room for 1 存檔.

同樣的, 為場景- Room for 2, 場景- Room for 3 與場景- Room for 4, 也增加 Photon Voice Network 與 Recorder 等元件與設定, 並存檔.

再來, 針對有帶入 Photon View 元件的遊戲角色 Prefab, 其需要增加 Photon Voice View 元件.

在遊戲角色增加 Photon Voice View 元件

開啟 Prefab- My Robot Kyle.
在 Inspector 視窗, 點按 Add Component, 新增一個 Photon Voice View 元件. 並將:

等三個選項勾選起來.

然後, 在 Inspector 視窗, 再點按 Add Component, 新增一個 Recorder 元件, 並將:

等兩個選項勾選起來,

最後, 再把 Recorder 元件拖拉到 Photon Voice View 元件的 Recorder In Use 欄位中.

到此, 即為 Prefab- My Robot Kyle 增加了 Photon Voice View 與 Recorder 等元件與設定. 將 Prefab- My Robot Kyle 儲存.

好的, 我們已完成遊戲場景與遊戲角色 Prefab 的全部設定, 可以執行遊戲來測試語音聊天的功能了.

遊戲進行時, 自動建立語音聊天室

在 Unity, 切換到場景 Launcher, 並執行.
在玩家進入遊戲室動態生成出遊戲角色時, 也自動建立了語音通道.

這時對著麥克風發出聲音, 會從耳機或喇叭通到自己的聲音.
若有其他玩家同在遊戲室中, 彼此發出的聲音也都會互相聽的到.

結語補充

這次介紹的 Photon Voice 2 整合作法, 是搭配 PUN 2 在進入遊戲室後自動建立語音聊天室, 並用默認的方式讓全部玩家同處在相同語音聊天室中.

其實, Photon Voice 2 提供了更多細緻的功能, 包括噪音抑止, 3D 音效體驗, Push-To-Talk, 私人語音對談, 聊天對話群組等細緻的功能. 小編會在後續的文章中做介紹, 敬請期待.

如果對本篇的範例說明有些疑問, 歡迎來我們粉絲團做進一步的討論.
粉絲團: https://www.facebook.com/photoncloudtw/

Photon Taiwan

有關多人連線, 即時連線, 遊戲設計的資訊與技術主題~ 多多交流喔!

Ryan Tseng

Written by

Photon Taiwan

有關多人連線, 即時連線, 遊戲設計的資訊與技術主題~ 多多交流喔!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade