Improvements - Lumberyard Release Notes


And now, the rest of the improvements we delivered with Lumberyard 1.25! (For the flashy and major ones, jump back to the Lumberyard 1.25 Highlights page.) They may not get the red carpet treatment, but we hope you’ll appreciate them nonetheless.

AI and Navigation Components

  • PhysX Character can now be moved by the Navigation component, which is useful for building out AI.

  • Added PhysX collider support to the navigation mesh system so AI recognizes collision meshes to navigate around.

  • A new cvar, ai_NavPhysicsMode, controls where collider and terrain data comes from when performing navigation mesh calculations. Default is both PhysX and CryPhysics, but either one can be turned off.

  • The property Move Physically in the Navigation component has been renamed to Movement Method, and a new option named Custom has been added. This new movement method gives you control of the entity’s path movement, and is useful when you want to move an animated entity that uses root motion.

  • A new property called Allow Vertical Navigation has also been added to the Navigation component. This allows the navigation agent to include the vertical velocity when navigating a path.

  • For more information on all of these component changes, refer to the updated Navigation component docs.

Animation Editor (EMFX)

What else is new with the Animation Editor? Let’s take a look.

Deferred initialization for anim graphs

We have introduced deferred initialization for unique data in anim graphs. Rather than preallocating unique data for the whole anim graph up front, we now defer allocation until the objects are used the first time (such as when transitioning into a different defined state). In this case, the unique data of the transition target will be allocated and initialized just before the transition starts blending. This decreases instantiation time and makes spawning new characters that run an anim graph faster, especially when the anim graph is large.

For details on converting your old anim graphs to the deferred initialization model, read our EMFX Transition Guide in the Lumberyard docs.

Other updates to the Animation Editor include:

  • Entity scale on entities with Actor Components is now supported. We advise that you only use uniform scale. Per-joint scaling is not yet officially supported, so we cannot guarantee correct behavior at the time of this release.

  • The MotionInstance class has gone through an initial refactor and automated tests have been added. All time updates now go through a centralized mechanism, avoiding duplicate code and slightly different behaviors.

  • A motion is now marked as having looped when it finishes a full play cycle. If the motion is not looping, the number of loops is set to 1 when it reaches its last frame.

  • When playing motions that do not loop forever, the default behavior is that they will freeze in their last frame. The playback info m_freezeAtLastFrame will be set on default. This setting is ignored when looping forever. Forcing update joints is an option to disable this behavior, and revert it to the behavior seen in Lumberyard versions before 1.25.

  • The motion extraction (root) joint is always updated, so even if your character walks out of screen, turns around, and walks back, the character will reappear again and have all its transforms updated again.

  • You can now preview a motion node’s motions. Right-click on a selected motion node to display the context menu with the preview option. Left-click on a selected motion node to allow the motion to be played in the time view window.

  • Updated some value widget step sizes inside some animation-related Fbx modifiers. We also show more decimals where appropriate, and introduced a scale optimization setting in the motion compression modifier.

Dynamic Content Gem

  • The Dynamic content Gem has been updated to add support for download progress. The sample level has been updated with an example printing progress to the console log.

Physics (PhysX)

We’ve made the following menu change in Lumberyard Editor:

  • In the Game menu, Enable Physics/AI has changed to Simulate.

  • In the toolbar below the perspective viewport, the AI/Physics button has also been renamed to Simulate. Look for the new button that toggles simulation: 
                     physics simulate

We’ve made the following updates to our PhysX tools and APIs:

  • Added World Body Bus. This bus allows customers to invoke functions on physical bodies without being concerned about the type of the body (and other details). The bus also offers notification events so users can implement custom logic when physics is enabled or disabled for a body.

    • World Body Bus Requests:

      • void EnablePhysics()

        • Enables physics for the body.

      • void DisablePhysics()

        • Disables physics for the body.

      • bool IsPhysicsEnabled()

        • Returns if physics is enabled for the body.

      • AZ::Aabb GetAabb()

        • Returns the AABB of the body.

      • Physics::WorldBody* GetWorldBody()

        • Returns pointer to the body.

      • Physics::RayCastHit RayCast(const Physics::RayCastRequest& request)

        • Performs a ray cast on the body.

    • World Body Bus Notifications:

      • void OnPhysicsEnabled()

        • For custom logic when physics is enabled for the body.

      • void OnPhysicsDisabled()

        • For custom logic when physics is disabled for the body.

  • Added ray-cast functionality for single objects. This is a feature requested by customers. It allows users to perform ray-casts against a single object. This is useful in specific game scenarios where it is not necessary to acquire ray cast intersections with multiple objects.

  • Added support for cylinder shapes and cylinder colliders. This is a feature requested by customers. The cylinder shape collider offers a shape representation that cannot be replaced by capsule shapes, especially for thin and wide cylinders.

  • Added PhysX collider support to the navigation mesh system so AI recognize collision meshes to navigate around.

  • Added the Physics::Shape::GetGeometry method to get collider geometry.

  • The physics material surface tag hit has been exposed to Script Canvas so visual scripting will support hit detection against material surface types.

