I'm working on a Visual Scripting language for Godot 4 inspired by Blueprints and written in rust

Hey hey!
So a long while back (if you’re cool you might even remember me asking around about it :3 ) I was working on a godot module called “Choreographer” which was intended to be a Godot 4 visual scripting language to take the place of Visual Script while focusing on improvements inspired by Unreal’s Blueprints (macro code blocks to make logic flow significantly easier). I eventually had to stop working on that due to many personal reasons. But now I’m back at it!

Overall Design

This time I am using GDExtension (specifically godot-rust) to build out the language and structure it. I’m working on a formal design description that I’ll post to my personal blog as well as putting it into the repo.

For now, the basic concept is that it is a visual scripting language that uses “blocks” (nodes but by a different name to avoid confusion with Godot’s Node types), and those blocks are linked in a graph similarly to visual shader graphs.

My goal is to have a ChoreographerServer system that runs at a lower level and just collects namespaced Block definitions, which would mean users could develop their own custom blocks as a “Block Pack Plugin” that can be installed in any project using Choreographer. This is to solve the main problem I had with VisualScript, which was that it was too general. Godot is amazing at being general purpose, but a visual scripting system can only be so simple while also capturing the myriad of functionality available to the engine. And this is where Block Packs would come in. My idea is that there could be a pack for 3D FPS logic, Networking, 2D JRPG Combat, etc… and because the block definitions are namespaced, these various packs could co-exist within the project without getting too messy.

Additionally, I want to leverage Godot’s binding system to allow users to write these custom blocks in any language supported, with GDScript and Choreographer itself being the premier languages for this purpose.

What I am working on now is getting the basic stuff like language registration and file format (XML based to make git diffs easier) working as expected. I’m also trying to balance performance and memory usage.

I’m running into a huge amount of technical challenges that are forcing me to call on basically everything I’ve ever learned between hobby development and my CS classes I took in college. This project is so incredibly fun and exciting for me and I really hope I can make something that the larger godot community will enjoy.

Contributing back to Godot

I’m also hoping to do some write-ups for my personal blog about the journey of writing a custom language and possibly contributing some documentation back to Godot since like 99% of the language registration classes have 0 documentation.

Licensing

I’m doing this project completely for free and open source under the MIT license, and in the future I hope some people will be interested in helping with development and improvement because I am not perfect.

How to support development

I’m working a shitty retail job to cover my life needs so if you wanna help me out financially I’ve got a Patreon and a Kofi (this project was re-started because enough people voted on it on my patreon poll.)

Otherwise the best way to support development is to let me know how interested and/or excited you are for this project because when I’m getting frustrated with the tougher aspects it’s knowing that people are excited that helps me push through the pain.

Links are in my carrd link in my profile. When I tried to add a github link it didn’t let me lol.

28 Likes

I am so here for this!! <3

3 Likes

Thank you for what you do! Here an artist trying to learn how to code, I wish to learn how to develop video games on Godot but unfortunately writing code for me is still difficult, I am hoping for an extension like this, visual scripting like blueprint or event-driven like on Construct/GDevelop, so that I can ramp up my familiarity with GDScript so that I will be ready then to code, I don’t know if this will help or not but I can point you that two other users were also doing something similar:

Henrique: twitter.com/henrique_dart/status/1713554033623834686
Dex Anidem: twitter.com/AnidemDex/status/1727101424834957706

5 Likes

Wow you have my salute! Although I’m capable of using traditional scripting, when I first used a visual scripting tool (Playmaker for Unity in this case), I absolutely fell in love with it and found debugging and understanding code workflow in general much easier. I’ll be following closely and donate when I can :slight_smile:

2 Likes

Awesom! Looking forward to it!

Yes i am also struggling with scripting as an artist that would love to make some games and or interfaces with godot. Visual scripting is what i have been hoping for. I would even take an event sheet approach like gdevelop or construct. Anything to avoid the headaches of dealing with the crazy syntax errors that seem impossible to avoid and figure out. I am excited to see what you come up with and excited to try it out. You have my vote. I am quite sure this will fill a huge gap for many new users that wish godot had some sort of visual scripting option. Thank you in advance

I will be keeping tabs on this. Normal scripting has gotten me by but visual may be useful for making the enemy ai system. Can’t wait to see the final product.