Breaking blueprints down to sub-blueprints?

We have a small team of people working together and it’s become clear pretty quickly that sharing access to blueprints that different team members might need to change independently of each other is difficult. Because uasset is a binary format we can’t merge each others changes in, so in Perforce we have the file type as an exclusive check out to prevent us from stomping. But all this does hide the problem which then shows up as people having to wait for each other.

Is there a way to break down larger blueprints (like a main character blueprint) into smaller chunks that different team members can edit independently? I’ve tried creating other event graphs within in a blueprint, but that doesn’t add a new file. What approaches have other people taken when dealing with shared assets?

I think there a number of ways, one is you could use the construction script on the main blueprint (or the level blueprint) to spawn all the sub blueprints, cast to them and store them as variables, then you could call events on the other blueprints (using blueprint communications). This is not idea I don’t think but it could work in a a Manager/Controller controls other object kind of way.

https://docs.unrealengine.com/latest/INT/Engine/Blueprints/UserGuide/BlueprintComms/index.html

You could also use the Child Actor functionality - in the components tab link up the ‘child’ blueprints.

Or there is a Blueprint diffing tool in there somewhere - I have not used it though.

You could use Blueprint Function/Macro Libraries to separate out functionality so that one person can update functions without having to go into the Blueprints themselves, the issue with this type of abstraction is you do lose some of the structure and being able to have that overview which can help find bugs.

You can also make Blueprints of Blueprints, Im not sure on the depth it allows I think its only one deep so you cant have a Blueprint of a Blueprint of a Blueprint but at that stage you should consider putting core functionality into C++. This will allow one person to work on the more core Blueprint and another to experiment with new functionality in the child Blueprint :cool:

Thanks for the ideas, I’m gonna try these out.