The Machinery — May 2022 (version 2022.5)

Summer is just around the corner and the days are getting longer. Hopefully some of the workflow improvements in this release can help you to free up some time for barbecuing with your friends, family, lovers, and other constellations.

If you are already running The Machinery, this new release should pop up in your Downloads tab. Otherwise, get it from our download page and have a look at this quick introduction video. We are also working on a book about The Machinery. Note that the book is still a work in progress.

If you find bugs in this release or have requests for specific features, post them to our issue tracker. For more general discussions, hit us up on GitHub discussions or Discord.

Key highlights in this release are:

Improved UI and Editing Workflows

The main menu has been moved to the caption. The (world) suffix in the properties tab title hints that properties panel is focused on something within the current document of the scene tab.

The main menu has been moved to the caption. The (world) suffix in the properties tab title hints that properties panel is focused on something within the current document of the scene tab.

This version comes with a some important UI and workflow improvements:

  • The main menu has been moved to the title bar, making the UI feel slimmer.
  • If the properties tab is focused on something within the scene tab, then the scene name is written in parenthesis at the end of the properties tab title. This avoids confusion when having many documents open.
  • Graphs always clearly show the name of the open graph asset.
  • The Q, W, E and R shortcuts can now be used from within the Entity Tree and Properties Tab to switch tool without first having to focus the Scene Tab. For the Properties Tab it is required that your focused object lives somewhere inside the scene.

Collaboration Avatars

Avatars in the Scene Tab

Avatars in the Scene Tab

When collaborating with others, you will now see avatars representing their current position in the scene tab and the graph tab. In the Scene tab each collaborator will be visible as a floating avatar-blob in the sky. This avatar will have the position and orientation of the collaborator’s current scene camera. In the graph tab you can see other collaborators that view the same graph in the form of a small circle. This circle will be at the position where the collaborator’s mouse cursor currently is. Their currently selected node will also be shown.

The colors of the avatars are based on the colors the collaborators chose for themselves in the collaboration tab.

Profiler Readability

Vertical frame marker lines makes it easier to see the start and end of each frame.

Vertical frame marker lines makes it easier to see the start and end of each frame.

A readability pass over the Profiler Tab has been done. Threads are now ordered and named more clearly according to the following:

  1. Any commands executing on a GPU. Each GPU has its own thread representation per execution queue: [G]raphics, [C]ompute, [T]ransfer.
  2. Jobs executing on the fiber based job system.
  3. Tasks executing on the task system.
  4. Profiling scopes on any other threads.

Per default, each thread displays only two levels of nested profiling scopes. This prevents the profiler view from jumping around when recording making it easier to read. To drill down further, click the thread name to expand it.

There are now vertical frame marker lines drawn to make it easier to see the start and end of each frame, if the target frame rate (currently hard coded to 60 fps) is missed the color of the lines will fade from green to red.

While recording, it is possible to have the timeline to focus on a specific named profiling scope by typing its name into the text field.

Community Contributions

Thanks to ElementalAndy for multiple fixes:

  • Fixed crash where the memory of PhysX actors wasn’t properly initialized #972
  • Fixed crash when opening an .asm asset #968

Thanks to Tisten for multiple fixes:

  • Unit test improvements #961
  • Fixed a bug with collaboration project larger than 4 GB #975
  • Improvement reimport workflows for images #983
  • As well as a number of smaller bug fixes.

Entity Graphs

  • The String Hash node now executes during compile of the graph. #1359
  • Fix for using Vec2 type for inputs not working. #1350
  • Fix for Graph node generator not ignoring commented code. #1331
  • Fix for error when reverting comments in the Entity Graph. #1334
  • The Graph node generator now uses tokens to parse types instead of raw strings. #1361

