Godot-proposals: Visual script overhaul

Created on 29 Apr 2019  路  24Comments  路  Source: godotengine/godot-proposals

Here are some suggestions and proposals for VisualScript:

Node io:

  • Reroute graph connections
  • Change input type of switch
  • Return of functions are always "any"
  • Make functions not have output if no return exists
  • A Get Local Variable node should find other Set Local Variable nodes with the same variable name and set it's type to that
  • Constructors for non-basic classes
  • Drag and drop consistency (Getters and Setters)
  • Shift instead of Ctrl for setters (Shift is for inverting things)
  • Pull out from an input port to create a variable of the correct type
  • Update function arguments, name and output

    UI:

  • The nearest port should be dragged, not a random one in range

  • Nodes should be selected when added
  • Better searching behavior (just show us all the things!)
  • Search doesn't work with spaces
  • Grid snapping options should be the same in any script
  • Grid snapping should be 10 by default
  • Functions should stay open when changing scripts
  • Editing variable is always black (Theme is ignored)
  • Ability to hide windows in the script editor (No minimum sizes)
  • Allow visual script zooming with scroll wheel
  • Make zooming better
  • Enhance member variable editor (Click to edit variable, not name)
  • Make long dropdowns searchable (this applies to other engine features as well)
  • Shortcuts for compressing nodes into a function
  • Double click function nodes to edit them
  • When adding a node, it should automaticly drag out the first output/input

    Inheritance issues:

  • Parent methods don't get displayed

  • No methods / members get displayed
  • Base type gets long when it's a custom script

    Other:

  • Conditions should be configurable

  • Make custom nodes resource based, or convert resource to custom node (this could be done in a plugin)
  • Unify the visual script graph
  • Text based saving for version control
  • Unify VisualScriptLocalVarSet, VisualScriptVariableSet and VisualScriptLocalPropertySet
archived visualscript

All 24 comments

Text based shaders

Also, in 4.0 there's a change that'll allow text visual script and materials

https://github.com/godotengine/godot-roadmap/issues/30

There's a hot spot zone for the port connection. We can tune the size of it.

The nearest port should be dragged, not a random one in range

There's a hot spot zone for the port connection. We can tune the size of it.

The nearest port should be dragged, not a random one in range

The issue with that it that it doesn't use the nearest point in range, but rather the first point in range it finds, which isn't always the closest one.

Grouping and regrouping random nodes

Do you mean the random nodes (Rand, Randf and Randomize)?

Unifying custom nodes, comment and expression nodes

That seems totally pointless and not backwards compatible.

Groups (interface with code)

What do groups have to do with interfacing with code? Do you mean interfacing with other vs scripts or gdscripts?

Useful for merge and removing the merge of entire groups.

What do you mean by merging? Merging functions or scripts? What is "removing the merge"?

Groups have a title, a list of grouped nodes, input-output port, and position.

So basically like every other graph node, just that they store a list of nodes. For what is this list needed?

Custom nodes derives from group

Why is this needed? For what would a custom node use a list of nodes?

Custom nodes are like groups except has Gdscript.

Custom nodes can also have every other type of script Godot supports, including VisualScript

Expression derives from group

That also seems strange to me.

To do for loops requires a generic shader node.

What for loop requires a "generic shader node"?

I will message you in discord and we can rewrite a summary. There's a summer of code proposal for this.

Moved to #7

Seems like Display Scaling is related but not necessarily dependent to DPi... Sheesh.

What do I need to do to split this list into 10-20 issues? Alternatively we can create markdown documents. It is difficult to comment on the proposals @swarnimarun .

I'd like to add some nodes to the Visual Script system but I want feedback before I start implementing it.

I'd like to add some nodes that abstract away some of the complication of visual scripting to make it more accessible and bring the difficulty of visual scripting closer to that of GameMaker.

Some possibilities include a two way input node that returns a float based off of input. Also, a four way input that returns a Vector 2.

The idea is just to simplify some of the common actions and reduce the number of nodes required to do some of the basic tasks.

I'd like to see this included in Godot and not as an addon to make Visual Scripting as accessible as possible for folks.

I realize most of the talk here right now is in the UI of visual scripting, and I don't mind working on these on the side.

Thoughts?

We're thinking of making a way to create "groups" easier so that custom nodes are in visual script instead of gdscript. So your two examples can be done via a collection of visual script nodes.

  1. two input ports; ???; 1 output float port
  2. four input port; ???; 1 output vec2 port

I was thinking of making those without any input ports, but having the actions selected in the sidebar, like the action node right now.

Are you looking at having any built in group nodes, again to abstract away some of the complexity for new users?

One of the pending ideas is removing the sidebar, and using control - f (generic search) for everything. Can you make a new proposal and draw a design?

We can bundle the various combined nodes we have and will have as "visual script nodes". We already have a long list of bundled nodes.

Other nodes that come to mind might be:
restart current scene
quit
load scene

I realize that those can be done with just a couple nodes, but for some users having a single node would simplify things a lot.

I'm wondering if "combined nodes" still will confuse new users. If there are some helper nodes to take care of some basic functionality that will make visual scripting easier to adopt for non-programmers or for example in schools (I teach middle school).

Imagine that we can double click into the nodes and see how they work and the combinations show in the debugger too.

Got it. I like it.

Closing and maybe rewriting later to follow #10

I highly recommend making a SEPARATE issue per task.

i really would like to see Reroute graph connections, that will make clean up the VS much easier

Was this page helpful?
0 / 5 - 0 ratings

Related issues

PLyczkowski picture PLyczkowski  路  3Comments

SleepProgger picture SleepProgger  路  3Comments

SpyrexDE picture SpyrexDE  路  3Comments

WilliamTambellini picture WilliamTambellini  路  3Comments

IllusiveS picture IllusiveS  路  3Comments