1.jpg

UNREAL ENGINE 4.7 RELEASED!
虚幻引擎 4.7 更新记录!

Brandon Sieprawski on February 25, 2015 | 张弢 翻译于 2015年2月27日

虚幻引擎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)可以为草、叶片、纸张等材质提供可透射到背面的光照效果。

2.jpg

漫射光照现在可以将正对光源一面的光照透射到另一边。

  • 透射光照混合了正面固有色信息与视角关联背面透射。
  • 可以使用次表面色彩(Subsurface color)这一通道来过滤光照,用来模拟厚度变化。(比如添加叶脉效果)
  • 记住,在这个材质模式下使用半透明通道只会影响阴影的衰减距离。
在大世界中渲染大量植被
植被系统已经为超大型、开放式的场景做了相关优化。

3.jpg

现在我们拥有了一个层级式系统来管理与剔除百万级植物场景。同时,我们也增加了一个针对模型LOD的平滑视觉过渡,它使用延时淡出方式来抑制让人讨厌的LOD切换时的闪烁。

关卡内组件编辑
组件(Components)现在可以在关卡中直接添加到对象(Actors)。这允许你直接在关卡中组装出新的对象而不需要事先创建蓝图类。这对于希望直接在关卡中实验新的功能组合来说,非常的方便。

4.jpg

你现在可以在关卡中直接选择独立的组件(Components),使用你熟悉的操作器工具去移动它或者编辑它的属性。

5.jpg

当你完成了调整之后,点击“蓝图/添加脚本”(Blueprint / Add noxss)就可以保存为可复用的类或是为它添加脚本。这会自动覆盖你之前的类。

6.jpg

可放置的空对象(Actors)

现在你可以拖放一个“空对象”(empty actors)进你的关卡。

7.jpg

现在也支持空Pawn(Empty pawns)与空角色(Empty Character)。这让你可以使用新的关卡内组件编辑功能在关卡中去构建一些有意思的对象。

蓝图式组件
直接使用蓝图(Blueprint)脚本创建你自己的组件(components)。你可以保存这些组件并在其他对象中复用。
首先,点击“添加组件”(Add Component),之后选择顶部的“新建蓝图脚本组件”(New Blueprint noxss Component…)。你可以从内容浏览器中调用“新建蓝图”(New Blueprint…)窗口,或者在关卡中的任意对象上创建。

8.jpg

然后,为你的新组件选择一个父类。“场景组件”(Scene Components)内部拥有一个3D空间位置,而“对象组件”(Actor Components)只是一个逻辑脚本。

9.jpg

接下来是有趣的部分了:为你的组件编写蓝图脚本代码。在下图的范例中我们使用Tick事件驱动每帧都沿着Yaw轴旋转这个对象本身。并将这个组件命名为“Spinner”,因为它会让对象不停的旋转。

10.jpg

现在,你可以拖动这个组件放置到场景中的任何的对象上,游戏开始后对象就会旋转起来。一个可复用的功能模块就诞生了。

11.jpg

你也可以把它拖放到一个普通的蓝图类里去。你的新组件也会一直显示在“添加新组件”(Add Component)的菜单中(放置在’自定制’分类里),在内容浏览器里也和其他组件一样。

资源自动导入
导入模型、音频、贴图从未如此简单。简单的保存你的资源源文件在你的项目内容文件夹中,编辑器就会自动导入这个新的文件了。

12.jpg

如果你用外部程序更新了这些源文件,编辑器也会检测到并自动导入这些内容。这使得你迭代更新游戏内容变得更加快速。

这一功能默认是打开的。但是你可以通过编辑器属性中的“载入与保存”(Loading & Saving)选项组中的“监视资源文件夹”(Monitor Content Directories)功能来开关它。
重新设计的蓝图编辑器UI
为了更便于使用,蓝图编辑器已经重新设计。原有的三个编辑模式完全整合为一个统一的窗口,而且还有很多其他的改进。

13.jpg

