I'm working in a visual script language in a event driven style

Hello alive creatures and some non organic forms, I’m Dex, and as the title says, I am trying to make made a visual script language for Godot with the help of a friend.

This is not a node/graph based language where these nodes are connected between them to define the flow, this is more an event-driven style one, where all steps are executed, one by one, according to a certain condition.

Here’s an image for reference, node base flow at the left; event driven flow at the right:
comparison-image

Took us around… two years? A little more than that probably? To define and make a release that we could agree to not refactor and work from that to keep everything functional and “scalable”, we hope to improve and maintain it as long we can with the help of the community.

Why?

Because… why not?

Seriously speaking, this project started as a way to improve another plugin and went out of the original plugin scope too quickly.

Debated a little, he wanted to do an Ace Attorney case maker for their friends, I just wanted to make something to make my point and click game easier because another friend of mine really hates code, so we ended making this.

What’s the goal?

We try to build a visual language that is either:

  • Absurdly easy to use for people that don’t want/don’t know write code, providing blocks, documentation, tutorials and templates for it.

  • Absurdly easy to extend for people to know how to write code, but the visual representation fits more for their team/certain behavior their game/app has, providing the necessary tools and language integration in order to make it possible.

Both being agnostic to the language used to create the “back-end” of these tools, and whatever comes around that, trying to solve some points on this old issue on the Godot repo (which have been moved many times):

How?

The plugin is made in GDScript. What we do is to reuse code snippets that user defines and call them when is needed:

The execution steps and the condition to execute them is controlled by the user for now, we plan to improve it to help the user with that task.

Due our (my, primarily) language agnosticism goal, we may consider moving from GDScript to GDExtension in the far future, without compromising user generated work, we started with GDScript because is easy to use and prototype with and because I wanted to make a backport for Godot 3.


I have never made a language before, and even if this is not my first time making some kind of piece of software, I can say that this is a big and complex task, but I don’t want to abandon this project, so you can take my word that we’re not gonna abandon this project in the near future, not even now that we have a public release :tada:

I’m posting it here in the forums because I want to track my progress somewhere, I want to share what I learn from it (as an example, the How to load and save things with Godot: a complete tutorial about serialization tutorial), I want help and most importantly, I just want to share it so people could know about it; maybe I will make another post presenting the plugin in the releases topic

That said, hope you all have a great day, thank you for passing by and reading :herb:

2 Likes

Actually looks pretty neat! I hope your project will turn out good because this could make Godot coding much easier for people who don’t like coding. How well does it work at the moment?

Well, my friend made this repository as playground with the plugin, and here’s the demo:

He’s also using it for its own project with his team, some of the opened issues in the repo are results of their feedback, so it technically works for its purpose but it still has some things to adjust here and there

1 Like

This was all made using the visual scripting? Cool.