Describe the project you are working on:
Godot 3(or maybe later 4) port of Tanks of Freedom(currenty is created with Godot 2.1.4) - https://github.com/w84death/Tanks-of-Freedom/tree/godot3
Describe the problem or limitation you are having in your project:
Updating project between different version is really hard and requires a lot of work.
Describe the feature / enhancement and how it helps to overcome the problem or limitation:
Converting project with update tool from Godot 2.1(2.1 -> 3.0) saved me a lot of work with renaming variables, scripts etc., so similar(but better) tool should appears in 4.0.
The most important thing is to build a system that will also be used in subversions, e.g. 4.1, 4.2 etc., because even small cosmetic changes may require significant changes in larger projects.
Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams:
I didn't look into the Godot 2 code, but it should probably be done almost the same as there.
The tool should:
Before converting, Godot should automatically create list of forbidden names which could be used to prevent wrongly using of user functions.
It is possible that user will use in script e.g. func drop_tree() which will work in Godot 3.2, but no with Godot 4.0, because it will become a built-in Godot function.
Each such function/variable should then be renamed from e.g. var connect to var USER_connect
If this enhancement will not be used often, can it be worked around with a few lines of script?:
Without project update tool, users will have to spend a lot of time with converting project to bigger version.
Is there a reason why this should be core and not an add-on in the asset library?:
This will be very frequently used feature, which should be maintained by all community to provide as easy as possible method to update project between versions of Godot.
I have project which can be used to track progress of this utility:
All nodes without scripts - The-worst-Godot-test-project-Without-Scripts.zip
All nodes with scripts - The-worst-Godot-test-project.zip
I think Godot 4.0 is going to work the opposite way: it'll have code to convert older projects, but old versions will remain the same. In fact, the node renaming system works this way.
This way, we don't have to patch old versions to add a dedicated exporter (which in turn forces us to release more point releases to fix things in the exporter).
Hmmmmmm...... This is same proposal
@Calinou: We're in 706 xDD
@Zireael07 Apologies, I fixed the proposal reference.
Most helpful comment
I think Godot 4.0 is going to work the opposite way: it'll have code to convert older projects, but old versions will remain the same. In fact, the node renaming system works this way.
This way, we don't have to patch old versions to add a dedicated exporter (which in turn forces us to release more point releases to fix things in the exporter).