Script Canvas

We’ve made some other improvements to Script Canvas, including:

Quick Reference Switching - Toggle Script Canvas pins between value and variable reference with a simple double-click on the slot name.

               script canvas variable reference toggle

Stepped Node Sizing - Nodes are now sized to a series of 'fixed' steps in order to help maintain a more uniform visual appearance, and to help minimize how often nodes resize themselves. As a result, you may find that your existing graphs have overlapping nodes. To fix this overlap, you may find the Ctrl+Right Arrow and Shift+Right Arrow hotkeys useful, as demonstrated in the following screenshots:

Step 1: Select the first node on the left side of the graph.

               script canvas node sizing fix step1 select first

Step 2: Press Ctrl+Right Arrow to select all connected nodes to the right.

               script canvas node sizing fix step2 select right

Step 3: Press Shift+Right Arrow to align the nodes.

               script canvas node sizing fix step3 align

Step 4: Resize any grouping to fit the nodes.

               script canvas node sizing fix step4 resize groups

Other improvements include:

  • The Script Canvas variable property Expose on Component has been replaced with the Scope property. Setting Scope to the value In is the equivalent of checking the Expose On Component checkbox in previous versions of Lumberyard.

  • The variable Property Grouping has been removed.

  • In Node Inspector a variable’s type is now shown under its name, instead of at the end of the list of properties.

  • AZ_EBUS_SEQ has been extended to support 63 methods.

  • You can now get the physics material surface type hit by a Raycast node, which is useful for hit effects, foosteps and more.

UI 2.0

Here’s the complete summary of UI 2.0 improvements:

  • Core UI controls and interactions redesign and unification, including:

    • Unified UI controls

    • Improved interaction

    • New icon style

  • Workflow improvements for Animation Editor (EMFX)

    • Centralized and context-based play controls. We consolidated the play controls into one centralized location above the Time View window, for better user experience and clarity. The play controls are also context sensitive based on what users intend to do. When users manage the Motions and Motionsets, the play controls will show only the related buttons, and the same interactions applies to Animgraph too.

    • Clarity in the Animgraph node palette. It is easier now to see all the nodes that are available in the Anim Graph tab. Each node in the palette is coded with the same color system in the Anim Graph tab for better visibility and accessibility.

    • Simplified and accessible Viewport controls. We re-organized and cleaned up the Viewport controls. Now they can be easily understood and accessed. This also helps expand the real-estate of the Viewport to provide better view of the animation and streamline the animation workflows.

    • Consistent User Interface with Lumberyard. We updated the UI controls, interactions, icon styles, and windows docking behavior to be consistent with the rest of Lumberyard’s tools. Users can now easily switch between tools and expect consistent interactions and workflows.

