9 juillet 2014

Unreal Engine 4.3 Update Preview

Par Ian Shadden

The upcoming 4.3 release includes a number of quality of life improvements for Blueprints, some awesome rendering features, a big Automation push, Splines for all your curve needs, and an update to the Static Mesh Editor that enables you to create multi-body collision outside of your 3D art package!

We’d like to extend our gratitude to all of the amazing developers who contributed code to the upcoming 4.3 release.

3dluvr, abergmeier, alixSilkin, Allegorithmic, bigzer, Chris-Bond, CoherentUE4, EverNewJoy, Ixiguis, mpolaczyk, pzurita, raziel2001au, robert-wallis, RushPL, solid-angle, stephenwhittle, thk123, timdonkssbc100, vakathil, Xaklse, Zoubi

How to access the 4.3 Preview build

Subscribed licensees will be able to access the 4.3 Preview build through the Launcher – Library tab. Subscribers will see the option to add a new engine version indicated by the “+” sign next to a version number with a “˅” indicating a new version option is available.

Library Screen 1

Selecting the pull down menu will display as list of available engines, including the “Preview” build.

Library Sreenshot 2

At this point subscribers will need to “Accept EULA” to download.

New Features

Rendering

New: Skylight Global Illumination

Static and Stationary Skylights have one bounce of diffuse GI computed by Lightmass now.  You can use Indirect Lighting Intensity on the sky light to control how bright the bounce lighting is.

Just like all Stationary lights, if you change the color or intensity at runtime, it only applies to the direct lighting, since the bounce lighting is baked into the lightmap.

Original:

Zen Gardens

With Global Illumination:

Zen Gardens With Global Illumination

New: Distance Field Ambient Occlusion

This feature computes AO from Signed Distance Fields which are used to represent the static meshes in the scene. The static meshes can be moved at runtime and the AO will update.

Original:

Distance Field Example Original

With Distance Field AO:

Distance Field AO

New: Translucency Shadowing from Stationary Lights

Unreal Engine 4 has had shadowed translucency from dynamic shadows for quite some time.  But for Stationary lights, which don't use dynamic shadowing because they need to render very efficiently, the direct lighting would leak through. This is now handled by a shadow depth map covering the light's influence, generated by Lightmass during the lighting build.

Original:

Transluceny shadow original

Static Shadowing for Translucency:

Static Shadowing for Translucency

New: Movable Skylight

Skylights can now support the Movable mobility setting!

  • This type of light supports dynamic scene changes.
  • It gets shadowing from SSAO and a new feature called Distance Field AO. 

Behavior Tree

Blackboard Editing & Debugging in the Behavior Tree Editor

You can now edit and debug Blackboard entries inside the Behavior Tree Editor. You can access the Blackboard Editor by switching to the new ‘Blackboard’ mode:

Blackboard mode

You can then edit the blackboard in a similar way to Blueprint variables by adding keys:

Editing Blackboard

You can also remove and rename keys with hotkeys & the right-click context menu.

When debugging, blackboard values are displayed for inspection. As before you can still switch between current and saved (previous) debugging contexts:

Switch to Current or Saved Blackboards

The blackboard is also displayed for quick reference in the behaviour tree mode:

Blackboard TreeMode

New: “New Node” Shortcuts

The Behavior Tree Editor has had some new buttons added to its toolbar, allowing users to quickly create new Blueprint node types for tasks, decorators and services:

New Mode Shortcuts

  • Blueprints for these new nodes are created in the location of the currently edited behavior tree. If there is more than one potential class to create a node type from, then the button will appear with a dropdown to allow class selection.
New: World Composition (Huge Levels!)

You can create sub-levels and position them anywhere on this map.  They will be loaded automatically in the game.

Level Composition

  • Turn on Enable World Composition in your level’s World Settings to activate this (the level must be saved to enable this feature).
  • You can use the Minimap button on the Level Browser toolbar to access a world map.
    Level Browser
  • New documentation and Sample Games will be coming later.
  • This feature replaces the experimental World Browser feature in earlier builds.
Level Browser Redesign

The Level Browser (accessed through the Window menu) has seen a significant update in 4.3.

Level Browser Redesign

  • All the file operations (create new, save, save as, add, merge, etc) were moved from context menu into the toolbar button Levels.
  • Status bar has new view options: Display actor count for each level and Display full package names.
  • Less used operations like level transformations, Streaming Volumes management, and others can be done though Level Details panel which can be summoned by clicking a Details button on the Levels panel’s toolbar. Level Details is independent from the regular Details panel, that means it will show only selected level details. It also supports multi-selection.
  • In PIE the Levels panel will show simulation status of each level, hidden levels will have their visibility “eye” closed and unloaded levels will have their name color in gray.
  • When you drag a level into blueprint graph it will create GetStreamingLevel node for that level.
  • If something is missing or work incorrectly in a renewed Levels tool you can switch back to old Levels tool by using –oldlevels commandline parameter.

Blueprints

New: Spline and Spline Mesh Components

