ECS Order Graph
Asset Store Link: ECS Order Graph
About
ECS Order graph is a tool that allows you to quickly and easily set the order of system execution in an ECS based project through a visual interface. It supports all features you would expect from setting system order such as telling systems to update before/after other systems, grouping, and forcing a system to update a the beginning/end of their group.
It displays all systems in your project - custom ones you've created and built-in ones from Unity. The Unity ones are quite obvious as they are colored red and you are unable to modify them.
Setup
Setup is extremely simple, just download and import the package from the "My Assets" section of the package manager (all files can be imported). Once imported, you can open the main window by going to Window > Visual Scripting > ECS Order Graph - this will then scan your project for all systems and display them in the appropriate sections of the graph.
The graph is fairly straightforward to understand, the current system group you are viewing is at the top of the window. In the main section of the window, there are 3 sections: a default section, a section for systems forced to run at the beginning of a group, and a section for systems forced to run at the end of a group.
For sub-groups, there will be a "Load Group" button on the node which allows you to dive into that system group. Clicking the "Load Parent System Group" will bring you back to the group you were just in.
Usage in DOTS Survivors
As ECS Order Graph is a development tool, there are no additional files to import that are specific to DOTS Survivors to demonstrate implementation.
This asset is extremely nice to use for a project of the scope of DOTS Survivors with many systems stored in system groups and common usages of "reactive" systems that depend on the completion of previous systems. This asset allows me to view the system ordering of all my systems at once without having to bounce between files and mentally track the order of several systems I may need to consider.
It allows me to quickly recognize any issues with my system ordering such as systems I may have forgotten to add constraints to or incorrectly applied constraints. It is really nice to see this information in this visual format, as sometimes in looking at isolated segments of code, issues like these are harder to recognize.
When the order graph is used to modify constraints, the scripts are modified to add, remove, or change constraints of the system. Although in theory only the system attributes should be changed, this asset is still directly modifying the source code of the asset. As such the developer has included a backup feature that will save the state of each script prior to modification. The developer notes, and I will iterate, that this feature is not a replacement for proper version control.