godotengine / godot

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

Suggestion: combine GDScript with the Visual Scripting #19955

Closed BrahRah closed 4 years ago

BrahRah commented 6 years ago

Godot version: 3.0.4 OS/device including version: Win 7

Issue description: Atm users can either use VS or GDScript but VS could be a visual representation of GDScript.

It's probably a lot of work and low priority and I'm not even sure if this is possible but I'd love it if anyone did this. Users with no coding knowledge could start off with the visual scripting and just "doubleclick" or select a block and press a key to jump to the GDScript representation of that block and vice versa. That way learn slowly to code text based or even the other way around somebody used to text based coding could slowly learn visual scripting. Also prof. programmers and artists can work on every part of the code in the way they are most comfortable with. Working on Open Source projects would be less restricted because even if a user doesn't like the visual script they can just use the GDScript. After the user that used GDScript another can continue using the visual script.

I don't think anyone has done this yet and it would def. be crowd-pleaser and set godot apart from all the other game engines/editors in a big way.

Sslaxx commented 6 years ago

The RPG-in-a-box dev is doing something vaguely along these lines. https://twitter.com/rpginabox/status/1004392979619024896

vnen commented 6 years ago

The main issue is that people who wants visual scripting is not really wanting to "learn code". If VS is just a visual representation of code, there's not much of a difference from text code in the way you have to think to accomplish stuff.

People into visual scripting wants to have a higher level of abstraction so they don't have to think about the details of implementation.

This kind of translation would only be possible if there were some higher level black-boxes in VS and then the translator would have to be smart enough to recognize this boxes in the text code so it doesn't break the visual code.

KellyThomas commented 6 years ago

To provide such close parity with a relatively low level language like GDScript and a visual language the visual language would need to look something like Scratch.

While that might be desirable for some, at that point it would stop solving many of the problems the current system addresses.

mhilbrunner commented 6 years ago

I think this is impossible (or at least very hard).

You'd need to generate a VS layout from GDScript code.

Laying out/positioning a larger amount of connected nodes in an intelligent way is probably right up there with self-driving cars.

fire commented 6 years ago

@mhilbrunner Layout of nodes is actually a solved problem.

See klayjs.

https://openkieler.github.io/klayjs-d3/examples/interactive/

and

https://projects.eclipse.org/proposals/elk-eclipse-layout-kernel

The main problem is converting java / javascript to c++ or reimplementing the paper in c++.

clayjohn commented 4 years ago

Feature and improvement proposals for the Godot Engine are now being discussed and reviewed in a dedicated Godot Improvement Proposals (GIP) (godotengine/godot-proposals) issue tracker. The GIP tracker has a detailed issue template designed so that proposals include all the relevant information to start a productive discussion and help the community assess the validity of the proposal for the engine.

The main (godotengine/godot) tracker is now solely dedicated to bug reports and Pull Requests, enabling contributors to have a better focus on bug fixing work. Therefore, we are now closing all older feature proposals on the main issue tracker.

If you are interested in this feature proposal, please open a new proposal on the GIP tracker following the given issue template (after checking that it doesn't exist already). Be sure to reference this closed issue if it includes any relevant discussion (which you are also encouraged to summarize in the new proposal). Thanks in advance!