Manage, sync and share assets between projects.

Hello,

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.

Git submodules could work for that.

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.

And if you modify the library in the project where it is included, git notices the change normally, as described and discussed in How do I "commit" changes in a git submodule? - Stack Overflow

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.

This seems like a helpful doc on git submodules and trees with nice warnings of traps as well: Mastering Git submodules. Hair-pulling. Helpless rage… | by Christophe Porteneuve | Medium