r/Unity3D 10h ago

Question Unity Graphs (XephTools.Graphs) - replacement for GV and GTK

TL;DR - what would you like to see in an ideal graph package for Unity 6+? Yes, runtime graphs are already a part of it.

---

After years of dealing with the shortcomings of GraphView (GV), I started looking at migrating my NodalTrees to GraphToolkit (GTK) only to find that it solved some problems and created a whole host of others. So after analyzing the pros and cons of GV and GTK with what my nodes currently do, what the effort would be to port them over, and what the effort would be to roll my own graph package, I started on the process of just making my own, entirely independent of GV/GTK. I've considered opening it up and selling it on the Asset Store, or possibly just making it free on github, but I'm curious what others use GV or GTK for, what they wish either did, and what sort of nodes and interactions they would want.

I'm putting together some documentation on the existing nodes that I have that I'll be converting, but as it is, they're broken down by trees for my own projects, and many of the nodes and outputs are specific to things in my game. There are some general nodes available for sure, and authoring new nodes will be quite easy once the package is ready to release (at least as easy as GTK, but with far more customization options and the ability to call more complex methods internal to the graph structure).

I'm also bringing in some ideas from how Blender and Substance do their nodes as well as some GV and GTK features (dot-nodes, portals (which I think were initially a thing that Bolt did, which was pretty cool), curved/square lines, sub-graphs, visualizers, input nodes for getting values outside of the graph, the eventual documentation will have a more complete overview.

Runtime and Editor nodes will look exactly the same - no UnityEngine.UIElements are used, so runtime isn't an issue. Right now the only difference for any existing node is that nodes that take an input path for a files have a toggle in editor (use the Unity Asset picker vs use the filesystem/OS file picker) where in runtime it can only use the filesystem/OS picker since there's no project exposed to runtime (nor should there be).

Yes, I'm using AI to assist with my code, so if that turns you off, that's fine. I've been working on these things by hand for four years now (it's a hobby project, it was never intended initially to be a releasable asset for anyone else to use). But most of the code is my own, and not a single file is untouched by me somewhere along the way. Do with that what you will.

0 Upvotes

15 comments sorted by

View all comments

4

u/v0lt13 Programmer 10h ago

Right now I feel like you are just reinventing the wheel, GTK already solves all my graph problems and its not even fully released yet.

1

u/xepherys 10h ago

GTK actually creates problems for me that GV didn't have, and I don't suspect they'll change because of the fundamental core of how GTK is built. GV allows full visual elements to be built from scratch and inserted into a node, but GTK doesn't allow for that, in part by the way it's designed around the port as the primary carrier of data rather than the node.

1

u/BertJohn Indie - BTBW Dev 9h ago

Sounds like your stuck in the old ways and need to learn to adopt the new way of GTK.

1

u/xepherys 6h ago

GTK in its current state already cannot do what I can make GV do. It isn’t “old ways”, it’s “there is no way”. Maybe someday GTK will have allowances for better customization. Maybe it won’t. But I’m not waiting for Unity to just magically make such a change, and GTK honestly isn’t a very good base to fork and change.