My company works with UE4 for engineering projects. We do have dozens of UE4 projects and so far, we only shared assets by copy/pasting subfolders in the Content folder of each projects. Our need for sharing assets and managing dependencies between those is getting too big though to really keep using this ad-hoc file copy.
Ideally we’d like to create a team that focuses specifically on updating “asset libraries”. Couple guys on the material libraries, couple others on mesh creation, etc. Those teams would then internally publish updates to their asset libs, that would then be leveraged by project-teams.
We are looking for a technical solution to support such workflow. The UE4 Editor, and namely the content browser would ideally understand that the current UE4 project depends on a set of content libraries. A library may even itself depend on another library. (This is similar to package management in linux ) We would then need granular control on which version of which library is selected for a given project, see if a project modified a library asset, be able to update libraries in a project (a library update means that assets are changed, moved, renamed or even deleted), etc.
We are willing to migrate to any version control system if that enables such workflow.
There you can configure specifically in the master project which version of which dependency (library, git submodule) that project wants. The master project’s submodule config can point to a git commit id or a branch.
The feasibility of git overall depends on other things, like the sizes of your assets although git LFS allows use of large files.
Warning: git submodules have had a bad reputation and require solid understanding of git. Some people have even developed alternatives (subtree or so) but seems that submodules continue to be the default solution, hopefully have improved. I have not used them personally recently but to some extent some years ago, worked ok. I don’t know how much the current git integrations for UE would do for you, but there is something, and for the basic versioning and dependency needs git is a solid backbone if you make the UI integration to UE asset management yourself or so.
One approach that fits an asset-library workflow is to package each library as a content-only plugin. The plugin folder holds its own Content directory and can be versioned on its own, and each project pulls in the version it needs, so the Content Browser treats the library as part of the project without copy-pasting folders.
For versioning, Perforce handles large binary assets well, and its stream setups can be arranged so a shared library is mapped into several projects. Git with LFS also works, with submodules as mentioned above, although submodules need discipline from the whole team.
A few habits help either way. Keep library assets under a clear folder prefix, fix up redirectors before publishing a new library version, and write short release notes so project teams know what changed before they update.