Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Visual script overhaul #3

Closed
Jummit opened this issue Apr 29, 2019 · 24 comments
Closed

Visual script overhaul #3

Jummit opened this issue Apr 29, 2019 · 24 comments

Comments

@Jummit
Copy link

Jummit commented Apr 29, 2019

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
@fire
Copy link
Member

fire commented Apr 29, 2019

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

@fire
Copy link
Member

fire commented Apr 29, 2019

@fire
Copy link
Member

fire commented Apr 29, 2019

#6

Unified graph

@fire
Copy link
Member

fire commented Apr 29, 2019

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

@Jummit
Copy link
Author

Jummit commented Apr 29, 2019

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"?

@fire
Copy link
Member

fire commented Apr 29, 2019

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

@fire
Copy link
Member

fire commented Apr 29, 2019

@swarnimarun
Copy link

swarnimarun commented May 7, 2019

Moved this proposal to godotengine/godot-visual-script#17

@swarnimarun
Copy link

swarnimarun commented May 7, 2019

Moved to godotengine/godot-visual-script#16

@swarnimarun
Copy link

swarnimarun commented May 7, 2019

Moved to #6

@swarnimarun
Copy link

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

@fire
Copy link
Member

fire commented May 7, 2019

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 .

@ghost
Copy link

ghost commented May 7, 2019

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?

@fire
Copy link
Member

fire commented May 7, 2019

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

@ghost
Copy link

ghost commented May 7, 2019

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?

@fire
Copy link
Member

fire commented May 7, 2019

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.

@ghost
Copy link

ghost commented May 7, 2019

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.

@ghost
Copy link

ghost commented May 7, 2019

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).

@fire
Copy link
Member

fire commented May 7, 2019

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

@ghost
Copy link

ghost commented May 7, 2019

Got it. I like it.

@Jummit
Copy link
Author

Jummit commented Sep 3, 2019

Closing and maybe rewriting later to follow #10

@Jummit Jummit closed this as completed Sep 3, 2019
@fire
Copy link
Member

fire commented Sep 3, 2019

I highly recommend making a SEPARATE issue per task.

@Norrox
Copy link

Norrox commented Oct 12, 2019

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

@Jummit
Copy link
Author

Jummit commented Oct 13, 2019

For the time being you can use this:
https://github.com/swarnimarun/visual-scripting-node-library/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants