Download

Please improve asset sharing between UE4 projects!

Lately I’ve been trying to organize my generally useful utility assets into a simple library that I can share between my, and my friends’, projects. It seems that UE4’s best tool for doing so is the “migrate” feature within the asset browser, but I feel that tool is clumsy and the entire process could be made much faster and easier. The main issue that I have with the migration method of asset sharing is that it makes compiling many shared assets from a variety of projects a time consuming and tedious process. To me this seems like the artist’s equivalent of manually copy-pasting blocks of code from a bunch of different files into a new project - it works, but I think there’s a better way!

Since migration is basically ‘pushing’ assets from one project to another, I’d like to have the ability to ‘pull’ assets also. This might not seem like a significant difference at first, but I believe it would make it significantly faster to include assets from multiple projects (and libraries) into a single new project. This is much more along the lines of linking to and including a shared library in programming. For a great, working example of this look at how Blender handles 3D asset sharing.. I’ll more clearly illustrate the difference, assuming we have a new project, Project A, and three projects that we want to pull assets from, Projects X, Y, and Z:

Migration (Asset Pushing) Method:
---- 1.) Create new Project A in UE4 editor.
---- 2.) Open Project X in UE4 editor.
---- 3.) Select Project X assets and migrate (push) to Project A’s content folder.
---- 4.) Open Project Y in UE4 editor.
---- 5.) Select Project Y assets and migrate (push) to Project A’s content folder.
---- 6.) Open Project Z in UE4 editor.
---- 7.) Select Project Z assets and migrate (push) to Project A’s content folder.

Keep in mind that during this process we have to open each project in the UE4 editor at least once, and depending on your project/level/hardware the load times can be significant. I’ve found that trying to manually transfer and manage asset files in my OS’s file browser lends to problems where the editor can’t find the files or screws up asset dependencies.

Appending (Asset Pulling) Method:
---- 1.) Create new Project A in UE4 editor.
---- 2.) Append (pull) assets from Project X’s content folder/project file.
---- 3.) Append (pull) assets from Project Y’s content folder/project file.
---- 4.) Append (pull) assets from Project Z’s content folder/project file.

In this method you should only have to open your single, new project in the UE4 editor. Then you select ‘Append/Pull’ from the editor’s content browser (next to migrate), a dialog box prompts you to navigate to the project file or content folder/package of the project that you want to pull from, and then you’re presented with a content browser-style importer menu where you can select the assets that you want to pull. Because of this, not only can you quickly and easily pull files from many projects without the hassle of opening multiple editor instances, but the user can also create dedicated ‘library projects’ that hold their shared assets. Furthermore, it should also open the door to saving a cluster of assets into a local asset package that you can pull from, hopefully using the same method.

As I mentioned above, please consider how we share code modules in most modern programming languages, and also consider looking into Blender’s Link/Append asset pulling feature. I know that this is a pretty small, quality-of-life type of feature request, but I know it would be a workflow improvement for me, and I suspect it would help others too!

Exactly, the pull method would be superior. This is the most common method to build your scene.
I also would like to see a better way to view and edit the path of assets and their relationships.

I’d agree with this suggestion for sure, this has always bugged me.

Hey everyone, thanks for the ideas and suggestions about asset sharing! If there are any other specifics or feedback you’d like to bring up about this, please let us know :slight_smile:

I think it would be really useful if it automatically would pickup any new root folder and readdress the path instead of just copying the old Contentfolder path.

e.g.
ProjectA/Content/Assets/FilesA-K
migrates to
ProjectB/Sounds/FilesA-K without breaking any references within the exported Assets or the need of redirectors.

I would really like to see the custom locally created “Content Packs” become a reality, similar to the Starter Content or FP/TP Content that can be added through the Content Browser. There is a really hacky way to do this currently, but it’s tedious to say the least.

I have a base set of materials, mat functions, meshes, structs and blueprints that I use in most projects I work on, it would be awesome if I could just add them instead of migrating each time. :slight_smile:

It’s a workaround, but wouldn’t using a plugin achieve what you want? You can create a content-only plugin, add it to the Engine/Plugins directory, and enable ‘Show Plugin Content’ in the content browser.
That way you can truly share assets (so you can make changes to assets that will apply to all projects using the plugin), or if you want a copy, just drag it into your own project folder in the content browser.

To add a plugin, you just have to create a subdirectory in Engine/Plugins and create a file called PluginName.uplugin, something like this:



{
	"FileVersion" : 3,
	"Version" : 1,
	"VersionName" : "1.0",
	"FriendlyName" : "Test Content Plugin",
	"Description" : "Plugin for sharing content.",
	"Category" : "Test",
	"EnabledByDefault" : true,
	"CanContainContent" : true,
	"IsBetaVersion" : false,
	"Installed" : true,
	"RequiresBuildPlatform" : false
}


If you are referring to my post, then no not really. Not because it wouldn’t work, I have a lot of experience with content plugins, I’m just looking for a bit different functionality. I appreciate the suggestion though!

I’m intending to share extra content for a plugin as a separate optional download (to keep it’s size to a minimum) for those who want the extra content along with the base plugin, just like the Starter Content that can be added after the project is created.

I have been (and will be) using the suggestions Marc Audey posted for me back in the 4.7 Preview thread on how to create a custom content pack, which works well. I just think there should be a simpler process to export a group of assets from the Content Browser to a pak file that could then be imported, preserving folder structure and all. This would make it simple to share assets here on the forums, among other potential uses.

Marc did address this at the time:

It’s just been a while without any news so I thought it would be worth requesting it again. :slight_smile:

It was more in response to the original poster. While I know it’s not an ideal solution, it seems a lot better than constantly migrating the assets to every new project.

Interesting link though, so it is actually possible to create a custom content pack. Is there some specific functionality that tool is lacking that you want to see, or it’s mostly just integration into the editor that you’re hoping for?

I have made the experience that even out-migrated assets don’t work in the destination project, esp. material references are lost.
No idea why that is, might have to do with instanced materials details.

I want to know!!!:mad:

Oh yes, that would be amazing. What I am doing now is I have a project I call “Third Party Assets”, where I store everything that is useful - like my sound library, blueprint assets, textures, etc. Whenever I need something on a specific project, I open that and migrate it over.

It’s still an annoying hassle and the pull method would be far superior to it. Especially because if I just created some blueprints in project B, I still would have to first migrate it into my “Asset Project” to have it there.