你现在可以自由的排布组合各个面板,像是预览视图与节点图谱这样的视窗现在可以同时显示了。

“我的蓝图”(My Blueprint)视窗现在更加的整洁、干净,便于你添加新的功能与变量。
在组件面板选择你的对象名,将会显示类的默认值。顶部的工具栏可以选择默认的类或者类设置,可以切换显示。
支持HTML5与WebGL(Windows平台)
现在你可以通过启动器打包并在网络浏览器中运行你的游戏。

14.jpg

简单的完成 Emnoxssen SDK的安装,重启你的编辑器与启动器,在启动按钮的下拉选项中选择一个网页浏览器即可。

15.jpg

HTML5使用时的一些注意事项:

  • 开发过程中需要Firefox, Safari或者64位版本Chrome。(shipping版本可以工作在32位版本的Chrome上)
  • 当前HTML5只支持Windows平台,我们将在下一版本中支持Mac。
  • 你的游戏也许需要一些额外的准备工作才能运行,特别是首次开发HTML5项目。项目的资源与代码都需要为网页浏览器做些优化。
OPENEXR: 高动态范围HDR贴图
现在可以使用OpenEXR格式来导入2D的HDR贴图了!你可以在每个通道存储16位色深信息(大约相当于20级曝光),之前的版本你只能将HDR文件作为Cube Map导入。

16.jpg

使用Mac开发安卓版本

现在OSX版本的引擎完全支持开发安卓版本了。

17.jpg

苹果电脑用户现在可以构建、打包安卓版本程序,并通过编辑器或者命令行工具发布到安卓设备上。

18.jpg

  • 你需要安装Java for OSX与安卓SDK。你可以使用Engine/Extras/Android文件夹下的TADP来安装它们。
  • 安装完成后,你需要重启编辑器或者是在项目设置中找到安卓SDK的部分指定正确的SDK路径。
完整引擎 C++ 源代码与调试符
现在你用启动器安装的虚幻引擎包括了所有的完整C++源代码与调试符。

19.jpg

这可以使你无缝的接入引擎代码开始调试,同时,在程序崩溃时获得完全的调用堆栈。你无需再自己编译引擎就可以对引擎开始完整调试。

请记住,如果你要重新编译引擎你仍然需要访问GitHub以获取所有必须的文件。
编辑器内直接使用VR模式
我们在编辑器中添加了新的’VR preview’按钮。如果你已经插好了Oculus Rift设备,你现在可以立即在VR模式下运行你的游戏。

20.jpg

点击“VR Preview”,编辑器窗口会最小化,你的游戏会直接在Oculus Rift设备上弹出显示。

Leap Motion手部动作感应器插件(BETA)
UE4现在通过插件支持Leap Motion设备。你可以直接在项目中使用这一手部动作感应装置。相关API同时暴露给蓝图脚本与代码,所以任何类型的项目都可以利用这一技术。

21.jpg

想要获取如何使用这一插件的范例,请访问Leap Motion的官方网站https://www.leapmotion.com。目前这一插件仅支持GitHub自编译版本的引擎,你可以直接在Leap网站上下载到这个插件。

内容浏览器中显示C++类
你的项目中的C++类现在可以显示在内容浏览器中了。

22.jpg

你也可以很简单的在内容浏览器中创建新的C++类。他会自动编译和显示在编辑器中。

23.jpg

双击C++类图标,可以直接调用Visual studio或者Xcode打开源码。右键点击可以基于现有类创建新的类。

MORPH TARGET 变形目标动画超限化
现在变形目标动画的权重值可以超过100%了,这可以使你得到超夸张的动画效果,当然低于0%也可以。

24.jpg

功能包与内容包

你现在可以方便的在内容浏览器中添加新的功能包与内容包。这些包可以包括任意的资源、蓝图类或者C++类。

25.jpg

所有已有的模板项目功能都已经打包成为功能包了。所以你可以先添加第一人称功能包,然后再添加载具功能包,这样你就可以在你的项目里同时使用这两套功能了。

