this section highlights the uproject file, it’s usage and issues that might arrise and compares to unitys mechanisms for the same purpose.
It is mostly targeted on Projects that use a CustomBuild of Unreal. Projects using the Launcher builds are mostly unaffected by everything in this document.
Unreal Engine
EngineAssociation
The Engine Association is an Identifier that tells unreal which engine is used for this project
Usually this value is something like “5.3”, but if you don’t install Unreal via the Launcher but have a custom build it contains a GUID.
Unity Engine
ProjectVersion.txt
Unity uses a ProjectVersion.txt file to specify the version of Unity used for the project. This file contains a single line of text that indicates the Unity version number.
For Unity there are no custom builds.
This GUID is generated, not when the engine is build or packaged, but when the engine is started for the first time and is stored in a Registry Key.
Working with multiple people using a Custom Build Engine means: all have different GUIDs, and all Engines wanna write their GUID into the uproject file.
✨ this could be improved if the GUID would be generated when building
✨ this could be improved if the EngineAssociation would be it’s own file that could be ignored by VCS.
🚧 The workaround is to adjust the GUIDs (e.g. via a batch file) so everyone has the same.
Unreal Engine
Plugins
Contains which of the Installed Engine or Project Plugins is Enabled.
Unity Engine
Unity uses a package management system called the Unity Package Manager (UPM). Packages in Unity are managed through the 'manifest.json' file in the 'Packages' folder of the project. This file lists all the packages used in the project, including both built-in Unity packages and external packages from the Unity Asset Store or custom sources.
A custom build Engine makes it hard to download things from the marketplace (as the engine is not recognized by the epic games launcher). So at least one has to have a Launcher Build of the Engine. Now this persons Launcher installed Engine would ignore the GUID again and would try to write “5.3” into the same field…
✨ this could be improved if you could just download a package for a certain EngineVersion right from the web.
✨ this could be improved by including the package downloader into the engine, instead of the launcher.