Replies: 10 comments 10 replies
-
Can a project setting be added to disable this feature? I would assume turning UIDs on at a later time when the feature is actually needed by a project would be possible, otherwise, turning it on with 4.4 would break everyone in the first place. What are the pros and cons of such a project setting? |
Beta Was this translation helpful? Give feedback.
-
To help newcomers to the discussion get up to speedIf you want to test the feature as implemented currently, it's present in Godot 4.4-dev5 and later dev snapshots here (current): https://godotengine.org/article/dev-snapshot-godot-4-4-dev-7/#downloads alternate/complimentary issues and proposals: a pull request that offered some reference implementation: the PR that implements the changes discussed in the article on 4.4-snapshots: separate but related/affected issues: |
Beta Was this translation helpful? Give feedback.
-
I think it's important for everyone to voice their concerns but it's equally important to say that some of us think the current implementation is a clear improvement. uids are a pragmatic, relatively simple solution to a widespread problem with resources (they cannot be moved outside of the editor). It's already the case that users must move There is value in a simple solution in term of maintenance. As everybody knows, godot is maintained mainly by volunteers so any over-engineered solution should raise some eyebrows. Most people complain about the file system being cluttered but some users already have pointed out solutions to alleviate the problem in external editors:
|
Beta Was this translation helpful? Give feedback.
-
For newcomers: If you want to see the feature in action, it's present in Godot 4.4-dev5 and later dev snapshots. |
Beta Was this translation helpful? Give feedback.
-
The primary issue that I have with the current implementation and the other proposals is that it does not solve the fundamental issue, which is: external applications modifying the filesystem without updating a dependency graph, which ultimately Godot expects but is not well defined within Godot itself. see my comment here. What I have gathered is these five proposals have been examined and discussed. my view on each: The 1-to-1 .uid file
the service approach
the monolithic uid file
checksum tracking
uid as annotation
final thoughtsUltimately I think that each proposal is missing the 'well defined' protocol for updating the source dependency graph. I think defining a proto will not only benefit plugin developers for external editors looking to integrate their editors with the godot engine but also be a solid foundation for needs internal to the engine. A source dependency graph exists in Godot and is a requirement of the engine whether it is defined or not, so why not define it and design its surface? |
Beta Was this translation helpful? Give feedback.
-
Don't discard that right away! Will explain later.
Have to disagree with that. I prefer a way more a comment on my files with the "magic" number than thousands of uid files cluttering my repository. The only way to know what most people agree on would be some sort of poll.
This is an interesting idea, it could checksum files that are not already annotated an centralizad file (the monolitic approach) and check if it matches with missing files. It also would checksum files modified in the editor, and store on the centralized file. The only way it wouldn't work was if the file was externally moved and changed at the same time. Edit: Internally (in .godot folder) it could store the time each file was created, and when opening Godot only checksum the files with changed date, so it wouldn't checksum everything everytime. |
Beta Was this translation helpful? Give feedback.
-
Another alternative that i think would be much better than breathing hopium that Godot manages to track and update dependencies correctly would be to let the user fix the dependencies manually via a pop-up. This would give maximum control and transparency that the current and likely most other solution(s) lack. |
Beta Was this translation helpful? Give feedback.
-
Without trying to argue for one solution in particular, I just want to add this to put the downsides of the current solution in perspective: Millions of Unity users have been dealing with basically the same system (in the form of .meta files) for well over a decade and it's not been a big deal. Most game devs nowadays know how to handle metadata files, know to commit them, move them along the source file, etc. Lots of tooling has been made around them (like git pre-commit checks to ensure the user doesn't forget a meta file), which can be adapted to work for Godot. I have a feeling we're making a bit of a mountain over a molehill here.
|
Beta Was this translation helpful? Give feedback.
-
Firstly, I believe everyone agrees that UID is useful, and there is no need to discuss this further. Like UID fallback to path, I think we can use similar way to handle different types of UID. for example, GDScript, by handling All solutions are have cost, but we should try our best to avoid leaving burden on users. I wound prefer to add a simple comment to represent the UID of GDScript. By using comment style UID, just ignore an UID line in script, it not change anything (for users). By the way, like python, it usually have comments like |
Beta Was this translation helpful? Give feedback.
-
And add UID to all resources will bring a compatibility issue to plugins, please refer to this proposal. |
Beta Was this translation helpful? Give feedback.
-
As we announced in UID changes coming to Godot 4.4, to be able to better handle refactoring of files within projects, both in the editor and externally, we generalized the UID system to all resources, including scenes and scripts.
That has a number of implications which are naturally tradeoffs, and we are aware some of the decisions made are unpopular with some users, notably the addition of separate
.uid
files for.gd
,.gdshader
, and a few other file types (custom resources notably).We'd like to centralize user feedback in this discussion, which unlike PR or issue comments, has the advantage of supporting threaded replies. This makes it easier for users to make separate arguments and to discuss them in a focused manner.
Please read the blog post we published, notably the FAQ, which addresses a number of feedback points we already got before announcing this change. Of course you are welcome to bring up some of those FAQ items here too for further discussion.
We'll redirect discussions from other issues/PRs to this discussion, and evaluate that feedback while finalizing the 4.4 release.
Since this is a bit of a "hot" topic, I would like to remind everyone to be constructive and courteous, even if you disagree with points made by other users.
Beta Was this translation helpful? Give feedback.
All reactions