Unreal Game Sync for 'foreign' project

Hello,

I’m trying to set up our environment as a ‘foreign’ project. At the root of the depot, I have the following folder structure:

  • UE: contains the vanilla latest Unreal Engine (only Setup.bat has been run)
  • Project: contains all project sources, assets, as well as our project generation and cleanup batch scripts
  • Tech: contains shared plugins
  • .p4ignore is also present at the root

Everything works fine regarding project generation and compilation.

However, I’m encountering issues with UnrealGameSync (UGS). After selecting our Project.uproject file, UGS doesn’t detect the Unreal Engine folder. I tried a few things, but none of them worked properly.

Do you know the proper setup to get UGS working with a ‘foreign’ project? Ideally, without modifying any files inside the Unreal Engine folder.

Thanks a lot for your help!

Have a great day :slightly_smiling_face:

Steps to Reproduce
Hello!

Steps are in the description.

UE’s source code must be in a folder called Engine/, exactly as it is when cloned from GitHub.

So, you would want a top-level folder/file structure like so:

Engine/
Project/
Tech/
Default.uproejctdirs
GenerateProjectFiles.bat
[etc...]

Note that having a shared plugins directory outside of Engine/ or your project’s folder tree requires the usage of AdditionalPluginDiretories, which is known to have issues:

  • [Content removed]

Hi!

Unfortunately, UnrealGameSync was created with support for Native project types only. We don’t use it at Epic Games for foreign projects, so we don’t support that workflow.

You can see more info on a Native project folder structure here in our documentation: https://dev.epicgames.com/documentation/en\-us/unreal\-engine/managing\-game\-code\-in\-unreal\-engine\#nativeprojects

and in this presentation: Setting up an Unreal Engine Studio the Epic Way | Tutorial

The Unreal Engine’s source code must be in a folder called “Engine” at the root of your Perforce stream, not “UE.”

Foreign projects should be primarily used with the Launcher binary version of Unreal Engine, which is usually done for smaller projects. For bigger projects, we recommend the “Epic Way” of using the Native folder structure so you can take advantage of our other tools like UGS and Horde, which depend on it.

Hello!

Thanks for your answers :slight_smile:

Is there a plane to support foreign projects with UGS in the future ?

I think foreign project is more modular to work with several productions.

Hello!

Thanks for your answer :slight_smile:

During the Setup.bat (after cloning the depot), there’s several folders created in the Workspace Root (like: FeaturePacks, Samples, Templates), these folders maybe project specific.

In addition to that, perforce need to have completely separated folders to be able to define different streams for different projects or engine versions (we can’t define a stream inside the folder structure of another stream).

I’m not aware of any immediate plans for that, no, unfortunately. Horde is also made for the native project folder structure.

For several productions, we recommend putting different projects in the same parent folder containing the /Engine folder in P4 (or subfolders, and list them in Default.uprojectdirs).

[Image Removed]

We keep all projects in a Main stream, but with a selective checkout of the project files per project handled by Unreal Game Sync. UGS will only pull in files from the selected project folder and the engine folder.