Using an Installed Build and Deploying to Team Members (UE 4.21)

I’m setting up a new project and trying to set up a workflow so that our programmers have the UE4 source to make changes if neccessary, while the rest of the team gets an “Installed Build” to use with the project to avoid having team members prompted with the “This module was build with a different engine version, would you like to rebuild?” popup.

I’ve managed to create an Installed Build using the included “InstalledEngineBuild.xml” BuildGraph script, and I’ve managed to associate my .uproject with that engine version, but my folder strucure is what I’m having trouble with.

Currently I have it setup in this manner:

GameRepo
    /Binaries
    /Content
    /Engine (this is the Installed Build)
        /Engine
            /Binaries
            /Build
            /...
        /FeaturePacks
        /...
    /...
    /*.uproject

And inside my *.uproject file the EngineAssociation is set to this:

"EngineAssociation": "./Engine"

Which works perfectly fine, with the only problem being that HotReload doesn’t function because it ends up looking one directory higher than necessary for the .uproject file.

For example: If my directory structure looks like this: C:/Projects/GameProject/Game.uproject

Hot reload fails with the error: “Could not find project file C:/Projects/Game.uproject”

It’s important to us that HotReload functions for the programmers, because very few will actually be modifying the engine source. So the others would be mostly using the Installed Build like the rest of the team.

The goal of having the Installed Engine inside the GameRepo was so that non-programmer team members only have to Checkout/Update one repo rather than two.

Any help would be appreciated as I can’t really find much documentation about how this should be setup. The end goal is simply to have an easy way to deploy new engine builds to our team members without complicating their update/sync workflow with too many extra steps and to conform to the setup UE4 expects as much as possible to avoid future issues.