Sharing a Plugin Across Projects with UnrealGameSync
Host your shared assets in a standalone plugin project, then attach it to any number of Unreal projects via two config changes — one in UnrealGameSync.ini to sync the content, one in the .uproject to expose it.
When the same assets (nDisplay configs, MediaProfiles, stage presets) need to live in multiple projects, duplicating them is a maintenance nightmare. The solution is to host the plugin in its own lightweight Unreal project (not in the engine, not inside each consuming project) and wire every project to it with two config changes.
Why a Project-Level Plugin, Not an Engine Plugin
Engine plugins require touching the engine directory. Every content update can trigger a full engine recompilation and risks introducing instability unrelated to your assets. Keeping the plugin in its own project lets you version and sync it independently, with faster iteration and no unwanted engine rebuilds.
Step 1 — Tell UGS to Sync the Plugin Project
Add an AdditionalPathsToSync entry in the consuming project's UnrealGameSync.ini. UGS will then pull the plugin project from Perforce alongside your project whenever anyone syncs.
; {YourProject}/Build/UnrealGameSync.ini
[Perforce]
+AdditionalPathsToSync=/Sandbox/VirtualProduction/StageEssentials/...Step 2 — Point the .uproject at the Plugin Directory
Add an AdditionalPluginDirectories entry to the consuming project's .uproject. Unreal will discover and load all plugins found under that path, making their content available in the Content Browser.
// {YourProject}/{YourProject}.uproject
{
"AdditionalPluginDirectories": [
"../StageEssentials"
]
}Accessing the Shared Content
- Open your project and enable Show Plugin Content in the Content Browser settings
- Navigate to Plugins > [YourPlugin] Content
- Any plugin added to the shared project is automatically available to all consumers
Key Rules for Assets in the Shared Plugin
- Assets must be self-contained — no references to assets in the consuming project
- Assets cannot be migrated from newer engine branches (version is baked in at creation time)
- Mark new assets for Add in source control from within the plugin project, not the consumer