We are 3 guys who have made a decent progress with our game, made in BP only
However, structuring the collaboration continues to be a massive headache. We use Git outside of the editor (It randomly causes unfixable errors when diff’ing inside the engine). The problem with this, is that when a person works on a part, he “locks” the BP’s he is working on, since if two people make a simple change to a blueprint, it causes merge conflicts, and we are forced to select only one of them.
This then cause further errors, since the change in one BP, can cause changes in another, and a change also impact all child BP’s.
All in all, this makes it extremely hard to keep track on who is working on what, and what does it impact.
We wanted to switch to C++ instead, but we are so far into the project, that this switch would take a lot of time.
So how do you deal with this issue in your productions? Any programs that does the task better than git. Any setups that works better than others. Basically any tips or tricks to help this massive problem, as it has han extreme impact on the project.
Is it even possible to code in BP in larger groups, or should we just go C++ at once?
Perforce works pretty good with Unreal. Git works pretty bad with uassets and should only be used for the source code although Perforce can also handle that.
The integration in the editor is better and will detect if it has to update other linked files when saving.
Merging Blueprints should be avoided by only allowing one person to check out a uassets at a time. I have never bothered with merging a Blueprint as it is much easier to coordinate the effort of the team than it is to try to merge them together. When you start working on a Blueprint you start by checking it out and if you can’t you should ask the person that has the Blueprint checked out to check it in instead of ignoring the warnings.
If more people has to work on the same level it should be split into sub-levels and each person can check out and work on their own sub-level.
The main difference between Perforce and Git is that Perforce needs a central server to be setup.
When reverting a change in Git you revert all the files related to the commit while in Perforce you can easily roll-back just one file or folder or the entire submission. It might sound like a scary thing that you can revert single files but in my experience it rarely corrupts anything if you understand the file structure of Unreal Engine. The only thing I have corrupted was levels by reverting a level and not reverting its related builddata file. When reverting source code you should of-course never revert just a single file.