Graph Editor

  • Frame delays have been removed from graph, making it more snappy when you move nodes.
  • Removed “‘Make Changeable By Graph“ from the graph input editor’s context menu. This was previously used to reset an internal flag that informed the graph whether or not the user has manually set a graph input value. The reset of this flag now happens if the user resets the value of the input itself.
  • Fix for context menu item Create Prototyped Subgraph sometimes failing. #1275
  • Comments can now be overridden and have similar functionality to how overridden nodes work. #1273
  • Fix for ‘Remove From This Instance’ on Input and Output sometimes moving the connector box to the wrong input. #1270
  • Fixed a bug where the graph snapped to a different position after resizing the Graph Tab. #1355
  • Fixed a bug where a node that had one in and out connector with the same name resulted in broken connections. #1352
  • Improved Node Conversion algorithm to include matching by index and type. #1354
  • Fixed inability to add inputs via the Graph Settings #1351
  • Ctrl + Shift can now be held while hovering connectors in order to make a copy of the connection, instead of just moving it like holding Ctrl does. #1259

Entity System

  • Fix for entity system using too many allocation scopes.
  • Engines can react to changes: .component_added , .component_changed , .component_removed
  • Stages have been fixed: You can now schedule a system or engine in different fixed stages.
  • Components can be disabled and enabled.


  • Fix for one frame glitch in Entity Position when propagating asset changes. #1316
  • Fix for potentially uninitialized blackboard pointers. #1343
  • Fix for Simulate State Entry not being restored correctly when Saving/Restoring the Simulation state. #1344
  • Simulation Entries have now access to the host entity #1332

Entity Tree

  • Fix for renaming entity not always starting with the previous name. #1287
  • Refactored and cleaned up the Entity Tree drag and drop code. #1323
  • Fix for potentially infinitely recursive Trees. #1327
  • Entities can now be filtered by their Entity Tags. #890

Asset Browser

  • Fixed a bug where assets could not be dragged without first being selected.
  • Fixed bug where renaming was broken in certain edge cases #1363
  • Fixed bug where changing asset browser views was not possible in certain edge cases #1349


  • Popup pickers have been moved to the picker API for easier reuse.

Docking System & General UI

  • You can no longer move the window by click-dragging buttons in the caption.
  • Tabbars now have a more balanced look, the spacing around close and pin buttons have been tweaked.
  • Splitters can no longer be dragged past their minimum or maximum size.


  • There is now a setting for controlling the sound volume in the editor.

Content Pipeline

  • After a DCC asset reimport, any referenecs to animations in the old DCC asset are now updated to point to animations in the updated DCC asset. #1363


  • Auto exposure is now reset when switching to a viewer that has previously been disabled.
  • Improved coverage for color space conversions.
  • The fill buffer command now validates input range.
  • Vulkan: Fix for rare thread concurrency issue in private__aloc_bindless_handle().
  • Low-level support for scheduling passes in a render graph modules to run on the asynchronous compute queue.
  • Vulkan backend: Handling of queue ownership transfers using tm_renderer_resource_barrier_t.


  • Fix for default values not being correctly set over collaboration when a prototype is reset. #1304
  • When moving an object while collaborating, the object now moves along with how the collaborator drags it, instead of just teleporting to the new position at the end of the move.
  • Changelist collaboration messages now only serialize buffers if the receiving party doesn’t have a copy of the buffer. #1290

Truth Inspector

  • Fix for looking up wrong asset type. #1333
  • Added entry showing information about which asset owns this object.
  • Added path to the top-most owning asset.
  • Add UUID support in the views.
  • Being able to open a asset on disk (for Directory project).
  • Truth Inspector gets focused if it was not and objects are selected for inspection from a context menu.


  • Quaternion inverse now normalizes to improve accuracy.
  • System dialogs can now be shown from task threads. #1328
  • Reduced clustering in the memory tracker’s hash tables. #1309
  • Fix for errors when CHECK_PTR_SIZES is enabled in the memory tracker.
  • If a debugger is attached, The Machinery will now break into the debugger on errors.


  • Fix for broken image links in the README file. #1311


  • Fixed an outdated certificate that made it impossible to login from the Login Tab.
by The Machinery Team