We now have the ability to edit Splines directly in the world! By simply adding a Spline Component to your Blueprint and selecting an instance of that Blueprint, users gain access to editing splines within their levels.

You can also use a Spline Mesh Component to deform a StaticMesh along a spline. You can define a start and end location and tangent in the Details panel (or by calling functions).

Spline Mesh

Click on keys to select them.

  • Use the translate widget to move them around (the ‘tangents’ are automatically updated by default).
  • Alt-drag with a key selected to add a new one.

If you want more control:

  • Use the rotate widget to rotate the tangents.
  • Use the scale widget to extend them.

You can also right-click on a key to get a context menu:

If you want, you can also construct the spline inside your Construction Script using the AddSplineWorldPoint and SetSplineWorldPoints functions. If a spline is constructed inside the Construction Script in this way, the ‘Allow Spline Editing Per Instance’ flag should be turned off in the Blueprint defaults.

New: Reroute Nodes

Add Reroute Node... now shows up in the context menu when you click-drag off of a pin; you can make connections to a reroute pin like normal, move it around (by dragging near it or ctrl + dragging on it), and remove it by Alt + Clicking.

You can also put comments on a reroute node by double-clicking on the draggable area below, or hitting F2.

Reroute Nodes

New: Split Struct Pins

Users now have the ability to split a struct pin directly in place on the node instead of having to insert the Make and Break nodes.

Split Struct Pins

This works for both input and output pins of any struct, and if the split struct also contains structs, they can also be expanded.

New: Expand Enum for Output Pins

You can now enable expanded Enumeration execution pins for Blueprint Nodes. This has existed for input pins for sometime now, but now can be enabled for output execution pins:

Expand Enum for Output Pins

  • Now you can just create an enum, have one as an output parameter for your function, and mark that output parameter it as ExpandEnumAsExecs in the UFunction metadata (C++).
New: Data and Curve Table Support

Evaluate Curve Table Row will return you the output value for Row Name at XY:

Data and Curve Table Support

Get Data Table Row will return you a Row struct that can be broken into its individual component variables:

Get Data Tanble Row

New: Blueprints Control of Anim Trails

You can now control Anim Trail emitters in Blueprint (and code) without anim notifies.

  • The only restriction with this is that the particle system component must be the child of the skeletal mesh component from which you are sampling socket locations.
  • The Begin Trails function of the component will start all Anim Trail emitters in the Particle System.

Blueprints Control of Anim Trails

  • The EndTrails function of the component will end all Anim Trail emitters in the Particle System.

EndTrails

  • You can also alter the trails properties while it is running. Here we alter the width each tick using the game time.

Global Search

New: Global Blueprint Search

Find-in-Blueprints has been given a significant revamp to accommodate feature requests and should now be more robust and useful.

Searching should be more all-encompassing than ever before, finding: nodes, pins, pin values, graphs, variables, variable values, as well as searching animation graphs.

Searching is an asynchronous process, meaning it will not prevent you from using the editor as the search completes, you can also make multiple searches in different Blueprints at the same time.

Find-in-Blueprints now leverages the DDC for the searchable data - when Blueprints are updated their information is refreshed and when another user syncs that Blueprint the searchable data will be unreachable.

When Blueprints are not indexed in the system, it will inform you, as in the below image:

Not Indexed in Blueprints

  • Note: Level Blueprints are not fully supported, though you should be able to search your current level without a problem.

Static Mesh Editor

New: Customizable Static Mesh Collision

The Static Mesh editor now supports adding multiple collision primitives of differing types, allowing for the quick creation of a custom collision setup, and modifications to existing collision to fix any issues affecting gameplay.

This can be used to make it easier to shoot through or traverse more complex geometry, as well as place blockers when you do not want to user to be able to. For example:

Static Mesh Example 1

Static Mesh example 2

The Static Mesh Editor now supports Capsule/Sphyl collision geometry too.

  • It attempts to calculate the correct axis it should align itself with, along with the best fit for the mesh. For example:

Capsule/Sphyl Collision

  • All the collision primitives can be selected with the mouse and moved, rotated, and scaled with the editor widget (Spacebar and W,E,R keys toggle manipulation type).
  • Collision primitives can also be multi selected (Ctrl+LMB), focused (F key), duplicated (Alt+drag) and deleted (delete key) if they are no longer needed - all of which should be transactional.

Preview Notes

