如何在遊戲中加入語音電臺?

聲網Agora發表於2018-08-29

我們之前分享過很多在社交應用中的實時音視訊場景。但是看到這個標題,你有可能會產生的第一個疑問是:遊戲裡的語音電臺是什麼?

這裡所說的“語音電臺”,其實是我們在 MMO、SLG、RPG 類遊戲中看到的實時音視訊應用場景的一個統稱。具體功能上來講,基本包括這些:

  • 文字訊息:隊友、世界頻道中的文字交流

  • 多人語音通話

  • 1 對 1 語音聊天

  • 組隊群聊,如開黑

  • 語音直播,可以理解為在遊戲中實現了一個語音直播房間

這些功能看上去是不是很眼熟?但是在 MMO、SLG、RPG 遊戲中,是以什麼樣的形式,或者說情境下出現呢?我們把它們放在遊戲裡,簡單舉幾個例子。

我們在這裡以 MMO 遊戲為例。在 MMO 遊戲中,通常會有“自動戰鬥”功能,在遊戲角色“全自動”刷金幣的時候,玩家都在做其它事情。換句話說,這時你的玩家可能已把自動戰鬥的遊戲放在一旁,在別的地方氪金。如果加入加入語音連麥、語音直播,則可以將玩家的精力留在遊戲中的好友身上,一起聊天、打遊戲。

另外,在遊戲中加入直播元素也是一種促進使用者互動的選擇。最近在油管上就有一個很火的例子:吃雞開始之前,一般玩家都處於待機的狀態,而在視訊中的玩家,僅通過聲音就吸引了不少其它玩家的關注(想了解詳情,請看視訊)。在 MMO 類遊戲中也可以引入這種場景,而且會得到更好的效果。在MMO遊戲中“開直播間”,不論是語音聊天,還是唱歌,玩家同樣可以打賞,而且不再是直播平臺上的禮物,可以換作玩家真正需要的遊戲道具、金幣等。

除了以上兩種場景,利用實時語音,還可以有更多有意思的玩法。

如何為遊戲增加語音電臺?

我們可以通過 Agora SDK 來快速實現,我們根據不同的功能來講一下具體需要呼叫哪些介面即可實現。

功能 1: 接收/傳送 IM 訊息(語音訊息/文字訊息)

在遊戲中加入實時語音,對開發者的技術要求較高。首先實現實時語音,本身就有一定的難度,需要我們面對難點包括:

1. 低延時

沒人希望自己叫隊友的時候,隊友反應慢一拍。但是要做到實時語音的低延時,就要針對不同機型優化音訊編解碼演算法,以降低音訊在手機上的延時;增加網路節點覆蓋,優化資料傳輸策略,以降低音訊資料的傳輸延時。

2. 高併發

在遊戲中,可能會出現上百人在世界頻道中(比如吃雞),也有可能會有成千上萬個小群組在連麥,那麼我們就需要對同一個語音訊道的高併發,以及多個頻道的高併發做好預案。

3. 消除迴音與噪音

首先,迴音的消除與裝置的硬體、系統相關,需要針對不同機型進行編解碼優化來消除。噪音方面,玩家可能會在各種環境中玩遊戲,操作過程中敲擊螢幕也會給通話帶來噪音,那麼我們就需要通過盲源分離演算法來剝離噪音,讓玩家的語音變得更加清晰。

與此同時,遊戲與應用不同,遊戲本身會佔用較高的硬體資源、頻寬,那麼作為“後來者”的實時語音還需要滿足以下要求:

  • 較低頻寬需求:不能因為增加語音而導致遊戲延時嚴重升高;

  • 功耗較低:儘量降低語音對CPU、記憶體的佔用,對遊戲的功耗影響要小;

  • 靈活性:音質的高低與延時的高低在頻寬有限的情況下是一對矛盾的CP,我們需要能靈活調整兩者;

想了解詳細每個介面的引數設定,請參考開發者文件


相關文章