2.5 选择UE5版本:点击“库”,点击“加号”(目前我的电脑已经安装了5.1.1,故已有5.1.1相关图标按钮),在虚幻引擎库中,你可以看到不同版本的Unreal Engine。 找到你想要安装的UE5版本(如5.x版本),点击它旁边的“安装”按钮。 2.7 选择安装位置:选择你希望安装UE5的文件夹位置。建议选择一个有足够空间且便于管理的位置。 勾选相应选项,点击“应用”,然后点击“安装”,等待安装完成即可。
因此本文主要介绍在业务中怎样使用TaskGraph,以及梳理内部的实现原理,UE5和UE4的TaskGraph对比和改进点,当然也会介绍一些TaskGraph多线程优化的内容。 这里只简单说一下Relaxed就是程序完全不关心内存是否同步,而SequentiallyConsistent会严格保证顺序 而UE5直接废弃掉了原子变量TAtomic,直接使用std::atomic, UE5提供了Scheduler这样的新机制,而且默认使用新机制,可以不限数量,支持处理器组(操作系统规定处理器组最多64个线程,超过了就会分组),完美满足超过64核的机器使用。 UE5默认是FTaskGraphCompatibilityImplementation,可通过关掉GUseNewTaskBackend控制台指令切回旧版实现 处理器组是什么,这里不细说,可以参考Processor 这部分是UE5特有的,为了支持任意多个线程新加的机制。
这些容器的代码本身经过了高度优化和打磨,性能表现非常优秀,UE自己的TaskGraph中Task管理以及多线程调度都是基于这个容器来实现的。 基础知识 在开始之前,先来说说UE提供的另一个队列TQueue,为什么UE要另搞一套LockFree容器来作为TaskGraph的底层容器而不是直接使用TQueue。 UE就用了一种取巧的做法,前面也说了UE的LockFreeList容器,提供了对象池,而对象池本身的节点,是TLockFreeAllocOnceIndexedAllocator里分配的。 另外UE5的TaskGraphInterface内部管理Task换成了一套新的Scheduler,本身也没有这个26个线程的限制,所以UE5不用做这个修改,当然如果特殊需要可以把控制台变量GUseNewTaskBackend 改为0,这样可以切回UE4的TaskGraphInterface版本。
1.介绍UE5 UE,英文全称Unreal Engineer,中文全称虚幻引擎,5是UE的最新版本。它是由Epic Games开发的一款全面的游戏开发平台。 2024年热度最高的3A游戏“黑神话悟空”就是由UE5制作。 2.什么是游戏引擎 游戏引擎是一套用于创建电子游戏的软件开发工具。 3.介绍UE和Unity Unreal Engine(UE)和Unity都是当今游戏开发中最受欢迎的两个游戏引擎,它们各自具有独特的优势,适用于不同类型的游戏开发和其他应用领域。 C++支持:虽然UE也有基于蓝图的脚本系统,但对于需要深度定制的项目,UE支持C++编程,提供了更高的灵活性和控制力。 强大的工具集:UE内置了许多高级工具,比如动画编辑器、物理模拟等,适合于制作大型、复杂的项目。
本文介绍 两个知识点Plugin/Module 插件和模块的联系区别,同时介绍插件和我们的Source中创建多模块。 ** 一、Plugin/Module 插件和模块的联系区别 ** 1> 一个插件至少有一个模块 2>一般插件都是做底层做通用设计的,而模块做的负责的我理解为逻辑 ProjectName.Build.cs public PrivateDependencyModuleNames 与上面相反了,按private理解 二、在Plugin中创建多模块以及在我们的Source中创建多模块 1>我的SelectDialog插件
UE4插件研发 UE4插件扫盲 UE4插件是什么 UE4插件的作用 UE4引擎、项目、插件的区别 引擎自带的插件浏览器 插件目录结构 插件配置文件说明 UE4插件的创建方法 插件代码的执行过程 四种常用模式的插件模板 第三方库的引入 牛刀小试 创建Actor到视图插件 插件打包 插件发布 常见的问题 插件项目案例 UE4插件扫盲 UE4插件是什么 UE4引擎和UE4项目是由各个模块组成的,其主要编程语言是C++。 进入发布者门户(Publisher Portal) 申请成为UE4商城卖家主要有5步,需要添加必要信息。 插件编译版本 用户使用插件时的UE4版本需要与插件编译时的UE4版本一致,不然会警告提示版本不一致而丢失插件。 所以发布插件时要注明插件所支持的UE4版本号。 插件项目案例 UE4图表插件 B站链接 UE4路径跟随插件 B站链接 更多插件链接,敬请关注。
TSet和TMap是UE里面最常用的容器之一,和数组不同的是,元素本身并不连续存储,而是通过hash映射存储,因此相对于数组,查询元素是非常快速的。 因为把很大的Hash值映射到了有限的范围内,那一定有概率发生Hash冲突,UE的解决办法是先不管冲突,拿到index访问TSetElement。 这就是UE4这两个容器最有特色的地方。 所以,UE的这两个容器,即可以排序,又可以快速查找,游戏业务用起来就真的非常爽了。 因为UE的容器,都实现了begin(),end(),所以支持C++的range-for语法,可以放心使用:
很多开发者在UE程序像素流推流的过程中,会遇到插件1和2版本不兼容、依托WebRTC传输数据字节有限,以及推流并发数受限等问题,以下逐一分析解答。 像素流1和2插件版本迁移问题UE像素流插件支持完成基础的三维程序推流到网页的过程,可以实现单机单并发的演示效果。 但是在二次开发、业务集成上具有局限性,并且版本2与1有差异,像素流2没有直接使用WebRTC,迁移新插件需要对蓝图节点、C++公共API和功能进行更改,UE程序无法实现平滑升级。 实时云渲染技术从底层架构完全兼容各类2D/3D开发引擎,对UE程序无要求,同时支持像素流送1和2,也可无需集成像素流插件,即可实现一键推流,采用松耦合的方式降低风险和开发变更的工作量,UE开发者专注于3D 像素流运行多个实例数量受限根据UE官方文档显示,针对不同系列的NVIDIA显卡,UE像素流推流数量有所不同。
UE5中 uDraper 插件无法编译 C++ 工程的修复 uDraper是用来做布料模拟的插件。现在出现的问题是安装了 uDraper 之后无法编译 C++ 工程。 经典报错就是: Expecting to find a type to be declared in a module rules named 'Vitrum' in UE5Rules, Version 解决方案 第一步 更新引擎的插件 首先找到 uDraper 的安装目录,在安装目录下找到插件目录: 然后找到对应引擎编号的插件。 [UE5 Root]\Engine\Binaries\DotNET\UnrealBuildTool: 复制好之后,编辑 [UE5 Root]\Engine\Build\BatchFiles\Build.bat ,并将文件中的 UnrealBuildTool.dll 替换成 UnrealBuildTool.DraperHook.dll: 然后修改 [UE5 Root]\Engine\Config\BaseEngine.ini
这个接口是广义上的概念,不仅指C++的纯虚基类,也包括一些全局变量,全局函数等,具体形式就像下面RHI.h头文件这样: 为什么UE需要封装RHI这么一层接口呢? UE5的RHI里也像Vulkan一样,把顶点或索引Buffer这样的说法废弃了,他们本质上都是一维数据,所以也用统一个类型表示就足够了。 再比如创建vs和ps,最终调用的是UE自己实现的ShaderFactory,内部维护了一个ShaderCache,如果没有对应缓存UE就会创建TVulkanBaseShader对应的对象,调用Setup 通过搜索FParallelCommandListSet可以看到UE5有很多地方都在并行提交,比如在绘制网格BasePass的时候,会切分出多个线程的Task来执行。 其实仔细思考,场景中很多不同的网格的阴影和BasePass等,这些网格之间并没有关系,虽然都是往同样的RT或GBuffer上绘制,虽然资源相同,但因为这里只是提交命令的收集,完全并行起来也不会有问题,这也是UE5
StructUtils是UE5新增的一个针对结构体存储和反射的辅助插件。 之前在说UE5的ECS框架Mass时有粗略提到这个插件里的相关内容,比如Mass在实现ECS的Component就是使用了FInstancedStruct来保存元信息。 等,可以很大程度增强引擎的UStruct功能,又因为这个插件本身没有过多依赖,所以移植到UE4使用也不难。 StructUtils这么有用的库,搜索全网基本没有发现相关资料,独乐乐不如众乐乐(封面番《孤独摇滚》就讲的这故事),为了造福国内开发者普及UE5,本文主要就来揭秘这些类的使用方法和内部原理。 而UE5就可以使用FInstancedStruct让表格实现多态。
本文带大家认识UE4的插件, Plugin UE4 Engine中插件代码占很大一部分,可参考下图,里面的Editor, Developer, Runtime, Slate举例都是大家比较熟悉的几个 "Description": "tianhuajian created", //插件描述 "Category": "Other", //插件所属组 "CreatedBy": "tianhuajian ", //插件创建者 "CreatedByURL": "", //创建者网站 "DocsURL": "", //插件的文档URL "MarketplaceURL": "", //虚幻商城 true, //是否可包含Content "IsBetaVersion": false, //是否是测试版 "IsExperimentalVersion": false, //是否是实验性的版本, UE4 插件中会有显示 "Installed": false, //是否安装的 "Modules": [ //可包含多个模块 { "Name": "TestPlg", //重要:模块名称 "
世界分区,是UE5给大世界项目提供的一套新的解决方案。相比于UE4的WorldComposition有了非常多的改进。 除了WorldPartition,UE5还有很多其他模块也是这样管理的,包括SmartObject,ZoneGraph等。 LevelInstance 这个是ue5的一个新的机制,有点类似unity的prefab。 在ue4的时候,每个子关卡都可以有个自己的蓝图,但是ue5的WorldPartition都是一个大关卡了,那么正常情况只有一个关卡蓝图,这对于策划来说是很坑的。 ContentBundle 这个功能肯定有人好奇是什么,官方连文档也没有,但是ue5的WorldPartition里还提供了一个编辑器。 其实这个功能是给GameFeature用的。
无论是用法线图/深度图或其他的图做后处理描边,本质都是求当前像素和上下左右像素的差值,差值较大的像素就是边缘。正好虚幻材质里有ddx/ddy这两个节点,可以直接算相邻像素的差值,而且有硬件的Buff加持,所以比自己手动偏移UV再采样贴图要省很多开销,除此外连连看也比传统描边做法简单很多,下面是具体做法。
动画在UE4/UE5项目中,往往不仅是GPU和渲染线程开销大户,也是游戏线程的开销大户。 骨骼动画的本质 UE4/UE5的骨骼动画其实都是通过SkeletalMeshComponent来实现的。 UE4/UE5的SkeletalMeshComponent,其实就是把美术做的多个动画原始的Pose资源(AnimSequence),通过动画蓝图做混合,得到最终的一个Pose,再根据这个Pose做蒙皮求得每个顶点实际位置并绘制的过程 UE5也已经支持了动画蓝图里面在子线程更新变量,基本可以让事件图表什么都不做或只做很简单的事情,这样游戏线程在动画更新前基本上可以做到没开销。 官方也提供了一个动画共享插件,专门做这件事的,本身原理也是通过CopyPose来实现。
我们平常一直说UE4/UE5的项目不要使用STL也是因为这个机制。 最常用的就是下面几个: Ansi:这个是标准的分配器,也就是让UE4不使用任何额外的内存管理,就直接走平台原生的new和delete,有时候需要用到平台的一些内存工具,开到这个模式会非常好。 UE5也提供了Stomp2可以运行时通过命令行-stomp2malloc打开 PoisonProxy:这个模式就像名字说的一样,把内存都涂上毒。
使用的版本:UE5 Early Access 地形系统介绍 UE 可以直接在编辑器中创建并编辑地形,编辑地形的模式有两种:Sculpt 和 Paint。 Sculpt 的作用是对地形进行造型和雕刻,Sculpt 对地形产生的修改最终会体现在 Heightmap 即高度图中,UE 会在运行时对这张图进行采样,从而产生地形 Mesh,很经典的做法。 在运行时,UE 会对当前地块的 Weightmap 和 Layer 纹理进行采样,并进行混合,最终形成地表。 要在 UE 中创建地形,需要先切换到 Landscape Editing Mode: Landscape Editing Mode 在 Manage 面板,我们可以输入参数创建新的地形: Landscape 这时候你可以注意到,左边的 Paint 面板已经自动识别到了我们刚刚创建的几个 Layer: Paint Layers 我们需要为每一层 Layer 创建一个 LayerInfo Object,后面 UE
更新Launcher后可以在顶上看到UE5的tab页,点击下载 确认 怀着激动的心情等待下载,家里电信下载速度还可以 10分钟左右,下好开冲! 呵呵,只好重启 随便开一个老工程,会自动升级 跟UE4一样,第一次要等待漫长的编译Shader 进来了 先随便运行一下 虚幻5编辑器界面 quabqi的视频 · 1705 播放 编辑器感觉使用起来和 UE4差不多,就是底下的默认隐藏了,要按Ctrl+Space才能打开。 打开后,这场景真的很细节 打开一块石头 从里往外看 最后在编辑器里运行起来,真的震撼,感受一下 UE5官方DEMO quabqi的视频 · 2689 播放 我是4K桌面,知乎上传的视频不知道为什么是糊的
ControlFlows是UE5新增的一个插件,针对上述这种流程式的业务模型,封装了一套通用的类状态机但更简化的流程控制框架。 就拿上述登录流程来说,如果使用ControlFlows这个插件来实现,可以让整个流程简化成几个子业务函数和一个整体的流程配置,当需要修改流程时不用改每一步的子业务函数,只修改对应的流程配置即可。 插件本身的实现对引擎的新功能没有依赖,所以理论上手动移植到UE4上应该也会比较容易。
而通过Web插件允许开发者创建丰富的基于Web HTML5的用户界面,它由内置在UE4中的web浏览器提供支持,包括对Windows、Mac、Linux、Android和iOS的支持。 基于这种插件技术,普通的前端开发人员也可以开发UE4界面上丰富的2d页面效果。 下面分享我们UE4做的数字孪生的几个案例,其中的2d页面是通过Vue结合html5技术和echart图表插件进行开发的: 下面我们介绍WebUI插件的使用 下载插件 插件的下载地址是: 如果你发现这个地址打开是 安装到引擎 若要安装WebUI插件到引擎,请将下载的文件解压到以下引擎文件中: 需要注意已下载的插件版本要与引擎版本对应。 PS:安装之后,需要重启UE编辑器。 启用插件 开启UE4 打开或者新开一个项目之后,打开菜单编辑->插件,然后在插件窗口右上角的搜索栏中搜索 Web UI。确保WebUI插件的已启用复选框已勾选。启用插件后,重新启动虚幻引擎。