A complete recreation of the prefab entity is not possible

Summary

If we want to have new versions of complex prefabs, we can’t do that because the old prefab is included in the new prefab. And when the old prefab is deleted, all its entities are also deleted from the new one.

Case:
At the moment Scene Graph is not interchangeable with actors, so we build most of the locations with actors. Let’s take for example a small abstract location where we combine actors and Scene Graph: Scene Graph acts as a search for interactive objects (notes, npcs, etc.). We compose the first version of the prefab of this location and then place it in the simulation. Next, we want to add or change the location of entities in the current prefab and save this new prefab. This is where the problem arises that we have a scene graph that includes a completely old prefab and we have to store it in the project all the time: if the versioning will be 20-30 versions (and it will be in gameplay), then we have to store 20-30 old versions for each such location.

This creates several problems:

  1. Iteration inconvenience: you have to constantly search among the files for the latest version.
  2. You need to constantly change references in the code to the current versions of the prefabs
  3. Currently, all entities in the project affect the speed of Verse Build and Full Push, which slows down the project by times. I was getting up to 240 seconds of verse push.

Please select what you are reporting on:

Unreal Editor for Fortnite

What Type of Bug are you experiencing?

World Building

Steps to Reproduce

Shown in the video.

  1. Create a prefab and a pair of entities.
  2. Position the prefab in the simulation and add an entity
  3. Create a new prefab from the prefab in the simulation, which should include the new entity
  4. Remove the old prefab from the project

Expected Result

Ability to completely recreate prefabs without including old prefabs. To avoid creating hell in the project.

Observed Result

The first prefab is removed completely from the new prefab and removes all entities of the first prefab.

Platform(s)

windows

Video

@ArcaneStudio I think this is a problem of UX clarity that needs to be improved with the “save as prefab” flow. What’s happening in the video is that when you select an existing instance of a prefab, then choose “save as prefab” on it, you end up creating a derived version of the first prefab.

Code wise this is the equivalent of:

base_prefab := class(entity):
     Cone1
     Cone2

derived_prefab := class(base_prefab):
     Box

When you then remove the base prefab, your derived prefab no longer contains the values either, as they were always coming from the base.

Without some better UX around that this is definitely going to be a gotcha. We’ll keep improving this over time to add both clarity to what’s happening right now and alternative flows that would allow you to create entirely separate “deep clones” of the prefab instead, which appears to be what you were looking for.

2 Likes