在内容浏览器中,只需要点击“添加新的”(Add New),然后再点“添加功能或内容包(Add Feature or Content Pack…),文件就会导入你的项目了,很多包会包含内置的教程,也会一并导入。

26.jpg

甚至起始资源包(Starter Content)也可以在任何时候导入你的项目。其实,我们已经有了一个为移动平台优化的起始资源包让你选择。

动画编辑系统
现在你可以直接在Persona动画工具中编辑动画。

27.jpg

拖动时间滑块,选择骨骼,使用操作器移动、旋转骨骼,并在当前时间设置关键帧。关键帧设置的快捷键是“S”。

28.jpg

在Persona编辑器内,所有的动画曲线编辑都会被存储到一个“叠加层”(additive layer)。当你重新导入原始动画数据,你所做的修改仍然被保存着。这个层数据只存在于Persona编辑器内。只需要在工具栏中点击“应用”提交你的修改,就可以在游戏中看到动画的修改了。

29.jpg

你也可以完整保存你的定制动画!使用工具栏“Greate Asset”按钮创建新的动画。

30.jpg

一些注意事项:

  • 动画曲线可以在你不需要的时候取消或者删除
  • 一旦bake完成,就只能输出bake完的动画。附加的曲线不会被输出。
  • 当你重定向你的动画目标,附加曲线不会被重定向。所以,请完成Bake之后再执行重定向。
即时骨骼控制器预览
骨骼控制器节点现在可以使用视图中的操作器直接做交互式调整。

31.jpg

目前这个功能只工作在TwoBoneIK, ModifyBone、Fabrik三种解算器上,不过我们会陆续添加更多的支持。

使用物理模拟解算创建动画
你可以在物理编辑器(PhAT)中通过录制物理模拟来保存动画。

32.jpg

点击工具栏上的“Record”按钮,就可以开始录制下视窗中的物理交互,之后点击“Stop”,模拟的结果就存储为动画了。

你同样可以在关卡编辑器中捕捉动画:
  • 在关卡编辑器工具栏上找到“Play”按键,在“Play”按键的下拉选项中点击“Simulate”。
  • 在场景中选中你需要记录模拟动画的骨骼模型。
  • 在模型上右键点击“Keep Simulated Changes”(或者按“K”键),就可以保存动画了。
项目启动器
全新的项目启动器界面拥有更多控制选项,让你更加容易的运行或者打包你的游戏项目。

33.jpg

项目启动器拥有多项功能帮助你在多种不同设备、多种不同设置间快速测试你的项目。你可以更简单的定制不同的构建类型与打包设置,然后在任意连接好的设备上启动你的项目。

如果你需要以下这些,可以使用自定义启动选项(Custom Launch Profiles)构建版本。
  • 将所有高级选项都暴露出来。
  • 选择特定需要构建的内容。
  • 一次构建多个不同平台的版本。
  • 打包与保存多个版本然后在其他地方运行,或者是稍后再运行。
当然,你仍然可以使用主工具栏上的’启动’按钮来来运行你的游戏。但是,如果你需要更多的灵活性,你还是可以轻松的通过“启动”按钮的下拉菜单或者是主菜单中的窗口菜单来快速打开新的项目启动器。
蓝图合并工具
你现在可以使用新的蓝图合并工具去将不同的蓝图合并到一起。这个工具会将两个蓝图做可视化的对比,以帮助你合并他们。这对于同一个蓝图被不同的人反复修改之后的合并来说是非常棒的工具。

34.jpg

你可以用以下这些方法调用这个工具:

  • 在蓝图编辑器中点击文件->合并。
  • 在源码控制显示为冲突的组件上点击右键,然后选择合并。
  • 使用命令行工具,运行: UE4Editor.exe -diff [options]
Git源码控制插件 (BETA!)
感谢社区成员Sébastien Rombauts友情贡献的Git源码控制插件。

35.jpg

当你将项目连接到Git存储区,编辑器就可以支持大部分的源码控制功能,比如添加、删除文件,提交修改,显示文件历史,比较文件,显示当前的源码控制状态等等。

