Different builds for coders and content creators?

There is no good information about this and it feels like I’m banging my head against a brick wall here. :slight_smile:

We have an automated build system that builds the game at midnight every day and commits the UE4Editor-ProjectName.dll back into Perforce. This makes the content creators happy because they don’t have to use Visual Studio, they can just double-click on the uproject file and have it load in the editor.

This causes problems for the coders however - because we all use UE4 built from code (though it would still be an issue even if we used the binary version of UE4!). If we have the latest code and have built it locally and then go home at the end of the day, when getting latest the next day then our UE4Editor-ProjectName.dll file gets replaced by the DLL that was built by the build machine. Since the code hasn’t changed on disk, UnrealBuildTool doesn’t recreate the DLL - but we do get the following message:

The following modules are missing or built with a different engine version:

UE4Editor-ProjectName.dll

Would you like to rebuild them now?

The obvious answer, of course, is “Yes” - so that’s what we select. But what happens is that it runs UnrealBuildTool like this:

E:/ProjectName/UE4/Engine/Binaries/DotNET/UnrealBuildTool.exe ProjectName Development Win64 -project="E:/ProjectName/Game/ProjectName.uproject" -editorrecompile -progress -noubtmakefiles

But then, after a short wait, we get the following message:

ProjectName could not be compiled. Try rebuilding from source manually.

Well, that’s unhelpful because we’re already building the project! I tried running the same command the editor performed at the command line - giving me the following output:

@progress 'Generating code...' 0%
@progress 'Generating code...' 67%
@progress 'Generating code...' 100%
Target is up to date.

…so it doesn’t rebuild the project and we’re launching with the wrong DLL.

It makes sense - kind of! The source on disk hasn’t changed and so it thinks that the target is up to date. But the target changed - it was replaced by the version in Perforce.

The only solution I currently have is to delete the DLL - but it’s a terrible solution. The problem is that I’m not sure what other alternatives we have?

There must be other people - especially at Epic - who have developers working with UE4 built from source and have content creators working with binary versions. How can you resolve this?

I’d ultimately like to get the build system building binaries for every change - but I can’t do that right now without severely impacting the coders… because they’d have to remember to delete the DLL every time they get anything from Perforce!

Bump. This surely can’t be just affecting us…?

I’m interested in Epic’s handle with perforce as well.
I’m in the process today of setting up a similar setup. For now I think I might exclude the binaries folders from the coder’s workspace so they don’t pull it.

Yeah, that’s exactly what I’ve ended up doing - but it feels like a huge workaround (even if that ends up being Epic’s actual answer!).

Hopefully Epic will get around to answering this issue at some point!

This is also the soultion that we ended up with. Coders exclude the binaries folder while artists get the editor dll.