Download

Blueprints and Source Control in team. How you do it?

We use perforce as source control and its working flawlesly.
Though we have a bit of trouble working with Blueprints and source control in the team. The issue here is that if a parent asset is edited, Unreal needs to also edit the Inheriting classes (at least in some circumstances).
As example, we have a BASE Widget Blueprint for our widgets. That BASE is inherited by about 20 SUBWIDGETs. Adding a variable to the BASE widget, Unreal also needs to edit all 20 SUBWIDGETs.
If USER1 edits SUBWIDGET3 and it is the last in the inheritance tree, its fine, no source control collision here.
Now USER2 starts editing BASE. After some changes USER2 makes a SaveAll and unreal now wants to also save the SUBWIDGETs, which is the moment USER2 does notice that he can’t save as SUBWIDGET3 is checked out by USER1.
Still executing the save, will likely cause errors with SUBWIDGET3 later as it is missing data. The only solution would be to not save, revert BASE and quit the editor to get rid of the pending edits/save unreal wants to do the SUBWIDGETs.

This for sure wastes a lot of time. So am I missing something or how do you handle Blueprint and SourceControl?

I don’t know any good way around this. My team typically posts what the goals are for the day and we try to not step on eachother. It’s a bit messy when you make updates to a blueprint that is constructing large pieces of geometry in the level…

Thanks for you answer. We are only a small team, but for big teams this must be a total mess.

Its not just source control, BP code-review / auditing is a nightmare as well. I think that’s why Epic realized they can’t put off avoiding a scripting language in UE4 forever. There’s just too much of a divide between C++ / BP over core pros / cons.

Now that Epic have bought out SkookumScript, and made the strongest hints ever that a scripting language is coming, it might mean Blueprints will get a text converter in time. If so, that’d solve a lot of problems for source control and code-review / auditing too.

However for now, I’ve noticed that its possible to change the root class and not always save the children, and things still stay in sync (once the next change to the parent / root class is propagated through). I don’t advise it, as it might lead to BP corruption or a disconnect between the two… But I’ve noticed its possible (mostly because I get endless crashes from an overheating Asus where the parent is saved but not the children etc)…