虚幻引擎4.7版是目前为止我们最大的一次更新,包括大世界中海量实例化对象渲染、新的树叶与植被渲 染、HDR纹理贴图支持、编辑器内部动画编辑功能以及数百个不同的优化与增强功能。
加入了多个期待度极高功能:您现在可以直接在关卡中使用组件(components)组装出全新的对象 (actors),甚至是通过蓝图(Blueprint)可视化脚本或C++直接创建自定义的组件(components)类型。重新 设计的新版蓝图编辑器界面,采用了统一的界面布局。虚幻编辑器现在可以自动检测到新的资源文件并自动导入 ,向引擎导入资源从未如此简单。
HTML5与WebGL已经准备就绪,傻瓜式单击鼠标即可发布您的游戏并在兼容的网页浏览器上运行起来。您 现在可以在Mac主机上直接构建、打包、发布安卓平台的项目。对于虚拟现实设备的开发者来说,新增的 ’VR preview’功能让您可以直接在编辑器中进入VR显示模式。另外,您现在可以在代码级项目中直 接访问手部动作感应器“Leap Motion”。最后,我们现在在所有发行版本中的包含了全部C++引擎代 码,这让您的学习与调试变得更加简单。
这个版本同样包括来自虚幻开发者社群提供的38个超棒的内容。Epic要特别感谢 Sébastien Rombauts为我们带来的Git source control插件,这实在是太棒了!同时 ,我们也要感谢以下各位做出的贡献:
Artem V. Navrotskiy (bozaro), ArneBezuijen, Black Phoenix (PheonixBlack), codetackler, Daniel Zeligman (dzeligman), Derek van Vliet (derekvanvliet), Fazouane Marouane (fazouane- marouane), Jesus Fernandez (jsfdez), Lukasz Baran (iniside), Moritz Wundke (moritz-wundke), Michael Kösel (TheCodez), Michael Allar (Allar), Marat Radchenko (slonopotamus), Pedja Lubomirovic (3dluvr), Pierdek, Quadtree, Rama (EverNewJoy), Robert Wallis (robert-wallis), Rick Yorgason (Skrapion), Simon Taylor (simontaylor81), Stephen Whittle (stephenwhittle), Tobias Mollstam (mollstam), yaakuro
主要新功能
真实的植被光照
新的植物材质模式(Shading model)可以为草、叶片、纸张等材质提供可透射到背面的光照效果。
在表面另一侧的漫反射光照成为着色侧的半投射光照
- 透射光照混合了正面固有色信息与视角关联背面透射
- 可以使用次表面色彩(Subsurface color)这一通道来过滤光照,用来模拟厚度变化(比如添 加叶脉效果)
- 记住,在这个材质模式下使用半透明通道只会影响阴影的衰减距离
在大世界中渲染大量植被
植被系统已经为超大型、开放式的场景做了相关优化!
现在我们拥有了一个层级式系统来管理与剔除百万级植物场景。同时,我们也增加了一个针对模型LOD的 平滑视觉过渡,它使用延时淡出方式来抑制让人讨厌的LOD切换时的闪烁。!
关卡内组件编辑
组件(Components)现在可以在关卡中直接添加到对象(Actors )。这允许您直接在关卡中组装出新的对象而不需要事先创建蓝图类。这对于希望直接在关卡中实验新 的功能组合来说,非常的方便。
您现在可以在三维关卡中直接选择独立的组件(Components),使用您熟悉的操作器 工具去移动它或者编辑它的属性。
当您完成了调整之后,点击“蓝图/添加脚本”(Blueprint / Add Script)就可以保存为可复用的类或是为它添加脚本。这会自动覆盖您之 前的类。
可放置的空对象(Actors)
现在您可以拖放一个“空对象”(empty actors)进 您的关卡!
现在也支持空Pawn(Empty pawns)与空角色(Empty Character)。这让您可以使用新的关卡内组件编 辑功能在关卡中去构建一些有意思的对象。
蓝图式组件
直接使用蓝图(Blueprint)脚本创建您自己的组件(components)类型 !您可以保存这些组件并在其他对象中复用!
首先,点击“添加组件”(Add Component),之后选择顶部的 “新建蓝图脚本组件…”(New Blueprint Script Component…)。 您可以从内容浏览器中调用“新建蓝图”(New Blueprint…)窗口,或者在关卡中的任意对象 上创建。
然后,为您的新组件选择一个父类。“场景组件” (Scene Components)内部拥有一个3D空间位置,而“对象组件”(Actor Components)只是一个逻辑脚本。
接下来是有趣的部分了 -- 为您的组件编写蓝图脚本代码。在下图的范例中我们使用 Tick事件驱动每帧都沿着Yaw轴旋转这个对象本身。并将这个组件命名为 “Spinner”,应为它会让对象不停的旋转!
现在,您可以拖动这个组件放置到场景中的任何的对象上,游戏开始后对象就会旋转 起来。一个可复用的功能模块就诞生了!
您也可以把它拖放到一个普通的蓝图类里去。您的新组件也会一直显示在“添加新组件 ”(Add Component)的菜单中(放置在’自定义’分类里),在 内容浏览器里也和其他组件一样。
资源自动导入
导入模型、音频、贴图从未如此简单。简单地保存您的资源源文件在您的项目内容文 件夹中,编辑器就会自动导入这个新的文件。准备好在虚幻引擎4中使用吧!
如果您用外部程序更新了这些源文件,编辑器也会检测到并自动重新导入这些内容! 这使得您迭代更新游戏内容变得更加快速。
这一功能默认是打开的。但是您可以通过编辑器属性中的“载入与保存”(Loading & Saving)选项组中的“监视资源文件夹”(Monitor Content Directories)功能 来开关它。
重新设计的蓝图编辑器UI
为了更便于使用,蓝图编辑器已经重新设计。原有的三个编辑模式完全整合 为一个统一的窗口,而且还有很多其他的改进。
您现在可以自由的排布组合各个面板,像是预览视图与节点图谱这样的视窗现在可以同时显示了!
“我的蓝图”(My Blueprint)视窗现在更加的整洁、干净,便于您添加 新的功能与变量。
在组件面板选择您的对象名,将会显示类的默认值(或者您可以点击工具栏上的"类默认 值")。如需查看您蓝图的设置,请使用工具栏的"类设置"按钮( 之前,它的名称为“蓝图属性”)
HTML5和WebGL支持 (仅可用于Windows)
现在您可以通过启动器打包并在网络浏览器中运行您的游戏。
简单的完成 Emscripten SDK的安装,重启您的编辑器 与启动器,在启动按钮的下拉选项中选择一个网页浏览器即可!
HTML5使用时的一些注意事项:
- 开发过程中需要Firefox, Safari或者64位版本Chrome。(shipping版本可以工作在32位版本的 Chrome上)
- 当前HTML5只支持Windows平台,我们将在下一版本中支持Mac。
- 您的游戏也许需要一些额外的准备工作才能运行,特别是首次开发HTML5项目。项目的资源与代 码都需要为网页浏览器做些优化。
OpenEXR:高动态范围HDR贴图
现在可以使用OpenEXR格式来导入2D的高动态范围(HDR)贴图了 !您可以在每个通道存储16位色深信息(大约相当于30级曝光)。
(之前的版本您只能将HDR文件作为Cube Map导入。)
使用Mac开发安卓版本
现在OS X版本的引擎完全支持开发安卓版本了!
苹果电脑用户现在可以构建、打包安卓版本程序,并通过编辑器或者命令行工具发布到安卓设备上
- 您需要安装Java for OS X与安卓SDK。您可以使用Engine/Extras/Android文件夹下的TADP来安装它们。
- 安装完成后,您需要重启编辑器或者是在项目设置中找到安卓SDK的部分指定正确的SDK路径。
完整引擎C++源代码与调试符
现在您用启动器安装的虚幻引擎包括了所有的完整C++源代码与调试符 !
这可以使您在调试时无缝地接入引擎代码,同时,在程序崩溃时获得完全地 调用堆栈。您无需再自己编译引擎就可以对引擎开始完整调试。
请记住,如果您要重新编译引擎您仍然需要访问GitHub以获取所有必须 的文件。
编辑器内直接使用VR模式
我们在编辑器中添加了新的’VR preview’按钮。如果您已经插好了 Oculus Rift设备,您现在可以立即在虚拟现实(VR)模式下运行您的游戏 。
点击“VR Preview”,编辑器窗口会最小化,您的游戏会直接在Oculus Rift设备上弹出显示 。
Leap Motion手部动作感应器插件*Beta*
UE4现在通过插件支持Leap Motion设备。您可以直接在项目中使用这一手部动作感应 装置。相关API同时暴露给蓝图脚本与代码,所以任何类型的项目都可以利用这一技术。
想要获取如何使用这一插件的范例,请访问Leap Motion的官方网站 https://www.leapmotion.com。目前这一插件仅支 持GitHub自编译版本的引擎,您可以直接在Leap网站上下载到这个插件。
在内容浏览器中显示C++类
您的项目中的C++类现在可以显示在内容浏览器中了!
您也可以很简单的在内容浏览器中创建新的C++类!它会自动编译和显示在编辑器中 来供您使用!
双击C++类图标,可以直接调用Visual studio或者Xcode中的源码 。右键点击可以基于现有类创建新的类。
Morph Target变形目标动画超限化
现在变形目标动画的权重值可以超过100%了,这可以使您得到超夸张的动画效果,当 然低于0%也可以。
功能包与内容包
您现在可以方便的在内容浏览器中添加新的“功能”包与内容 包。这些包可以包括任意的资源、蓝图类或者C++类。
所有已有的模板项目功能都已经打包成为功能包了。所以您可以先添加第一人称功能包 ,然后再添加载具功能包,这样您就可以在您的项目里同时使用这两套功能了!
在内容浏览器中,只需要点击“添加新的”(Add New),然后再点 “添加功能或内容包…”(Add Feature or Content Pack…),文 件就会导入您的项目了,很多包会包含内置的教程,也会一并导入!
甚至起始资源包(Starter Content)也可以在任何时候导入您的项目。其实,我们 已经有了一个新的“为移动平台优化”的起始资源包让您选择。
动画编辑系统
现在您可以直接在Persona动画工具中编辑动画!
拖动时间滑块,选择骨骼,使用操作器移动、旋转骨骼,并在当 前时间设置关键帧。(关键帧设置的快捷键是‘S’)
在Persona编辑器内,所有的动画曲线编辑都会被存储到一个“叠加层” (additive layer)。当您重新导入原始动画数据,您所做的修改仍然被保存着!这个层数据 只存在于Persona编辑器内。只需要在工具栏中点击“应用”提交您的修改,就可 以在游戏中看到动画的修改了!
您也可以完整保存您的定制动画!使用工具栏“Create Asset”(创建资 源)按钮从参考姿势或您的当前姿势或动画中创建新的动画。
一些注意事项:
- 动画曲线可以在您不需要的时候取消或者删除
- 一旦bake完成,就只能输出bake完的动画。附加的曲线不会被输出。
- 当您重定向您的动画目标,附加曲线不会被重定向。所以,请完成Bake之后再执行重定向。
即时骨骼控制器预览
骨骼控制器节点现在可以使用视图中的操作器直接做交互式调整!
目前这个功能只工作在TwoBoneIK, ModifyBone、Fabrik三种解算器上,不过我们会陆续添加更多的支持 。
使用物理模拟解算创建动画
您可以在物理编辑器(PhAT)中通过录制物理模拟来将其保存为动画 !
点击工具栏上的“Record”按钮,就可以开始录制下视窗中的物理交互, 之后点击“Stop”,模拟的结果就存储为动画了。
您同样可以在关卡编辑器中捕捉动画!
- 在关卡编辑器工具栏上找到“Play”按键,在“Play”按键的下拉选项 中点击“Simulate”。
- 在场景中选中您需要记录模拟动画的骨骼模型
- 在模型上右键点击“Keep Simulated Changes”(或者按 “K”键),就可以保存动画了!
项目启动器
全新的项目启动器界面拥有更多控制选项,让您更加容易的运行或者打包您的游戏项 目!
项目启动器拥有多项功能帮助您在多种不同设备、多种不同设置间快速测试您的项目 ,并同时运行多个会话。您可以更简单的定制不同的构建类型与打包设置,然后在任意连接好的设备上 启动您的项目。
如果您需要以下这些,可以使用自定义启动选项(Custom Launch Profiles)构建版 本。
- 将所有高级选项都暴露出来。
- 选择特定需要构建的内容。
- 一次构建多个不同平台的版本。
- 打包与保存多个版本然后在其他地方运行,或者是稍后再运行。
当然,您仍然可以使用主工具栏上的’启动’按钮来来运行您的游戏。但 是,如果您需要更多的灵活性,您还是可以轻松的通过“启动”按钮的下拉菜单或者是主菜单中的窗 口菜单来快速打开新的项目启动器。
蓝图合并工具
您现在可以使用新的蓝图合并工具去将不同的蓝图合并到一起。
这个工具会将两个蓝图做可视化的对比,以帮助您合并他们!这对于同一个蓝图被不同的人反复修改之 后的合并来说是非常棒的工具。
您可以用以下这些方法调用这个工具:
- 在蓝图编辑器中点击文件->合并。
- 在源码控制显示为冲突的组件上点击右键,然后选择合并。
- 使用命令行工具,运行: UE4Editor.exe -diff [options] <File A> <File B> <Common Base File> <Output File>
Git源码控制插件(Beta!)
感谢社区成员Sébastien Rombauts友情贡献的Git源码控制插件!
当您将项目连接到Git存储区,编辑器就可以支持大部分的源码控制功能,比如添加、删除文件,提交修 改,显示文件历史,比较文件,显示当前的源码控制状态等等。
AI 感知系统:支持蓝图脚本
AI感知系统(AI Perception System)现在可以使用蓝图脚本来设置了。只需要为您 得AI添加AI感知组件,就可以观察、调整相关的属性与事件了。
新的项目模板附带教程
现在,每一个新的项目模板都有一个简单的概要教程。它大致介绍了模板的组件构成 与类是如何工作的。
只需要在内容浏览器里点击教程预览图上的“播放”按钮 ,就可以开始播放教程!
内容包与功能包也可以包含自己的教程。如果添加了新的包在您的项目,您也看看附带的教程去学习一 下这些包的内容!
新的缩略图视觉效果
现在编辑器能够以新的彩色风格显示组件缩略图了
同时,现在C++类与蓝图类现在也可以显示为交互式的3D缩略图。缩略图右 下角的小图标会显示出它的父类。
Paper2D:增强了拼贴式地图编辑器
我们在拼贴地图编辑器里添加了一些很有用的图层编辑功能!
- 各个层可以重新排序了,您可以让特定的层上移或下移。
- 您现在可以在选中的层上控制绘画,而不是仅仅在最上面的层。
- 整个编辑过程中,被选中的层会被锁定。
- 被选中的层会有一个帮助网格被渲染出来帮助您正确对齐其他未选中的层。
- 层命名功能现在工作起来与关卡概要视图非常相似。
- 层可以复制了。
- 拼贴地图现在可以在关卡中重用或实例化,这意味着它现在是一个资源组件了。
- 新添加的层现在有了更具可读性的命名。
- 注意: 拼贴地图现在虚幻引擎里仍然是一个试验性的功能。
Paper2D: 翻页式动画碰撞检测
翻页式动画资源允许您创建2D动画序列。现在,您可以为您的动画序列创建 碰撞属性!
翻页式动画资源有了一组新的碰撞来源属性,用来控制碰撞数据的来源。
- 无碰撞(No Collision): 这个翻页式动画资源不进行碰撞检测
- 使用第一帧碰撞(First Frame Collision): 这个翻页式动画资源 的碰撞检测忽略动画,它一直使用动画资源的第一帧数据来做碰撞检测。
- 每一帧都做碰撞数据(Each Frame Collision): 这个翻页式动画资源的碰 撞数据基于动画的每一帧更新。这一设置下,每帧都更新新的碰撞数据。(注意:这个设置可能会消耗大量系统 资源,因为它需要在每一帧重新创建物理状态)
使用时的一些注意事项:
- 在很多时候,我们只需要在翻页式动画资源上附加一个碰撞体(例如一个碰撞盒)就可以了, 而不需要真的从图片资源中获取碰撞数据,尤其是当您的一些碰撞区域之间有互相重叠的时候。
- 角色移动依然是依赖胶囊体碰撞检测,多数情况下胶囊体设置为碰撞所有(BlockAll),而翻 页式动画资源的碰撞应该放在一个不同的碰撞通道里,防止它们之间互相卡住。 (通常检测移动与阻挡使用胶囊 体,检测互相穿插、碰撞或者射线使用翻页式动画自己的碰撞)
UI: 支持自定义光标
现在您可以在项目中使用软件光标创建自定义的控件 (custom Widgets)。控件可以使用UMG的所有功能,像是添加文字、血条、工具介绍以及一切您想在 光标上添加的功能。
软件光标在以下案例中会非常有用:
• 为不支持硬件光标的平台添加光标 ,比如为主机游戏添加虚拟鼠标光标。
• 需要为光标添加更多丰富的视觉效 果,比如动画或者其他复杂的视觉交互。
• 保持在PC、Mac、Linux各个平台上 保持一致的光标视觉效果,而不需要为特定平台制作特定格式。
在项目设置中新的“用户界面” (User Interface)部分中设置是否使用软件光标控件。如果您没有特殊的设置,会使用默认 的硬件光标。
记住:软件光标的运动受限于游戏的帧率刷新,而不像是硬件光标由操作系统来渲染 。这个功能主要权衡点就是这个。
Unreal Motion Graphics(虚幻运动图形):新的UI控件绑定系统
新的UI控件绑定系统用于控件与子属性、功能集之间的绑定,这是一个很大的改进并 极大的提升了性能!
使用新的绑定系统的一些注意事项:
• 绑定基于一个可动态赋值的值域, 而不是蓝图脚本。
• 直接绑定C++或者蓝图功能集都支持 。
• 一些简单的转换都是自动处理的。 (例如线性颜色转换为Slate颜色,2D贴图转换为Slate画刷)
• 这一修改使得属性绑定变得更快。 (差不多有10倍的提升)
• 旧的绑定方式仍然能够工作,但是 为了提升性能,请考虑升级到新的绑定系统。
可视化日志工具(AI可视化工具)
我们有了一个全新的功能超多的可视化日志工具。他的设计目的是 帮助您更好的调整与修正您游戏项目中的AI行为!
- 将事件记录下来,然后通过强大的工具基于时间线来搜索 。看看这个视频范例吧。
- 时间线上的对象在有警告时会显示为黄色,在出现错误时 会显示为红色。
- 您现在可以在游戏暂停状态下使用特殊的调试摄影机在场 景中运动观察。
- 将可视化日志工具内容保存为状态报告。报告中会带有超 链接让您可以快速过滤日志,便于分析。
半透明对象排序控制
这一新功能允许您手动设置半透明对象的渲染排序。这对2D游戏来说非常有用!
在项目的渲染设置中,勾选新的“半透明排序策略”( Translucent Sort Policy)选项
- 基于距离排序(Sort by Distance): 这种排序方式基于摄影机到对象的轴点之间的距离。这一方式通常运用于3D游戏。
- 基于Z轴投射距离排序(Sort by Projected Z): 这一排序方式在后处理中计算摄影机空间的Z深度用于排序。这一设置可以抑制由于摄影 机旋转导致的对象渲染闪烁。
- 基于特定轴向排序(Sort Along Axis ): 排序基于某个特定的轴向,这一方式主要用于2D游戏中。这个特定的轴向称为半透明排序轴 (Translucent Sort Axis),您同样可以在项目的渲染设置中去编辑它(默认的轴向是 -Y)
修正了蓝图中的循环依赖
蓝图的加载被重新设计,所有现在可以处理任何被“循环”了的情况。您 的蓝图现在可以有各种混合、交叉调用,重要的是:它会在下一次循环时正确加载。
当然如果您有太多的蓝图加载错误,同样会导致蓝图工作在混乱的状态下!
Unreal C++编程改进
我们持续的改进,让C++在虚幻引擎中更加易用。
- 不需要特殊的构造函数!类的构造函数不再需要采取对象 初始化参数。
- 创建虚幻类的子对象现在有新的简单语法。
多线程动画
动画姿势的解算现在被分配到多核CPU的各个核心,这整体上降低了引擎解算动画的负载。
这一改进将提升游戏中有大量的骨骼模型时的性能!
在安卓设备上实现桌面级渲染*BETA* (OpenGL ES 3.1 w/ AEP)
使用OpenGL ES 3.1(加上安卓扩展包功能)将带给高端安卓设备完全桌面级 的渲染效果。这一功能目前还在Beta测试中,期待各位的反馈。
- “ES3.1+AEP” 现在是构建 与打包时的一个可选目标平台。
- Nvidia的Tegra K1设备(例如:NVIDIA Shield Tablet) 已 经可以用于开发使用。未来会有更多更多支持AEP的设备。
- 在安卓项目设置中打开“Enable OpenGL ES31 + AEP” 选项。
- 注意: 目前,您需要从GitHub上获取源码,自己编译版本 才能支持这个功能。
- 注意: 仅依赖蓝图编程的项目也需要重新编译UE4Game才能 支持OpenGL ES 3.1,请打开BaseEngine.ini设置文件中的 bBuildForES31选项。
附加下载内容 (DLC) 打包 *BETA*
附加下载内容 (DLC) 现在可以单独打包用于发布了。
目前这个功能还处于beta测试中,需要使用命令行工具来调用。创 建附加DLC内容需要放置在游戏插件内容文件夹中,然后使用新的打包工具选择对应的平台来优化与打包您的新内 容。
这公共通过游戏的’资源组件注册表’(asset registry)来获取哪些内容已经被之前发行版的游戏所包含,哪些需要被新的DLC所包含而需要打包。
要使用这个功能,运行主游戏打包工具并附加命令行开关“- CreateReleaseVersion=x.y”, 之后针对每一个DLC插件使用 “- BasedOnReleaseVersion=x.y -DLCName=MyPluginName”。
安卓平台电影文件播放
加载影片与启动影片现在都可以在安卓设备商 播放了,您可以在项目设置中配置您的启动影片。
要在安卓设备上播放的影片必须是MP4格式。而且,需要安卓4.0以 上才能支持影片播放。
在编辑器中直接设置安卓SDK路径
您现在可以在项目设置中的“安卓SDK”属性中直接设置安卓开发 所需的SDK组件的路径。这大大简化了初始安卓项目的设置!
这些路径环境变量是覆盖原有的路径设置方式的,所以如果原有的设置工作没问题, 您可以让这些新变量空着。
访问非可编辑状态的蓝图变量
在4.6版中,您可以访问其他蓝图中非可编辑状态的变量,但在4.7中不行,抱歉拿掉 这个功能!
AI 黑板同步
黑板组件内可以标记关键点为“同步的”(synced)。这些同步的值可以 被所有AI使用,这意味着您可以在多个AI间同步状态,或者是使用这些值在AI之间通讯。