- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章如何基于 Blueprint 在游戏中创建实时音视频功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
近日,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 项目,然后将 Agora SDK 集成到项目中.
现在,让我们先从草图开始,创建一个项目。如果已经创建了项目,那么可以直接跳过这一步.
1.打开 Unreal Engine Editor,选择 New project.
2.在新项目面板上,在项目类型中选择 C++,然后给项目起个名,选择项目保存路径,完成创建.
3.确保在[your_project]/Source/[project_name]/[project_name].Build.cs文件的PrivateDependencyModuleNames一行,去掉注释。Unreal 默认是将它注释掉的,这会导致在编译的时候报错.
集成Agora SDK 。
接下来我们在项目中集成 Agora SDK 。
1.将 SDK 复制到这个路径下 [your_project]/Plugins 。
2.把插件依赖添加到:
[your_project]/Source/[project_name]/[project_name].Build.cs 文件 。
的私有依赖(Private Dependencies)部分 。
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 的功能规划.
总结 。
到此这篇关于Unreal 5 公布的同时Agora Unreal SDK 也已为你准备好了的文章就介绍到这了,更多相关Unreal 5 Agora Unreal SDK 内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/agora_cloud/article/details/106152516 。
最后此篇关于如何基于 Blueprint 在游戏中创建实时音视频功能的文章就讲到这里了,如果你想了解更多关于如何基于 Blueprint 在游戏中创建实时音视频功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试创建一个具有 background-size:100% 100% css 规则的网站。它是位于内容后面的图像,其设计方式无论浏览器窗口的尺寸如何,它仍然可以正常工作。 我认为我的规则(如下所
Camel 2.23.1 Karaf 4.2.4 白羊座蓝图(用于注册所有内容的外部容器) Camel 蓝图(用于 Camel 路线) Camel CXF(用于 rsServer) CXF 核心(用于
我正在尝试将一个 OSGI 蓝图 XML 文件导入到另一个 OSGi 蓝图 XML 文件中。 例如。: 蓝图1.xml: blueprint2.xml:
我尝试做 this Blueprint CSS tutorial ,但无法让任何元素显示在最后 列中。我找到了 this solution ,表示 last 类可能有问题,但它对我不起作用。 有没有其
我使用蓝图作为我的 CSS 框架。我对它自定义选择字段的方式不满意,想恢复默认设置。 这里是 Blueprint 生成的 CSS: select { background-color: #FFFF
近日,Epic 公布了他们为次时代游戏准备的 Unreal 5 游戏引擎,以及一份效果惊艳的 Demo。据称,游戏中的每个资源有一百万个绘制三角面,每一帧有超过十亿个绘制三角面。也就是说,开发者构建
我在理解Blueprint.errorhandler和Blueprint.app_errorhandler之间的区别时遇到了一些麻烦。根据API文档(重点是我的): errorhandler(code
我正在使用 Api Blueprint 为 RESTful 搜索 API 开发 API 文档。我希望能够将过滤器传递给 API,以便我可以进行组装: filter[filtername1]=filte
我正在尝试对从客户那里收到的对象进行分类。 在服务器端,我定义了我的“蓝图”: { // "type1" type: 1, name: String, password: St
我想知道蓝图 CSS 是如何工作的——它是否使用一些标准尺寸(例如 40 像素宽的 24 列,或 48 像素宽的 20 列),通常是否有一个文件指定蓝图设置的细节? 最佳答案 官方quick star
我想使用 blueprint css 框架,但上一个版本发布是在一年多以前。两者都没有在 Github 存储库中提交。维护了吗? 最佳答案 蓝图已经过时了。 试试这个: http://getboots
我已经将 compass 与蓝图一起使用了一段时间,但我不明白的是为什么它会生成所有基本的蓝图 css 类。像这样: #container .span-3 { width: 110px; } #con
我目前有两个 OSGi 包(bundle1 和 bundle2)都通过 EBA 中的蓝图公开服务。在 bundle2 的 blueprint.xml 中,我想从 bundle1 中引用一个服务并将其注
在创建迁移脚本时我可以做这样的事情 Schema::table('books', function(Blueprint $table) { $table->st
所以我对如何使用 Flask 构建页面而不必声明每个 View 感到有点困惑。 我如何制作蓝图以在我要加载的页面上拾取? 假设这些是我的示例页面 templates/ layout.html
我有一个 blueprint.xml 用于部署在 Karaf 3.5.6 下的 Servicemix 下的 camel 应用程序,它看起来有点类似于下面显示的内容:-
我正在研究 Android 布局,我知道有一个新的(呃)东西叫做蓝图。我想知道蓝图 View 提供了什么。 我试过的 1. 添加按钮并通过约束移动它 我看不出两种设计 View (普通和蓝图)之间有什
假设我们在开发过程中开发了一个临时实时数据库,它形成了一个庞大而复杂的结构 json。有没有办法为 Firebase 的实时数据库定义蓝图,以便可以将临时数据库中的结构转移到生产环境,而无需当前临时数
我创建了一个 API,用于提供名为“Thumbnail”(/thumbnails) 的资源 { "name": "toto", "uri": "http://xxx" } 另一方面,我
我需要一些建议。 我的设置中有一些迁移文件。 在其中一些代码中,我看到了以下代码,其余代码中没有,我不确定它的用途 use Illuminate\Database\Schema\Blueprint;
我是一名优秀的程序员,十分优秀!