By: Juan Linietsky 23 August 2022

Visual Scripting was introduced in Godot 3.0, almost five years ago. Despite our continuous effort, it never gained traction and the path to improve it was never clear. Because of this, for Godot 4.0, we decided to accept that the approach we took from the start was simply not the right one and decided to remove it from the engine. If enough volunteer interest exists, it may be moved to an extension.

Origins

One of the most requested features when Godot 2.1 was around was Visual Scripting. At the time it seemed like just another feature request. Still, this one had a peculiarity: It was a feature that many yet to be Godot users wanted in order to use Godot.

Most features in Godot are requested by users actually using the engine, not by potential users. Nowadays, in fact, Godot proposal system is designed in a way where feature proposals must meet the requirement of being needed for actual projects. That was not the case back then.

So, we ran a poll to determine which kind of visual scripting users wanted and most mentioned Blueprint style.
With this information, Visual Scripting was created and published for Godot 3.0.

It was not perfect, but it contained most of what we believed was needed to use it. Using it similar to GDScript was relatively easy.

Unable to meet expectations

Unfortunately, visual script did not catch on. When trying to ask users why they did not use it, we got two main answers:

  1. For a lot of potential users that wanted this feature, they found out GDScript was a great fit and they much ended up prefering it over visual scripting. They did not expect to find GDScript to be so easy to learn and use (even if they did not know prior programming), given none of the popular engines of the time offered this type of high level scripting. Godot ended up allowing a lot of its users to be a tool to learn programming instead.
  2. Even though the visual scripting part was good enough, Godot lacked high level components to make use of it. Engines like Unreal, Game Maker or Construct offer high level game features packaged together with the visual scripting solution. This is what makes it useful. Godot is an extremely general purpose game engine where it’s easy to make those features yourself, but they don’t come packaged out of the box. As such, visual scripting by itself was of little use.

According to our most recent poll (with more than 5000 respondents), only 0.5% of the user base has used visual scripting as their main engine language.

vspoll.png

No path forward

Contributor community did improvements to it, but for the most part these were mostly based on assumptions of what could be improved since, for pretty much all features we implement in Godot, we always get user feedback indicating us what needs to change, via issues or proposals.

Visual scripting was the exception, we struggled to get enough feedback to improve it meaningfully. The conclusion we can draw from this is that there simply wasn’t any path forward: the approach we took to visual scripting was simply not the right one.

Removing and maybe moving to extension

Visual scripting will be removed from the codebase in Godot 4.0 (it will remain supported in Godot 3.x branch).

One possibility is to convert it to an official GDExtension using GodotCPP, which is very mature now and should support everything required to do this. As an extension, it may work better as grounds for experimentation and improvement. For this to happen, however, there have to be volunteers wanting to make this happen and spend the time required to research a path forward. If you are interested, get in contact with us on the #scripting channel our RocketChat server at chat.godotengine.org.

Retrospective

Godot development philosophy has shaped very strongly to focus on finding solutions for user problems and real-life use cases. Visual scripting was not developed this way, and hence we were unable to implement something useful, costing us significant development time. This has been a great learning experience and it reinforces our belief that Godot must always be developed user-facing first.

Future

There are some ideas floating around by contributors on implementing alternatives to do visual scripting, more similar to tools like Game Maker or GDevelop. Anything that is done will most likely still be an extension, as a feature like this is unlikely to make it into the core.

Removal will happen before Beta (which is now very close!). Even though it’s gone, we are still thankful to all the effort that many contributors put on it over the past years to try to keep it alive, even if it ultimately we were unable to attract user interest!

Source: Godot Engine Official