Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a system for storing, displaying, and warning about incompatible features in the Project Manager #427

Closed
aaronfranke opened this issue Aug 3, 2019 · 2 comments · Fixed by godotengine/godot#31171
Assignees
Milestone

Comments

@aaronfranke
Copy link
Member

aaronfranke commented Aug 3, 2019

Describe the project you are working on:

Various projects with various versions of Godot, some of which are incompatible with each other.

Describe how this feature / enhancement will help your project:

Currently, when you have C# projects, and open Godot without Mono support, then Godot will fail to load the C# scripts when it opens the project. There is currently no visual indication that you will be unable to load the project:

1

My proposed solution for this is to add a system for storing which features are used in each project. A project with a C# solution generated would be given a "feature tag" for C#. If you open the project with Godot with Mono support, it will detect the tag and detect that it supports it, and it will work fine. If you open the project with Godot without Mono support, then it will see the tag and display a yellow "C#" message in the project manager, followed by a warning if you try and open it.

Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:

2

The warning could be something like "Warning: This project uses the following features not supported by this version of Godot: C#. Open anyway?".

The reason I'm suggesting that the feature tag system is generic is because this would be useful in several other areas. For example, we can make Godot versions be feature tags, so this system would fit the use case of godotengine/godot#25497. If Godot detects that the version used is different, it will display the project's version in yellow, and show a warning if you try and open the project. This system would also be useful for when Godot has double support, and we don't want users to accidentally open their double-precision projects with normal Godot and vice versa.

For example, this could display if a project is using Godot 4.0, C#, and doubles, and it's viewed in the project manager of Godot 3.2 without C# support (EDIT: This is a theoretical parallel universe where the PR was merged in time for 3.2):

3

One of the key things is that if the system is generalized like this, then non-double Godot wouldn't even need to know what the "double" tag is, and Godot without C# wouldn't need to know what "C#" is, all they know is that the project uses it, and it doesn't have that feature, so show a warning.

Describe implementation detail for your proposal (in code), if possible: godotengine/godot#31171

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

No, because it's about the project manager.

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

Yes, because it's about the project manager.

@Calinou Calinou transferred this issue from godotengine/godot Jan 31, 2020
@Calinou
Copy link
Member

Calinou commented Jan 31, 2020

Slightly offtopic, but should tags be stored on the project manager side (i.e. outside the project data) or in the project (i.e. in the project files, stored in version control)? If we were to store tags in the project, it could become messy if you clone lots of random projects. That is, even if we impose some kind of standardized syntax like GitHub Topics (lowercase only, dashes instead of spaces and underscores).

As for the Mono feature specifically, it might not be a good idea to always apply a mono tag to all projects that were created with a Mono-enabled version of Godot. Some people may be creating GDScript-only projects with a Mono-enabled version of Godot after all.

Sorry if I'm kind of dragging the discussion to a tag system, but I noticed godotengine/godot#8167 wasn't reopened as a proposal yet.

@aaronfranke
Copy link
Member Author

aaronfranke commented Jan 31, 2020

It should be in the project file in version control, so that the feature list is preserved for other users. If someone opens and saves the project in another Godot version, that should be saved. If the project requires a custom build of Godot to open, that should also be saved so anyone cloning sees the warning. I don't see how it would get messy, this isn't something that I expect most users to manually modify or add custom tags for (the image in the PR where I modified the project is just an example, there is no Godot 3.7).

Some people may be creating GDScript-only projects with a Mono-enabled version of Godot after all.

Yeah, the idea is to detect if there's a C# project generated. The PR doesn't currently do this. EDIT: It does now.

@aaronfranke aaronfranke added this to the 4.0 milestone Jun 23, 2020
@aaronfranke aaronfranke self-assigned this Jul 15, 2020
@Calinou Calinou changed the title System for storing, displaying, and warning about incompatible features in the Project Manager Add a system for storing, displaying, and warning about incompatible features in the Project Manager Sep 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants