DEV Community

Cover image for DevLog 20260225: Divooka Visual Programming - Direct Value Setting of Compound Inputs

DevLog 20260225: Divooka Visual Programming - Direct Value Setting of Compound Inputs

Finally, it arrived! Well, not exactly here yet, but getting closer.

Screenshot of Visual Programming in Divooka - Value Assignment of Compound Inputs

Overview

Divooka intends to make visual programming simple and accessible - the accessible part is achieved both through wide availability and the general-purpose nature of the programming system, but the simple part is what we spend lots of effort thinking hard trying to improve.

In the past, dealing with complex configuration takes the form of either "explosion" of arguments or dedicated Make XXX construction functions:

An Example of A Node with Lots of Inputs

An Example of A Node Taking a Struct, Which Needs to be Created from a Node with Lots of Inputs

The problem arises due to the direct exposure of all input arguments in visual programming. Both approach makes the canvas look busy, with the former a common approach in existing systems - using a struct sounds good on paper but still requires a complex looking construction node. This is a common problem in visual programming systems, below shows how it's done in Blender and ComfyUI.

A Node with Many Inputs in ComfyUI

A Node with Many Inputs in Blender

You do get used to it after a while, but a busy looking canvas remains a busy-looking canvas. In Blender, you can sort of "collapse" a node:

Collapse Nodes in Blender

As Blender is constantly improving, we can also now collapse property groups as shown in the earlier screenshot.

As a syntax purist and (unfortunately) very conscious about my working space, my eyes can't tolerate messiness. I kind of like how Houdini approaches this.

Nodes in Houdini Are Very Simple and Clean

Houdini Makes Use of Property Panels

Essentially they offload all the complexity to the properties panel - this has the huge benefit of making everything look very clean. But the downside is Houdini rely heavily on scripting expressions (like Excel).

TerraGen and World Machine mixes the approach:

A Node Graph in World Machine

A Node Graph in TerraGen

In both cases, connections represent flow of terrain data only and additional configurations are offloaded to property panels. In TerraGen especially, this allows those properties to be animated. The downside, once again, is whatever is offloaded to property panels are no longer programmable using nodes.

Our Approach

Compound Input Editing Popup in Divooka

Our proposed solution for Divooka looks like this: fundamentally all properties remain as node inputs, but compound values (especially value types) should just allow "editing in place" through a property panel. If more complex programming is needed, one can easily fall back to Make XXX nodes again.

Future Work

There is still remaining work on type check, hierarchical compound types, arrays, and serialization, and also node rendering.

Conclusion

As usual with all the exciting language features of Divooka we intend to introduce, there are lots of details to take care of here.

Top comments (0)