Unreal 5 公佈的同時,Agora Unreal SDK 也已爲你準備好了!

近日,Epic 公佈了他們爲次時代遊戲準備的 Unreal 5 遊戲引擎,以及一份效果驚豔的 Demo。據稱,遊戲中的每個資源有一百萬個繪製三角面,每一幀有超過十億個繪製三角面。也就是說,開發者構建的遊戲場景,能獲得電影特效場景般的視覺體驗。

事實上,聲網也有許多采用 Unreal 的開發者。爲了能讓開發者可以在遊戲中快速實現實時音視頻對話,聲網 Agora Unreal SDK Beta 版也已上線

由於 Unreal 爲開發者提供了兩種開發方式,一種是 Blueprint,即可視化編程,另一種是基於 C++開發。所以 Agora Unreal SDK 也提供了兩個版本—— Blueprint 和 C++,兩個版本均已上傳至 Agora Community 的 Github :

Blueprint版本:https://github.com/AgoraIO-Community/Agora-Unreal-SDK-Blueprint

C++版本:https://github.com/AgoraIO-Community/Agora-Unreal-SDK-CPP

大家可以在 Github 中 fork,並集成到 Unreal 項目中。如果遇到問題可在 Github 提 issue ,或在 RTC 開發者社區發帖 的反饋。

可以實現什麼場景呢?

許多 3A 遊戲大作都是基於 Unreal 引擎開發的,比如堡壘之夜、戰爭機器、火箭聯盟等。在一些遊戲中,隊友之間需要通過語音交流配合。而這種遊戲中的實時語音對話,就可以通過 Agora Unreal SDK 來快速實現。

在類似於吃雞的遊戲中,玩家不僅要能聽到隊友的語音,還要能憑藉聲音來辨別隊友所在的方位。聲網Agora SDK 就支持該功能,它可以將玩家與其在聲場中的位置和方向對應,來提供聽聲辨位的能力。

Agora SDK 優勢

超低延時

遊戲中的語音對話要求實時音視頻技術的延時要小於400甚至300毫秒以內,玩家之間才能達到無障礙溝通的效果。聲網提供的軟件定義實時網SD-RTN™擁有超低延時特性,可做到全球端到端延時小於400ms,延時中位數76ms,處於行業領先水平。

抗弱網

不論是在 4G 或者 Wi-Fi 網絡情況下,玩家隨時會面臨比較複雜的網絡情況。而且,在弱網、非常高丟包情況下,要保證能進行良好的音視頻互動。聲網具備優秀的弱網傳輸和抗丟包算法,可以在 60% 的丟包環境下保障音視頻流暢,70% 的網絡丟包環境下保障語音的流暢。

易於集成

還有一點非常重要的,就是需要將實時音視頻與遊戲進行簡單、快速的結合。聲網的SDK非常簡單易用,一個音視頻通話或直播應用,只需要幾行代碼,30分鐘就能輕鬆搞定。

那麼如何實現呢?我們在本文先來講講如何在 Unreal 中用 Blueprint 快速實現。稍後會分享基於 C++的實現步驟。

Agora Unreal SDK - Blueprint 實現

開發前的準備

  • Unreal 4.23 以上版本

  • Visual Studio 或 Xcode(版本根據 Unreal 配置要求而定)

  • 運行 Windows 7 以上系統的 PC 或 一臺 Mac

  • Agora 註冊賬號一枚(免費註冊,見官網 Agora.io)

  • 如果你的企業網絡存在防火牆,請在聲網文檔中心搜索「應用企業防火牆限制」,進行配置。

新建項目

首先我們要創建一個 Unreal 項目,然後將 Agora SDK 集成到項目中。

現在,讓我們先從草圖開始,創建一個項目。如果已經創建了項目,那麼可以直接跳過這一步。

1.打開 Unreal Engine Editor,選擇 New project。

2.在新項目面板上,在項目類型中選擇 C++,然後給項目起個名,選擇項目保存路徑,完成創建。

3.確保在[your_project]/Source/[project_name]/[project_name].Build.cs文件的PrivateDependencyModuleNames一行,去掉註釋。Unreal 默認是將它註釋掉的,這會導致在編譯的時候報錯。

// Uncomment if you are using Slate UI
PrivateDependencyModuleNames.AddRange(new string[] { "UMG", "Slate", "SlateCore" });

集成Agora SDK

接下來我們在項目中集成 Agora SDK

1.將 SDK 複製到這個路徑下 [your_project]/Plugins

