The start of this year marked the debut of our initial Orchestrator development release, and our team has been actively enhancing its capabilities since then. We're excited to share that we've released the latest version, Orchestrator development build 2.0.dev2. This release introduces several new features and enhancements, all designed to elevate the user experience with Orchestrator. Let's explore the offerings of this new pre-release.
Awaiting Signals
In Godot, a widely used approach is the implementation of the observer pattern through signals. This pattern involves an observer object waiting to be notified about an event occurring in another object, known as the subject. Upon the subject emitting a signal, the observer gets notified and responds accordingly. Orchestrator can tap into this mechanism by connecting to a signal and initiating a user-defined function once the signal is activated. This typically involves two separate control flows: one for subscribing to the subject's signal which then concludes, and another function that activates upon the signal's emission.
However, in certain scenarios, it might be more effective to adopt a coroutine style approach. This method involves pausing the current flow of code, or 'yielding', until the signal is fired. The code then resumes from where it was paused. This technique enables a single control flow to manage both the initial set-up and the subsequent response to the signal, streamlining the process for event-driven logic.
The new Await Signal node is precisely what would be used in this use case. For example, you could obtain the scene tree, create a timer, and then set up an await signal on the timer's timeout signal, to halt or yield the current function's control flow until the timer's timeout signal is raised. This can be used in any event graph to create simple asynchronous reactions with other scene objects or concepts.
Interact with other scripts
A constraint noted in the initial development release of Orchestrator was its inability to showcase the exported variables or accessible functions of a scene node with an attached GDScript or CSharp script. This limitation significantly hindered the capability to interact comprehensively with other attached scripts, a feature readily available with other Godot scripting languages. The latest development release addresses this issue by incorporating any available functions and exported variables from an attached script into the action menu. This enhancement becomes active when a connection is dragged from a pin of a Scene Node node, streamlining the workflow.
Floating Window Support
A recent enhancement to the Godot editor is the ability to transform various docked widgets and main views into floating windows. This feature significantly improves the experience of using Godot on multi-monitor setups or wide-screen monitors, boosting productivity. A community member proposed the integration of this functionality into Orchestrator, noting its potential benefits in workflows involving a mix of Orchestrator and other elements like the Script, 2D, or 3D viewports.
In response to this suggestion, our latest development release introduces a "Floating Window" icon. This icon replicates the behavior observed in the Script tab of the Godot Editor, allowing for a more flexible and efficient workspace arrangement in Orchestrator.
This feature enables you to relocate the Orchestrator main view anywhere on your desktop, offering the same level of flexible interaction as with other editor widgets. Moreover, the editor remembers the position of this window, along with any scripts that were open, and restores them on a per-project basis. The behavior of this feature is governed by the same editor configuration settings that apply to the Script tab, ensuring a consistent and user-friendly experience.
Graph Node Management
A significant limitation in the user experience has been the absence of bulk operation capabilities within a graph canvas. Users might have experienced the need to refactor logic into a function after creating an Orchestration, only to find the process cumbersome due to the inability to transfer behavior from one graph canvas to another.
The upcoming release addresses this issue by introducing comprehensive bulk operations. Users will now be able to copy, cut, paste, and duplicate selected nodes on a graph canvas. While certain nodes like Event, Function Entry, or Function Return nodes may not be eligible for bulk operations, the majority are. This enhancement is designed to streamline the refactoring process, making it much more efficient and less error-prone.
Local Variable Improvements
Orchestrator offers support for local variables within user-defined functions, enabling the management of temporary state until the function concludes. These variables are not set up in the variable component view but are instead represented by specific nodes within the graph canvas of the user-defined function. Initially, it was common to pair a Comment node with the local variable node for documentation purposes. However, we recognized that this approach could be streamlined.
The forthcoming release enhances Local Variable nodes by adding editable name and description fields within the Orchestration interface. When a name is provided, it will be displayed on the output pin's label, allowing developers to easily identify the purpose of each local variable node. For situations where a name isn't sufficient to convey the variable's role, an additional description field is available for more detailed documentation.
Editor UX improvements
Several enhancements have been made to the editor user experience as well.
Firstly, the Goto Node dialog has been upgraded by integrating an accelerator shortcut key. Now, within the Orchestrator main view, you can quickly navigate to a specific node by using Ctrl+L. Furthermore, the text box in the Goto Node dialog has been optimized to accept input upon pressing enter, significantly streamlining the process of moving between nodes within a graph canvas.
Additionally, we've implemented a new status text overlay on the graph canvas, designed to assist new users. We recognized that for those new to a visual scripting tool like Orchestrator, it might not be immediately clear that the right mouse button is used to add new nodes to the graph canvas. Therefore, in this new release, when a user encounters an empty graph canvas, they will be greeted with the message "Use Right Mouse Button To Add New Nodes." This feature is intended to make it easier for newcomers to understand how to begin working with an empty graph canvas.
Lastly, we have introduced a Zoom indicator at the top-left corner of the graph canvas. This feature informs the developer of their current zoom level, indicating how much further they can zoom in or out. It serves as a quick reference to understand the present zoom scale on the graph canvas.
Early Godot 4.3 Testing
The team has started conducting tests on Orchestrator using Godot 4.3 (dev1 and dev2) versions. So far, we haven't encountered any problems. Our plan is to continue using Godot 4.2.1 for the near future. While we are interested in some of the new features expected in Godot 4.3's April release, we do not plan to transition to Godot 4.3 until it reaches a stable version.
Bug fixes
Several bug fixes have been implemented to resolve issues of game crashes and runtime failures that occurred when an Orchestration was attached to a scene node. These issues have now been rectified, ensuring that Orchestrations should function smoothly in any new project.
Downloads
The latest development build 2.0.dev2 can be downloaded from Github.