吃雞遊戲百人語音,如何實現「聽聲辯位」找隊友

2021-09-11 09:17:39 字數 1362 閱讀 8622

一些吃雞遊戲會具備讓玩家能通過聲音辨析隊友位置與距離的功能。具體效果是這樣:

在地圖中的兩個玩家,走近至一定距離內,說話就自動能被對方聽到。走遠了,就無法聽到。

兩個在可聽範圍內的玩家,隨著相對距離遠近的變化,說話音量也會變化

玩家的語音具有方位感,能夠像遊戲內建音效一樣,判斷出對方與自己的相對方位。

可聽範圍的設定

通過聲音體現玩家之間的相對距離

通過聲音反映玩家間的相對方位

其中,第2點和第3點其實都是聲音的空間感,也就是「聽聲辯位」,下文會合併在一起講。

一.可聽範圍的設定

一場吃雞遊戲初始共100個玩家,那麼遊戲開始時,這100個玩家加入乙個語音大頻道,預設每個玩家的語音是靜音狀態。設定可聽範圍是以玩家為圓心,半徑為r的圓形範圍。有其它玩家走入這個圓形範圍內,兩者的語音自動解除靜音,此時說話就能互相聽到了。

二. 聲音的空間感

如果想實現聲音的空間感,帶來3d音效體驗,普遍會利用頭部關聯傳輸演算法(head-related transfer functions, hrtf)。如果要理解它,我們需要先了解三個聲學概念,大腦就是通過他們來判斷聲音在空間中的位置的。

首先是雙耳時差(interaural time differences, itd),人耳通過聲音到達左右耳的時間差來判斷低頻聲源與人的相對水平距離。聲源與雙耳的角度,決定了雙耳時差大小。

由於通過itd無法判斷高頻聲源的位置,這時我們可以利用雙耳水平差(interaural level differences, ild)來進行判斷。由於頭部帶來的聲學屏障(acoustic shadow),會讓左右耳聽到的聲音大小與頻率產生差別,由此大腦會判斷出聲源方位。

另外,還有頻譜效應(spectral effects)。聲音在到達後會因外耳結構而形成反射,從不同方向來的聲音,反射效果也不同,大腦可以根據它來判斷聲源在垂直方向上的相對方位。

hrtf演算法基於以上三種效應對聲源進行了處理,通過耳機收聽時會有一種錯覺,好像聲音來自虛擬空間中特定的位置。很多遊戲都通過hrtf來為玩家提供3d音效。那麼放到吃雞的虛擬環境中,應該怎樣實現呢?

在吃雞的百人地圖中,每個玩家要有自己的id,每個id的實時座標需要被記錄。

圖:通過簡單的座標可獲得隊友方位

見上圖,通過兩個玩家在遊戲地圖中的座標,可以建立座標系,來計算兩個玩家之間的距離。為了敘述便利,我們以綠色玩家為原點,建立直角座標系,可以得到紅色玩家的座標是(-1,1)。

「小公尺槍戰」的新版本通過agora amg sdk實現了上述功能。agora amg 遊戲實時語音sdk,提供了setremotevoiceposition介面(設定遠端使用者的語音位置 ),開發者只需要指定想要的聲像位置和增益大小,就能利用sdk的hrtf演算法,輕鬆實現聽聲辨位的功能。了解sdk及介面詳情請戳這裡

吃雞遊戲百人語音,如何實現「聽聲辯位」找隊友

兩個在可聽範圍內的玩家,隨著相對距離遠近的變化,說話音量也會變化 玩家的語音具有方位感,能夠像遊戲內建音效一樣,判斷出對方與自己的相對方位。可聽範圍的設定 通過聲音體現玩家之間的相對距離 通過聲音反映玩家間的相對方位 根據座標,計算兩個玩家的相對距離。假設聽力範圍的半徑為2,而現在兩者距離約1.4,...

吃雞遊戲 18 11 24

吃雞成癮。為此他決定逃課吃雞!但是學校有規定,曠課到一定次數,是不給予期末考的資格的。因此 決定每門課最多逃兩次。現在告訴你,乙個學期有 nnn 節課程,第 iii 節課的科目是 sis isi 時間為 tit iti 你需要告訴 這個學期他逃課吃雞的最大時間是多少。第一行給出乙個整數n 1 n 1...

百人拉百燈問題

百人拉百燈問題 有100個房間,每個房間裡有一盞燈,這些燈都是滅的,另外還有100個人 第乙個人來到房間裡 如果房間編號能整除1,則拉一下燈 第二個人來到房間裡 如果房間編號能整除2,則拉一下燈 問 當100個人都拉完燈之後,哪些燈是亮的?public class qst 將開著的燈輸出 on ro...