2.把插件依賴添加到:

[your_project]/Source/[project_name]/[project_name].Build.cs 文件

的私有依賴(Private Dependencies)部分

PrivateDependencyModuleNames.AddRange(new string[] { "AgoraPlugin", "AgoraBlueprintable" });

3.重啓 Unreal

4.點擊 Edit->Plugin,在分類中找到 Project->Other,確定插件已經生效

創建遊戲實例

在項目的 Content 界面中,點擊右鍵,選擇 Blueprint Class

在All Classes中輸入“Game Instance”並選擇 Game Instance

把新的 Game Instance 命名爲“AgoraGameInstance_BP”

由於Game Instance會在其它類之前進行初始化,所以我們要先創建 AgoraGameIntance。雙擊進入 AgoraGameInstance_BP 的 Blueprint,在Blueprint的工作區域點擊右鍵會顯示出菜單,輸入“Event Init”,並選擇它。

拖拽出 Event Init,點擊輸出接口後,輸入“Construct”,選擇Construct Object from Class function。

在 Class 的下拉菜單中選擇 Agora,然後將 Outer 的設定爲從 Self 獲取參數。

通過拖拽,將 Construct Agora 輸出 Return Value 引腳設定爲 Promote to variable。把新的變量名設定爲“Agora”,點擊“????”圖標,把它設定爲 public。

“Agora”的輸出,我們找到並選定爲“Initialize”

創建 Game Mode(遊戲模式)

Game Mode 將被用於切換 widgets。就像創建 Game Instance 一樣,在 Blueprint 中創建新的 Game Mode:

命名爲“GameMode_BP”

創建 Widgets(控件)

在項目的 Content 中創建新的目錄 Widgets_BP。在這個目錄下添加兩個 Widgets:右鍵點擊目錄內容,然後選擇 User Interface -> Widget Blueprint:

將它們分別命名爲“IntroductionWidget_BP”和“VideoCallWidget_BP”

Game Mode

回到 GameMode_BP,點擊“+”添加兩個 function,並分別命名爲“SetInctoductionView”和“SetVideoCallView”。

添加兩個變量,“IntroductionWidget_BP”和“VideoCallWidget_BP”,把他們的類型分別改爲 Introduction Widget BP 和 Video Call Widget BP。

然後如下圖所示來設置

Introduction Widget(介紹控件)

進入 InctoductionWidget_BP,創建控件的界面,就像圖中所示的:

在EncriptionTypeComboBox中添加以下變量:

回到繪製模式中,找到 Event Construct 並執行,如圖所示:

InctoductionWidget_BP 會從 AgoraGameInstance_BP 獲得對象 Agora,在控件底部的 Text Block 中設定 Agora SDK 版本。回到設計界面,選擇 Join 按鈕,在右側的 Event 中添加 On Clicked 事件

像圖中一樣,來設定事件執行邏輯:

Video Call Widgets(視頻通話控件)

在 Demo 中找到 Content/ButtonTextures 目錄(你不用打開這個項目,只需要在文件中找到它就行)。所有的按鈕 texture 都保存在這裏。在你項目的 content 中創建一個新的目錄“ButtonTextures”,把這裏所有的 texture 都拖拽放到裏面。

進入 VideoCallLevel_BP,創建 widget 界面:

打開可視化視圖,增加 isLocalAudioMuted、isLocalVideoMute 布爾變量,(Graph),增加 CurrentUserId 64 位整數變量。添加功能與執行邏輯如下圖所示:

進入 Event Graph,然後按照以下步驟執行

創建新的 Level

進入 project Content,創建 Level 目錄(如果之前沒有創建)。右鍵單擊目錄,選擇新 Level:

將 Level 重命名爲“VideoCallLevel_BP”

選擇這個 Leve,點擊頂部的 Blueprint 圖標,選擇 Open Level Blueprint 選項:

如圖中所示執行Event Begin Play

修改 World 與項目設置

進入 Window->World設置,把 GameMode 設爲 GameMode_BP。

進入 Edit->Project設置,選擇 Map&Modes,按照下圖所示設定值。

好了,現在可以運行遊戲了

下週我們將分享基於 Unreal C++ 與 Agora Unreal SDK 如何實現遊戲中的實時音視頻。

同時,我們還想邀請體驗 Agora Unreal SDK Beta 版的開發者們填寫一個有獎問卷,希望大家可以深度參與SDK 的功能規劃。

掃碼填寫問卷

如開發遇到問題,請在 Github 提交 issue

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章