Disclosure: This website contains affiliate links, which means we may receive a commission if you click a link and purchase something through our website. Purchasing assets through our links won’t cost you any extra money and will help fund the hosting and development of this site.
This is the full version of the Modulo Visual Scripting Framework. For the free evaluation version, see this page.
Unity Forums Thread
Modulo provides a method of visual programming in Unity by building state machines using logic nodes. Rather than being 'yet another visual scripting tool' aimed at making games without code, Modulo is specifically designed to help programmers and designers collaborate. It provides a simple but powerful framework for programmers to script logical building blocks that designers can then configure, combine, and experiment with. It is an effective tool for constructing and visualizing the flow of complex logic trees, such as dialog trees or behavioural AI.
* A fully Unity-integrated editor is provided for editing visual scripts (called modules).
* Each module contains a number of state machines which act similarly to methods/functions in programming.
* Designers can define variables to pass around data within a module. These can be references to scene objects (via the built-in Persistent Object System).
* A sophisticated execution model supports multiple coroutines of execution, and keeps track of state machine invocations on a context stack.
* Transition conditions are state-machine nodes too, and these can be chained in AND/OR configurations to construct complex decision trees.
* Debugging features: Set breakpoints, log messages to the console, automatically follow execution of a module, modify and watch variables during play mode.
* Common usability features: zooming, panning, resizing of UI components, node grouping, copy/paste, tabs, annotations, undo/redo.
* Nodes and groups can be color-coded.
* Creating new node types is simple and intuitive. A collection of base node classes are provided to hide the complexity of common use cases.
* The system can be easily extended to support additional types of Modulo variables, including ones that act as references to objects in scenes.
* Object allocation is kept to a minimum to avoid GC spikes.
* Custom editor scripts are defined for nodes in the usual Unity way, meaning that how a node is configured is entirely up to the programmer.
* A mechanism is provided for saving and loading the state of all module runners in a scene.
* A robust mechanism is provided for checking modules for errors.
* Get/set global variables, and run/pause module runners via scripting.
* Module runners can be instantiated during runtime.