Here’s some specific details about the changes we made with UI 2.0:

  • We implemented a core set of global Qt controls that are now universal throughout the following widgets:

    • Asset Browser folder

    • Breadcrumbs

    • Browse Edit (input/button)

    • Buttons

    • Buttons with dropdown

    • Icon Buttons with dropdown

    • Cards (notifications, error states, "Advanced" panel built-in)

    • Checkboxes (all states)

    • Color Pickers (4 types)

    • Color Labels (with and without input)

    • Combo Boxes (multi-select and error state included)

    • Drag-and-Drop Widgets (table view and list view)

    • Filter and Search Widgets (dropdown type ahead, tags,and input type)

    • Gradient color sliders (both vertical and horizontal)

    • Hyperlinks (labels, inputs, and rich text areas)

    • Line Edit input ( multi-line, all states, overflow, and clear button)

    • Menu system (right-click and primary menu support; includes icons support, disabled states, separator bars, sub-menus)

    • Progress Indicators (SVG animation supported)

    • Qt Style sheet support

    • Radio Buttons (all known states)

    • Reflected Property Editor (with and without cards, and global column layout support)

    • SVG Label (resize SVG on demand)

    • Updated Scrollbars (vertical and horizontal, supports both "show automatically" or "on demand")

    • Segment Controls (vertical and horizontal with content area support)

    • Slider Combo Box (dragbarsupport, including input field drag bars; error states included)

    • Sliders (vertical and horizontal with tool tips of value; also supports mid-line support and different value types built-in)

    • Spin-box (number input field with mouse drag built-in)

    • Vector Input Spin-boxes (modifiable color blocks and font color)

    • Splitter (between widgets with color selection and cursor update)

    • Updated Docking widgets

    • Primary Tabs (sortable, rearrangeable, closeable; includes tab overflow and action item support)

    • Tabs secondary (both non-sortable and non-draggable tabs, with overflow support and action buttons)

    • Table View (sortable, icons support, alternative row color support, multi-row selection support, active row support, and single list view support)

    • Header Bar (tear off, compressed style, normal style, with and without controls )

    • Toggle Switch (all states)

    • Icon Toolbars (with resize support)

    • Tree View (with or without lines, icons, check-boxes and multi selection as well as single row selection)

    • Typography (Amazon ember with 8 different default layouts and 4 different colors)

  • With our move towards AWS we have aligned our color system with AWS color palette. We removed all instances of purple and replaced it with a light blue.

  • Loading screen has updated to reflect changes in color system.

  • Updated Outliner colors to match new design. Resolved bugs around layers.

  • Removed all PNG images in the primary editor and replaced them with SVG (vector) images to support 4K resolutions.

  • Minimize and maximize choices have been added to all tear-off windows. Tear-off windows will also show up in the task bar.

  • The tab system now adds an overflow menu when it reaches the end of the screen. This allows for the easy access of windows that are not showing on your screen.

  • Line edit input fields: holding Shift while click-dragging a number input value will double the speed.

  • Fancy docking is now supported in most tools that are not defined as heading for deprecation.

  • Text now supports anti-aliasing to clean up pixellation in the Lumberyard Editor.

  • Double-clicking in an input field auto-selects all the text.

  • Auto-complete fields now highlight content.

  • Converted almost all checkboxes for on/off switches to toggle boxes.

  • Visual layout changes for disabled component cards.

  • UI 2.0 DPI changes comply with PAL and pass verification.

  • Unified the color picker across all editors and tools.

  • Dual-header icon size bar support. Default and Large sizes are available. (You can modify them under Preferences.)

  • Windows font scaling is now supported.

  • Cleaned up perspective window tool bars and converted long text buttons to icons with tooltips.

  • Editor now supports dropdown menu native Windows 10 shadows. This effect was previously generated through our own graphics library.

  • Pressing ESC after editing a field now reverts values in input fields.

  • All input field text now supports color contrast checkers (that have an AA rating) for individuals with visual impairment.

  • Built-in scalable content areas for component cards and the primary content area to allow screens to shrink and expand much easier. This includes displaying an ellipsis for tooltip text overflow.

  • Updates to the layout for the Audio Control Editor, which fixed previously broken layout issues.

  • Added rollover support to the Outliner which displays the current state when Locked or Visible.

  • The primary Editor menu now currently shows the active tools. (Previously active elements are not shown.)

  • Component cards now support layout types, and buttons and textareas now have 100% width support.

  • Unified iconography across editor for elements such as open windows, edit elements, browse folders, browse assets, search, refresh, run, add, and locate.

  • Updated content variable slider layout to fix previous overlapping issues.

  • Fixed number slider controls that were previously activating on hover and scroll.

  • Updated Asset Browser preview area to default and large view state.

  • Creation of the QtControl Gallery application (QtControlGallery.exe, in {path-to-install-root}\dev\Bin64vc141\), which allows developers to see the new controls in action and to see code snippets of how to use those controls.

  • Input fields now support icons (excetp for error icons at this time).

  • Icons with several substates now have a dropdown arrow and dropdown list.

  • Dropdown field content now supports large values. Size is not dictated by dropdown header width.

  • The Console now supports two color modes: Light Mode and Dark Mode. Dark Mode is the default mode.

  • Removed inconsistent line color for tree views, including the Outliner tree view.

  • Native Help menu for Mac is now supported.

  • Updated Qt to the most recent version ( which fixes some issues with high resolution monitors and allows for multi-monitor support.

We also updated the interaction model for the Lumberyard Editor’s Viewport:

  • A snapping grid for the Translation Manipulator has been added to the new Viewport interaction model.

  • While holding the Alt modifier key (to move in an Entity’s local space), the Entity will snap from its current position as opposed to first snapping relative to the parent space grid (Parent Entity Space or World Space depending on the hierarchy).