AI 感知系统: 支持蓝图脚本
AI感知系统(AI Perception System)现在可以使用蓝图脚本来设置了。只需要为你得AI添加AI感知组件,就可以观察、调整相关的属性与事件了。

36.jpg

新的项目模板附带教程

现在,每一个新的项目模板都有一个简单的概要教程。它大致介绍了模板的组件构成与类是如何工作的。

37.jpg

只需要在内容浏览器里点击教程预览图上的“播放”按钮,就可以开始播放教程。

38.jpg

内容包与功能包也可以包含自己的教程。如果添加了新的包在你的项目,你也看看附带的教程去学习一下这些包的内容。

新的缩略图视觉效果
现在编辑器能够以新的彩色风格显示组件缩略图了。

39.jpg

同时,现在C++类与蓝图类现在也可以显示为交互式的3D缩略图。缩略图右下角的小图标会显示出它的父类。

PAPER2D:  增强了拼贴式地图编辑器
我们在拼贴地图编辑器里添加了一些很有用的图层编辑功能。

40.jpg

  • 各个层可以重新排序了,你可以让特定的层上移或下移。
  • 你现在可以在选中的层上控制绘画,而不是仅仅在最上面的层。
  • 整个编辑过程中,被选中的层会被锁定。
  • 被选中的层会有一个帮助网格被渲染出来帮助你正确对齐其他未选中的层。
  • 层命名功能现在工作起来与关卡概要视图非常相似。
  • 层可以复制了。
  • 拼贴地图现在可以在关卡中重用或实例化,这意味着它现在是一个资源组件了。
  • 新添加的层现在有了更具可读性的命名。
注意: 拼贴地图现在虚幻引擎里仍然是一个试验性的功能。
PAPER2D:  翻页式动画碰撞检测
翻页式动画资源允许你创建2D动画序列。现在,你可以为你的动画序列创建碰撞属性。

41.jpg

翻页式动画资源有了一组新的碰撞来源属性,用来控制碰撞数据的来源。

  • 无碰撞(No Collision): 这个翻页式动画资源不进行碰撞检测。
  • 使用第一帧碰撞(First Frame Collision):  这个翻页式动画资源的碰撞检测忽略动画,它一直使用动画资源的第一帧数据来做碰撞检测。
  • 每一帧都做碰撞数据(Each Frame Collision): 这个翻页式动画资源的碰撞数据基于动画的每一帧更新。这一设置下,每帧都更新新的碰撞数据。
使用时的一些注意事项:
  • 在很多时候,我们只需要在翻页式动画资源上附加一个碰撞体(例如一个碰撞盒)就可以了,而不需要真的从图片资源中获取碰撞数据,尤其是当你的一些碰撞区域之间有互相重叠的时候。
  • 角色移动依然是依赖胶囊体碰撞检测,多数情况下胶囊体设置为碰撞所有(BlockAll),而翻页式动画资源的碰撞应该放在一个不同的碰撞通道里,防止它们之间互相卡住。 (通常检测移动与阻挡使用胶囊体,检测互相穿插、碰撞或者射线使用翻页式动画自己的碰撞)
UI: 支持自定义光标
现在你可以在项目中使用软件光标创建自定义的控件(custom Widgets)。控件可以使用UMG的所有功能,像是添加文字、血条、工具介绍以及一切你想在光标上添加的功能。

42.jpg

软件光标在以下案例中会非常有用:

  • 为不支持硬件光标的平台添加光标,比如为主机游戏添加虚拟鼠标光标。
  • 需要为光标添加更多丰富的视觉效果,比如动画或者其他复杂的视觉交互。
  • 保持在PC、Mac、Linux各个平台上保持一致的光标视觉效果,而不需要为特定平台制作特定格式。
