We're just about a month away from the stable release of Orchestrator 2.0, and we're thrilled to announce the next iteration of Orchestrator, the 2.0.dev3 build.
Jump to the Downloads section and give it a spin now, or continue reading to learn about the highlights and other improvements in this release.
Performance
Much of this past month's work examined how Orchestrator stood against GDScript. Multiple sources had asked about benchmarks, and we felt we were finally at a good spot where it made sense to explore that rabbit hole.
Throughout Orchestrator's development cycle, we didn't notice any issues; however, we had not put the code under a profiler, and most of our expectations were based on anecdotal evidence from our demos and usage. In our controller and game logic examples, none of the logic was overly taxing on Godot, and we suspect that most users likely didn't notice any major performance bottlenecks. However, that doesn't mean performance issues don't exist.
We started using various test cases, and one in particular highlighted problems quickly. In our most recent DevTalk - Performance Comparison: Orchestrator vs GDScript, we discuss the Fibonacci Sequence and how we used this algorithm to uncover some particular performance problems with Orchestrator.
We are pleased to say that through our changes, we have made Orchestrator nearly as fast as GDScript, within a 1% difference in performance of the Fibonacci Sequence. This work involved several key changes to the code, including:
- Rework several script nodes to have better step execution performance.
- Utilize cache mechanisms to reduce expensive and repeated function calls and lookups.
- Optimized execution stack calls and favor using argument references for return values.
While we believe that Orchestrator's performance is much more streamlined, we are certainly not done and intend to continue looking at various node implementations and algorithms to insure that visual scripting remains a viable and competitive form of programming in Godot.
Action Menu Favorites
We heard feedback from the community that the All Actions dialog menu was not as user-friendly as users would like, and to address that, we've introduced a new feature called Action Menu Favorites.
The All Actions dialog is accessed by right-clicking the graph canvas when working with an Orchestration. In this new release, users will notice that there is now a ⭐️ button at the end of each action item. Users can click on this button to mark an action item as a favorite, adding it to the top of the All Actions dialog under the category called Favorites, as shown below:
The list of Favorites are managed per Godot project, meaning that users can easily assign unique favorites lists that are tailored to that specific project's needs.
Quick Action Menu Selection
The community also expressed concerns about the All Actions filter selection process. Users indicated that they felt that providing filter criteria should automatically select the first hit based on the user-supplied keywords. We are happy to announce that we've made these changes, shown below:
We look forward to the user's community feedback on how this helps improve efficiency at adding new nodes.
Drag-n-Drop Add Variable Keybindings
In previous versions of Orchestrator, when a user would drag a Variable onto the canvas, releasing the mouse to drop the item would open a pop-up window, allowing the user to select whether the variable node should be for reading the variable's value or to write a value to the variable.
In this release, we've improved this workflow by allowing users to use the Ctrl and Shift keys to control whether the drop operation adds a variable Get or Set node to the graph canvas. While dragging a variable onto the canvas, the user will be presented with a "Hint" message at the bottom of the canvas, shown here:
By holding the Ctrl key while releasing the mouse, a VariableSet node will be spawned. Similarly, by holding the Shift key when releasing the mouse button, a VariableGet node will be spawned.
Bug fixes
In addition to the new changes highlighted above, there were several bug fixes, which include:
- Dragging a connection from a node pin onto the canvas resulted in an editor crash (GH-82).
- Unable to add new variables due to incorrectly generating new placeholder names (GH-89).
- When renaming components, if there is a name collision with an existing object, users will now be shown a pop-up dialog window informing them of the collision rather than an output error message (GH-89).
Changes
There were 29 for this release. In the project's change log, you can review all changes in this release.
This release is built from commit c633898.
Downloads
Download the Orchestrator 2.0.dev3 plug-in.
We also have demos available that can be downloaded based on your platform:
Platform | Download |
---|---|
Linux Demo | godot-orchestrator-demo-v2.0-dev3-linux.x86_64.zip |
MacOS Demo | godot-orchestrator-demo-v2.0-dev3-macos.universal.zip |
Windows Demo | godot-orchestrator-demo-v2.0-dev3-win32.zip |
While we do our best to ensure that each preview release snapshot and release candidate is stable, this is by definition a pre-release piece of software. Be sure to make frequent backups or use a version control system, such as Git, to preserve your projects in case of corruption or data loss.
Bug Reports
We encourage all users to test the new release and report any bugs encountered. Before submitting a bug report, please check the existing issues on GitHub to ensure your bug hasn't already been reported or addressed.
It's especially crucial to report any regressions in your project, such as features that worked in previous releases but are now malfunctioning.