godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
89.77k stars 20.9k forks source link

Are specialized Visual Script nodes engine bloat? #28080

Closed Jummit closed 5 years ago

Jummit commented 5 years ago

I see Visual Script as an opportunity for beginners who can't code to get into Godot. To ensure it is as easy as possible specialized nodes have to be considered. The Action node is a great example. You could either see it as user input made easy, or as engine bloat, as it can be easily replaced by a Input Engine Singleton -> Is Action Pressed. I would like a Random Vector2 / Vector3 node and many others to make things simpler. What is your oppinion / is there already a statement?

I could also see a library of custom nodes as an addon as a solution, as that doesn't increase the Godot file size. For that the custom nodes would have to be made more accessible though. They should appear in the node search for example.

Ace-Dragon commented 5 years ago

The truth is, even though GDscript is far easier than learn compared to C# and especially compared to C++, there are people out there who are quite visually oriented and have trouble following the structure of a language that is typed.

The visual scripts allow them to visualize the flow of the logic, which helps them actually code games. Many will probably graduate to writing scripts anyway, but it depends on how their brains are wired on the spectrum of creative thinking vs. analytical thinking.


Personally though, I don't use the visual scripting nodes and prefer writing scripts. I do use the visual shading nodes though so I do see the value of them, at least outside of scripting. My opinion anyway, others may differ.

slapin commented 5 years ago

Well, there are also some "coding monkey" haters among designer folk who accept visual editing but not any text-based programming, even though visual tools are generally harder to use for large code. These people try to avoid text programming at all costs in their project considering "coderless" environment more healthy (even though they just delude themselves). But these people are still relatively big number among designers, so having tools in proper shape will attract peopla and make Godot more popular which is good thing.

fire commented 5 years ago

We should support both "default" nodes which are encoded into c++ and libraries which can be fetched from the asset library.

@swarnimarun has made an addon for additional nodes.

If some nodes are popular, they should be converted from gdscript to c++ and made default.

mhilbrunner commented 5 years ago

Every feature is engine bloat. There is always a tradeoff between additional complexity and usefulness of the feature. There is no universal answer to this question in general, as it depends on the specifics.

As outlined by reduz:

Philosophy to me should be that something should be part of the engine only if ALL the criteria below are met:

  1. It's used relatively often
  2. It's difficult to do yourself
  3. There is only one way to do this feature

So the current process it to open an issue or pull request to discuss a specific addition (whether a new VS node or another feature).

This could be your random vector node example.

This is then discussed by the core contributors and the community.

Does it fit the above criteria? Is there enough demand compared to the added complexity and maintenance burden?

If in doubt, just open a suggestion. To me, having a random vector node for Visual Script sounds useful.

Thanks! - I'll close this, as again, this is a very general questions without any productive answer without discussing specifics. :)