在项目设置中新的“用户界面”(User Interface)部分中设置是否使用软件光标控件。如果你没有特殊的设置,会使用默认的硬件光标。
记住:软件光标的运动受限于游戏的帧率刷新,而不像是硬件光标由操作系统来渲染。这个功能主要权衡点就是这个。
UNREAL MOTION GRAPHICS: 新的UI控件绑定系统
新的UI控件绑定系统用于控件与子属性、功能集之间的绑定,这是一个很大的改进并极大的提升了性能。

43.jpg

使用新的绑定系统的一些注意事项:

  • 绑定基于一个可动态赋值的值域,而不是蓝图脚本。
  • 直接绑定C++或者蓝图功能集都支持。
  • 一些简单的转换都是自动处理的。(例如线性颜色转换为Slate颜色,2D贴图转换为Slate画刷)
  • 这一修改使得属性绑定变得更快。(差不多有10倍的提升)
  • 旧的绑定方式仍然能够工作,但是为了提升性能,请考虑升级到新的绑定系统。
可视化日志工具(AI 可视化工具)
我们有了一个全新的功能超多的可视化日志工具。他的设计目的是帮助你更好的调整与修正你游戏项目中的AI行为。

44.jpg

  • 将事件记录下来,然后通过强大的工具基于时间线来搜索。看看这个视频范例吧。
  • 时间线上的对象在有警告时会显示为黄色,在出现错误时会显示为红色。
  • 你现在可以在游戏暂停状态下使用特殊的调试摄影机在场景中运动观察。
  • 将可视化日志工具内容保存为状态报告。报告中会带有超链接让你可以快速过滤日志,便于分析。
半透明对象排序控制
这一新功能允许你手动设置半透明对象的渲染排序。这对2D游戏来说非常有用。

45.jpg

在项目的渲染设置中,勾选新的“半透明排序策略”(Translucent Sort Policy)选项。

  • 基于距离排序(Sort by Distance): 这种排序方式基于摄影机到对象的轴点之间的距离。这一方式通常运用于3d游戏
  • 基于Z轴投射距离排序(Sort by Projected Z):  这一排序方式在后处理中计算摄影机空间的Z深度用于排序。这一设置可以抑制由于摄影机旋转导致的对象渲染闪烁。
  • 基于特定轴向排序(Sort Along Axis):  排序基于某个特定的轴向,这一方式主要用于2D游戏中。这个特定的轴向称为半透明排序轴(Translucent Sort Axis),你同样可以在项目的渲染设置中去编辑它(默认的轴向是 -Y)
修正了蓝图中的循环依赖
蓝图的加载被重新设计,所有现在可以处理任何被“循环”了的情况。你的蓝图现在可以有各种混合、交叉调用,重要的是:它会在下一次循环时正确加载。
当然如果你有太多的蓝图加载错误,同样会导致蓝图工作在混乱的状态下。
UNREAL C++ 编程改进
我们持续的改进,让C++在虚幻引擎中更加易用。
  • 不需要特殊的构造函数。类的构造函数不再需要采取对象初始化参数。
  • 创建虚幻类的子对象现在有简单语法。
  • 你现在可以在一个C++头文件里包含多个虚幻类。
  • 你现在可以在头文件里声明特殊的虚幻类,即时在这个文件里没有对应的类。
  • 你不再需要保持虚幻类的名字与源文件名一致。
  • 你现在可以为属性使用任意的命名。之前一些像是“Color”这样的通用名字是被保留并且不可使用的。
多线程动画
动画姿势的解算现在被分配到多核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组件的路径。这大大简化了初始安卓项目的设置。

46.jpg

这些路径环境变量是覆盖原有的路径设置方式的,所以如果原有的设置工作没问题,你可以让这些新变量空着。

访问非可编辑状态的蓝图变量
在4.6版中,你可以访问其他蓝图中非可编辑状态的变量,但在4.7中不行,抱歉拿掉这个功能。
AI黑板同步
黑板组件内可以标记关键点为“同步的”(synced)。这些同步的值可以被所有AI使用,这意味着你可以在多个AI间同步状态,或者是使用这些值在AI之间通讯。