手遊中實時音視訊的開發經驗與實現技巧

聲網Agora發表於2019-03-04

在由 Cocos 攜手聲網舉辦的 Cocos 開發者者巡迴活動中,聲網解決方案架構師李亞分享了手遊中實時音視訊的開發實踐經驗與技巧。

以下為李亞的演講紀實:

在遊戲社會化趨勢的影響下,實時音視訊逐漸廣泛應用於多類遊戲中,並在使用者留存、使用者活躍、防作弊、變現等角度為遊戲帶來價值。例如:

1.社交小遊戲

遊戲行業有個說法,遊戲市場,騰訊、網易佔80%,剩下20%留給其它公司瓜分。在這樣的競爭環境下,小遊戲給了很多遊戲團隊新的機遇。這類遊戲有個特點,遊戲玩法輕鬆,即開即玩,比如你畫我猜、你唱我猜、連連看,他們更加註重社交屬性。在加入語音後,簡單的遊戲更添趣味,社交元素更有利於使用者活躍與留存。而且,小遊戲不僅僅可以放在微信中,還可以在QQ、UC瀏覽器等環境中執行。

2.MMO類遊戲

手遊中實時音視訊的開發經驗與實現技巧
MMO在加入實時語音、文字訊息後,玩家在自動尋路、自動打怪的過程中,也可以與好友語音聊天。通過實時語音,也可以讓主播陪玩大R玩家,刺激變現。

3.棋類牌類遊戲

在該型別遊戲中,增加實時語音或實時視訊,可以打造更加真實的場景。該類遊戲始終面對著一個老問題,就是玩家作弊,一個人用兩臺手機加入同一個房間。在開視訊後,就可以杜絕這種作弊現象。同時,通過視訊,使用者還可以察言觀色,判斷對家牌的好壞。

4.桌遊類遊戲

以狼人殺為代表的桌遊類遊戲都非常注重使用者之間的交流,甚至有些遊戲流程主要靠語言來推進。在實時音視訊加入後,桌遊網遊化成為了現實。

5.FPS遊戲

手遊中實時音視訊的開發經驗與實現技巧
實時語音已經成為以吃雞為代表的FPS遊戲的標配功能。現在這類遊戲有諸如小隊語音、全圖語音等不同模式。

6.線上抓娃娃

線上抓娃娃從去年年底開始爆紅。通過實時視訊,讓使用者們足不出戶也能玩線下抓娃娃。

綜上來看,實時音視訊能為手遊帶來能價值呢?我們可以簡單總結一下:

提升遊戲體驗:以狼人殺這類遊戲為例,如果靠發文字訊息交流,這樣的遊戲效率和體驗會變得極其差,利用實時語音則讓遊戲的體驗更加自然。

增加粘性,提升留存:現在很多遊戲增加了掛機、自動化的功能,增加遊戲直播或聊天,能讓玩家邊玩邊聊。

增強變現能力:在遊戲中,針對大R玩家,可以允許他與主播連麥,提升VIP的體驗。

反作弊:在棋類牌類遊戲中,通過開啟視訊,可以杜絕一人多臺手機等作弊現象。在吃雞遊戲中,主播會把攝像頭對準自己的手和鍵盤,來證明自己不是在靠外掛。

實時音視訊的技術難點

首先實時音視訊自身的技術難點與其處理流程相關。其處理流程如下圖所示:

手遊中實時音視訊的開發經驗與實現技巧

圖:音視訊在端到端的傳輸流程

實時音視訊的技術本身有很多難點,而遊戲自身又會給它提出更多的要求。我們來一步步分析。實時音視訊本身的難點包括:

首先是低延時。從行業標準來講,端到端的延時如果大於400ms,兩人對話沒有辦法正常進行。400ms就是一個紅線。但是並不等於400ms就可以使用。在一些激烈對戰的場景中,比如團隊副本,指揮語音延時大,呼喊著讓隊友加血、嘲諷,但對方反應總會慢半拍,結果就是團滅。聲網在實時音視訊方面可以做到端到端平均76ms的低延時傳輸。

