godotengine / godotengine/godot-visual-script

Save VisualScript in a text-based format instead of a binary format

Open
#18 5 comments 16 reactions 0 assignees View on GitHub
enhancement
Dominant language
C++
Stars
131
Forks
25
PR merge metrics
No merged PRs in 30d

Description

This supersedes [#16023](https://github.com/godotengine/godot/issues/16023).

**Describe the project you are working on:**

https://github.com/godotengine/godot-demo-projects/tree/master/visual_script

**Describe the problem or limitation you are having in your project:**

The problem is that VisualScript files are saved as binary, not text.

* Changing binary files in Git is a quick way to bloat the Git history.

* It's extremely difficult to review changes to VisualScript files if people submit pull requests.

* It's impossible to rebase and combine changess to VisualScript files in pull requests.

* It's [impossible to share](https://github.com/godotengine/godot/issues/16023) VisualScript files in places that don't allow uploading binary files.

**Describe the feature / enhancement and how it helps to overcome the problem or limitation:**

Storing VisualScript files as text would fix all of these problems. It would take up less space in Git history when things are changed, it makes changes easy to review, it would become possible to combine changes, and it would allow sharing VisualScript files by pasting some text.

**Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams:**

I propose the file format would be called `tvs`, and files would end in `.tvs`. It would behave like `tscn` or `tres`, with `tvs` simply being a text version of `vs`, and new files are saved as `tvs`.

**If this enhancement will not be used often, can it be worked around with a few lines of script?:**

The only workaround is to [use built-in scripts](https://github.com/godotengine/godot/issues/16023#issuecomment-488029318), or hack them to save as `.tres`.

**Is there a reason why this should be core and not an add-on in the asset library?:**

Even if it could be worked around, this kind of thing must be a part of the engine, because if you send a `.tvs` file then you'd also need to send the add-on, which defeats some of the point.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.