Merging Branches in Source Control

I have been searching for what feels like hours now trying to get a clear answer to this question, but i keep finding contradictory informarion, so i am now resorting to simply asking directly.

I have a group project whic indoues up to 8-9 people all working on the same project. This includes programmers and artists however currently we have started with a Blueprint only project.

I have setup source control properly to handle the collaboration and version control - each member has a forked repository on git and a copy of our initial prototype.

What i need to know is whether merging the branches from multiple sources is going to cause issues, specifically, if we have 8 people adding to the project and i attempt to merge all their pull requests, is there going to be issues or specific problems i need to be aware of that will cause problems with syncing? I am new to Unreal, the decision to use Unreal was made as a group, so before 2 days ago i had not evern installed the app, but as i am setting up the source control for the whole group, i need to head off issues before i begin.

I’m not an expert in source control, but from my experience here are some things to keep in mind:

  • Make sure you avoid having more then one person working on the same file
  • Exception to that rule is a text based file (like a code), since git can compare those and usually merge changes (unless different people changed the same file in the same place, then you need to manually solve the conflict)
  • Be careful with big binary files, as even small change may force people to re-download massive amounts of data (read about git lfs)
  • IIRC Epic introduced Blueprint merge tool (I haven’t used it, but sounds good) to work in a similar way as merging code and even Level diff tool (also haven’t used myself)
  • If you end up with C++ based project, you might want your artists to pull only compiled binaries rather than full source
  • Exclude folders Intermediate (grows big and will be re-created with every compile) and Saved (grows big and stores per-developer settings, backups, logs, etc.)

UE creates an .uasset file for every asset you import and use those to store it’s content, metadata and settings (so you don’t really need to have the source assets in the Content directory). The exception, IIRC, are movie files, which are not embedded into .uasset

You should be able to merge Code, Blueprints and Levels, rest is binary, tho it would be great if someone from Epic could confirm.

Thank you for the responses, some of this I was aware of, some clarified, however there is one aspect which is the the most problematic and the one I seem to have trouble finding an answer for.

With the Binary files, as someone who has only just created a template project like yesterday, I do not know which files Unreal generates as Binary in a blueprints project as it relates to the cross collaboration.

IE, You said make sure you avoid having more than one person work on the same file - we are doing project management via forking, which means each person has an entirely separate copy of the same master project and are working on their own sections. This by default means that all the people on the project will not have check in and checkout issues and can work separately.

The idea using this method is that everyone then submits their changes, I pull them all together in a merge. But this means I need to know exactly what won’t merge, so I know what parts of the Unreal Template cannot be done this way. I have having difficulty working this out from Unreal’s side, not the source control side.

So basically, between your first and second paragraph - no person working on same file, and exception for code files - in a blueprints only project, WHAT exactly do I need to tell the designers they cannot touch.

As an example possible solution(?) can I tell the artists that each one is responsible for their own created assets, ie images, textures or the like and cannot edit someone else’s asset and this will stop any issues from Binary merging? Or does Unreal generate other binary files in the course of editing that will lock down more than I realize?

Apologies for the length of the query.

Hey, I am just wondering about same thing and it looks like, that almost everything is actually binary. Even blueprints folder has only .uasset files.

When someone is working on seemingly separate part of the game and does tweaks something else that will be in collision with other team member. Suddenly one of them has to throw away their work. Sounds kinda bad.

I am really wondering how big teams are actually managing this. Are they not using source control at all? Is there single copy of a whole project and everyone is working against that?

Exclusive locking in Perforce ensures only one person can edit and submit the file. This avoids merge conflicts with binary files.

This is a huge problem for large teams. We need to be able to merge asset and map files. An ascii representation would help. I guess we traded ascii for PIE moving from UDK to EU4, but realistically, games are often so big that it is faster to cook and run external to the Editor, than to use PIE with actual game data.