This question is for Epic or anyone in the know In the roadmap at the moment, I see that Prefabs has been added as a feature, for around September. The card is here. Will this prefab functionality allow us to snap shot constructed instances within a map and create a prefab asset? I posted a question on AnswerHub for something like this when using Apply on a BP Instance(which only does properties of a BP).
Basically, the idea is that, if I create a set of objects and they have components, and those components have data(like say the SplineComponent), I want to be able to snapshot that instance and create a prefab of it. That way, I can then drag it out, at any point, and have it instance with that data in the map. But importantly, I want to be able to make a changes to a placed prefab in the scene and then click apply, then have that change applied back to the original prefab and reflected in other placed instances, even instances in other maps. Thanks! Hopefully somebody from Epic can answer!
You can already select actors in a level and create a BP with them if thats what you are asking. Select actors > Details Panel > Blueprint > Replace with Composite Blueprint.
Nope, this isn’t the solution. I know that functionality, and it only facilitates the first part of prefabing. It isn’t a logical grouping of actors and their components into a new type of asset, but rather the creation of a new BP asset, that contains a binary copy of all the selected actors and their components, which is then saved as a new BP asset.
If you then drag this new BP into the map, you have the original issue, where the BP, once it’s component data is changed(like for example spline data) in the map(in the instance), cannot be reapplied back to the originating asset, and mirrored in unmodified placed instances of that asset, which is what prefabs do. If the intention of the prefab functionality listed in the roadmap, is to address this, then my requirements are covered Just really want confirmation from Epic, or someone that requested the functionality
Just to clarify the workflow I’m expecting/hoping for. SecretDoor use case(not great but just an example):
Create a BP_Door, it uses the SplineComponent, spline is used to define path that characters take when opening a door etc
Create a BP_WallSection(with secret button)
Drag BP_WallSection into map
Drag BP_Door into map
Position BP_Door inside BP_WallSection, to make it look pretty
Do hookup and make these two interact via BP_WallSection->BP_Door logic hookup or whatever
Make BP_Door a child of BP_WallSection (because the two are always meant to be together)
I Decide that I like this setup and want to use it everywhere, including other maps
Make prefab asset by selecting the BP_WallSection parent and choosing “Make Prefab Asset” from somewhere
Save as PF_SecretDoor, appears as thumbnail just like BP or StaticMesh in asset browser
Now I drag the new PF_SecretDoor prefab out into every map that I need it in and position each prefab instance accordingly.
Later on, decide that spline setup, for BP_Door child, in my prefab, is not quite right
Jump into a map, containing a placed PF_SecretDoor prefab instance, and modify the spline path directly on the instance and test it… looks good
Click “Apply to Prefab”
Change is serialized back to PF_SecretDoor asset and reflected in ALL placed instances.
When I open map2, map3 etc, changes are reflected there also
Caveat 1: Position, Rotation(and perhaps scale) are not reflected and remain unchanged
Caveat 2: Modified properties of a PF_SecretDoor placed prefab instances, like instances with modified SplineComponent data are NOT changed by hitting “Apply to Prefab”, these properties must be reverted first
Needed buttons on details for a prefab are:
Apply to Prefab: Send changes in map back to asset
Break: Make the place prefab asset just BPs, basically delete the prefab and replace with the BP instances themselves
Revert to Prefab: Revert all properties back to the prefab data
(Of course having the ability to individually revert properties or component data back to prefab values)
Hope that clears up my understanding of something like this. Hope it’s like this(fingers crossed)
Also wondering about another thing. Would prefabs basically be “snapshots” of object data? There might be versioning issues with this kind of stuff. The reason that prefabs are so awesome, especially for something like MarketPlace, if that it allows the content maker to set up all the functional bits on actors and allows for multi-actor drop-in game functionality.