Editor
  • New: Added support for the Class Wizard to create non-UObject classes.
  • New: Added Edit Asset option to the Reference Viewer context menu.
  • New: Added support for choosing which platforms your project will target.
  • New: Deleting assets forces the Mode tab's Recently Placed list to be refreshed.
  • New: Created unique icons for the Behavior Tree editor.
  • New: Added Editor-only functions to allow nodes to override their in-editor icon display.
  • New: Added Blueprint icon to show which nodes use Blueprint for their logic.
  • New: Added a comment explaining why CachedAutoWrapTextWidth was cached in OnPaint() rather than Tick().
  • New: Added a checkbox to toggle the display of the grid on/off.
  • New: Added a manager to queue and process My Project requests, and added a cool down. State is now polled.
  • New: Added PlatformInfo to DesktopPlatform and improved the editors Supported Platform UI.
  • New: Added content browser buttons (find in, use from) to animation blueprint selector in skeletal mesh details panel.
  • New: Added the concept of a primary asset editor to the asset toolkit manager.
  • New: Alt + Shift + R now brings up the Reference Viewer for the currently selected asset.
  • Changed "Graph is linked to object(s) in external map" dialog to have a single "OK" button.
  • Changed Gameplay Tag Pin to now only allows single select.
  • Moved the project locations array into the game .ini for launcher created projects.
  • Moved Stats sub menu entry from Viewport's Show menu to the ViewportWindowMenu.png menu.
  • Fixed the DefaultPhysicsVolume to no longer appear in the convert actor list in the details panel for Brushes/Volumes.
  • Fixed the Color Picker to now display an error when renaming a theme to the same name as another.
  • Fixed “undo then redo” on duplicated scaled geometry to no longer result in a brush at the default scale.
  • Fixed Particle System Arrow components to no longer scale relative to their actor scale.
  • Fixed Play In Editor in New Window to respect resolution request if r.FullScreen is 1.
  • Fixed Level Editor export functionality to default to FBX rather than OBJ.
  • Fixed the move/save pivot options for brushes to now only be available for ortho viewports.
  • Fixed the Content Browser so it now refreshes when package dirty state is updated.
  • Re-added support for custom categories in the Project Browser.
  • Removed all animation classes from EnginePrivate.h and edited their files to include only their dependencies.
Animation
  • New: Added blueprint events for montage blending out/ending.
  • New: User can now toggle Track history which will monitor subsequent tests and store a log in Saved/Automation/Logs. 
    • We track and show up to 5 by default, this is configurable between 1 and 10.
Cascade
  • New: Added "Randomly Select Seed Array" option to random seed functionality
Scene Outliner
  • New: Expansion states for outliner folders are now stored in per-user temporary config files.
  • New: Added functionality stop the double click events from propagating up to the parent widget.
Material Editor
  • New: Nodes which are deemed to have previews with no particular value are now auto collapsed by default.
Geometry Mode
  • New: Brush wireframe is now rendered stippled when behind objects when being moved.
Static Mesh Editor
  • Fixed BuildScale so it is now applied when building Sphere Collision.
Persona Animation Editor
  • New: Asset Picker now supports rename functionality.
  • Fixed animation import to detect and scale existing animation curves on import and reimport to avoid keys becoming inaccessible.
Viewport
  • New: Selecting a camera that has a pinned camera preview now highlights its preview.
  • Fixed Raw and Unit Time stats to now display correctly if Unit Graph isn't already enabled.
UI
  • New: Escape will now still first close a HUD UI even if it has lost focus.
Unreal Automation Tool
  • New: Unreal Automation Tool now uses the game .ini files to add additional directories to cook and stage.
Unreal Frontend
  • New: Added in the automation test times for those which have failed. The durations were not reflective of this.
  • Updated the tooltips, for tests, to show which machine their operations were on.

Lighting

  • New: Added code to ensure that a spotlight's inner cone angle cannot be set greater than its outer cone angle.

Blueprint

  • New: Added a check during Blueprint editor startup to determine if the current project is Blueprint or code based.
  • New: Added message box which displays the text “Infinite loop found in Blueprint: <blueprint name>.”

Launcher

  • New: Multiple projects can now be created from one 'app' and all get listed in My Projects section.
  • Platforms
HTML5
  • Numerous updates and fixes.
  • Fixes for HTTP transport issues.
Android
  • Improving device compatibility across many devices
Linux/SteamOS
  • Many updates and fixes.
iOS
  • New: Added a Blueprint node for calibrating motion. Implemented for iOS devices.
  • New: Deploy from Windows to iOS.
PS4
  • New: Positional Audio using libaudio3d.
  • Updated to SDK version 1.700.018

F

Automation

  • New: Added the ability to repeat a test a number of times.
  • New: Added Editor Screen Shot Capture console command.
  • New: Added a new test to find all Static Meshes with overlapping and out of bounds UV’s.
  • New: Added a test to cycle through the Static Mesh Editor toolbar to test its functionality.
  • New: You can now setup presets in the Automation tab.  This allows you to setup your own test groups for potential test runs.
  • New: You can now enable full size screenshots instead of just thumbnails. The Screenshot Compare tool fully supports this.
  • New: The Screenshot Compare tool can be set to Show only Nth Image.
  • New: You can now cluster the testing and results for a groups of devices based on certain criteria (e.g. GPU, machine name, CPU, OS, etc.).
  • New: Added a Test Results Report Card. The test results will now show a color graph for each device group or machine that had ran a test.
  • Updated the Load all Maps in Editor/Game test to take screen shots.

Known Issues:

  • Compiling for Android is currently blocked – will be fixed for 4.3 release

We welcome comments and questions, so please head over to our forums and share your feedback!