另一方面,路由裝置、網路訊號強弱、用網高峰等因素,總會引起丟包和抖動。各位做遊戲開發肯定對這種情況也很熟悉。在實時音視訊通話中,需要有相應的補償演算法來抗丟包、抗抖動,保證通話的流暢度和低延時。聲網可以做到在50%丟包時,仍能正常通話,且不影響使用者體驗。不過這樣的丟包率通常不會出現,因為在在這樣的網路情況下,可能普通遊戲也沒有辦法正常進行。所以,只要網路狀況能支援遊戲正常進行,聲網的音視訊通話就可以正常進行。

第三,網路的高併發、高可用。在高峰時間段,同一個頻道內的高併發,多個頻道高併發這種情況都需要開發者做出預案。聲網通過分散式架構,智慧路由演算法,保證99.9%的連通率,99.99%的可用度。

最後,在音訊方面,需要有降噪和回聲消除處理。回聲是指說話者能聽到自己的聲音,噪聲很多時候是裝置造成的或者環境音。而在視訊方面,常見問題有綠屏、花屏、黑屏,這些通常是由編碼器和裝置適配造成的。對於這兩方面問題,我們都需要通過編碼演算法優化和裝置適配來解決。聲網有獨家專利的編碼演算法,裝置適配達到5000多款機型,而且支援的機型還在不斷增多。

遊戲中的實時音視訊

在解決基本的實時音視訊技術難題後,將其應用於遊戲中,還需要我們滿足一些額外的要求。首先,遊戲體驗是最重要的,任何新增的功能都不能影響遊戲體驗。所以,實時音視訊在遊戲中滿足以下要求:

  • 開啟/關閉音視訊功能的瞬間,不會導致遊戲卡頓,遊戲本身的音效音量忽大忽小。

  • 不能因為增加實時音視訊而大幅增加功耗,過多佔用記憶體、CPU等資源,導致遊戲卡頓、降幀。

  • 頻寬佔用要小,不能導致遊戲延時升高。

  • SDK包體積要小,否則會影響遊戲的分發。聲網AMG SDK可以做到1.1MB的體積。

  • 要做到盲源分離,社交、MMO類遊戲,玩家通常會開外放功能,環境音、甚至手指擊打螢幕的聲音,都會變成噪音,傳到對端後放大,導致玩家對話的聲音聽不清。

  • 靈活性,音質、畫質與流暢度,在頻寬有限的情況下是矛盾的,開發者需要有在音質與流暢度之間靈活調整的空間。

結合不同的遊戲場景,遊戲中的實時音視訊還需要舉辦一些特殊功能,比如:

  • 聲音美化:如變聲功能,聲網開放了聲音美化的介面,通過改變引數,開發者可以自定義變聲效果。

  • 聽聲辨位:玩家語音通過我們介面也可以實現方位感和距離感,一般會應用於在FPS類遊戲中,我們也曾詳細分析過其中的原理。我們曾分享過聲網自己的介面實現

遊戲實時音視訊的典型技術架構

前面我們分享了很多場景,包括連麥遊戲、語音電臺、視訊麻將、團戰語音等等,但概括來講,從技術架構上可以分為兩種:群聊和直播。

手遊中實時音視訊的開發經驗與實現技巧

我們先來看一下群聊的架構:假設有3個玩家參與群聊,每個玩家的音視訊流都會實時傳輸到我們的SD-RTN實時通訊網路,再通過它傳到對端。同時,我們的信令訊息系統,也支援玩家傳送文字訊息,進行邀請連麥、接受連麥、排麥等控制。

手遊中實時音視訊的開發經驗與實現技巧

上圖是直播架構。主播端發出音視訊流,先傳到SD-RTN,可以經過轉碼,變成rtmp流通過CDN傳到普通玩家。也可以經過SD-RTN直接傳到VIP玩家,VIP玩家可以和主播連麥互動。與前面一樣的,信令訊息系統可以支援傳送文字訊息,控制連麥請求等。

相關文章