Summary
UEFN’s editor-side GroupActor container becomes a silent data destroyer under World Partition + OFPA. Two independent failure modes have been observed, both reproducible across sessions:
-
Ghost-reference GroupActor — a
GroupActorretains serialized references to__ExternalActors__/…/*.uassetfiles that were deleted from the level. On Check In / Submit,AssetValidator_AssetReferenceRestrictionsfires once per dead reference, producing hundreds of errors per submit attempt. In our project a single ghostGroupActorblocked submission with 694 errors, all pointing at long-deleted mesh actor files. The group’slabelwas empty, itslocationloaded as(0, 0, 0)viaunreal.load_object, and it held zero live children — a fully corrupted container. -
Silent child eviction on parent-move — When a user moves a
GroupActor’s parent-like anchor actor (a companionActorthe user considers the “root” of the group), the group’sDevice_CharacterSpawner_Cchildren are silently removed from the level between sessions. Placement → move parent → Save All → reopen → children gone. No warning, no error, no entry in the editor log. The corresponding__ExternalActors__files are also removed. This has now happened twice on the same set of 4 NPC spawners inside the sameFortUndergroundVolume, always following a move of the parent anchor.
Please select what you are reporting on:
Unreal Editor for Fortnite
What Type of Bug are you experiencing?
Unreal Revision Control
Steps to Reproduce
Failure Mode 1 (ghost references / 694 errors)
- World Partition island, OFPA enabled.
- Group several
Device_CharacterSpawner_Cand mesh actors via Ctrl+G into aGroupActor. - Delete some of the individual grouped meshes over multiple sessions (typical cleanup).
- Attempt Revision Control → Check In Changes → Submit to main.
- Expected: Submit succeeds; the
GroupActorupdates its member list to drop deleted children. - Actual:
File(s) validation failed!withAssetValidator_AssetReferenceRestrictionserrors, one per deleted child. Every error points at a__ExternalActors__/MyProject/<hash>/<hash>/<hash>.uassetpath that no longer exists on disk. No option to auto-add / ignore / clean these references from the Submit UI.
Workaround (destructive): identify the corrupt GroupActor by iterating the level via Python (get_all_level_actors(), filter class_name == "GroupActor", look for label == "" and location == (0,0,0)), select it, delete it. Submit then succeeds.
Failure Mode 2 (silent child eviction on move)
- Same setup: World Partition + OFPA.
- Place 4
Device_CharacterSpawner_Cinside aFortUndergroundVolume. - Group each spawner with a nearby “parent”
Actorvia Ctrl+G. - Move the parent
Actorin the viewport by any distance. - Save All → Submit → reopen the project.
- Expected: All 4 spawners follow the parent (or at least remain in the level).
- Actual: All 4
Device_CharacterSpawner_Care gone from the level. Their__ExternalActors__files are gone from disk. TheGroupActorcontainer still exists but is empty. Re-placement succeeds, but the same eviction reoccurs on the next parent-move cycle.
Expected Result
Basic functions to ever work correctly even after years of reports, or the UI to ever be designed with the slightest semblance of common sense. My stuff to not be deleted without instruction or permission either by the clown car being reported here or the clown car that is your completely and insanely broken sync system. 3-digit IQ priorities by management, putting enough people on these issues and giving them enough time, a 3-digit IQ priority set which would not fail to include any of these, would include a lot more than these (if only you had 20% more staff): weapons&damage/jetpacks/ziplines(in uefn)/water/physics/ground collision/snapping/navmesh’s on SW prefabs/sync working correctly, ALSO tooltips/documentation/editor self-flagging/the UI/X done correctly/at all. Hard to take this question seriously with how funny it is to imagine myself ever being able to say, “I expect Unreal, more than 50% of even it’s literal most basic features, to work correctly/smartly like they were designed by somebody who’s ever used them/at all” LOL, and with how much work I have to do because of others absolute garbage work or work just completely not done due to abject clown car priorities (that’s a note for management about management’s priorities, which are the real bug, unless none of y’all can do those literal-most-basics right even given enough time and devs). I expect your “remember device” login function to work but that never does either (unironically).
Observed Result
(Copied from summary:) 1. Ghost-reference GroupActor — a GroupActor retains serialized references to __ExternalActors__/…/*.uasset files that were deleted from the level. On Check In / Submit, AssetValidator_AssetReferenceRestrictions fires once per dead reference, producing hundreds of errors per submit attempt. In our project a single ghost GroupActor blocked submission with 694 errors, all pointing at long-deleted mesh actor files. The group’s label was empty, its location loaded as (0, 0, 0) via unreal.load_object, and it held zero live children — a fully corrupted container.
- Silent child eviction on parent-move — When a user moves a
GroupActor’s parent-like anchor actor (a companionActorthe user considers the “root” of the group), the group’sDevice_CharacterSpawner_Cchildren are silently removed from the level between sessions. Placement → move parent → Save All → reopen → children gone. No warning, no error, no entry in the editor log. The corresponding__ExternalActors__files are also removed. This has now happened twice on the same set of 4 NPC spawners inside the sameFortUndergroundVolume, always following a move of the parent anchor.
Platform(s)
Platform: PC
OS: Windows 11 Pro
UEFN version: 41.10 (per .uefnproject CompatibilityVersion)
Lore rev at time of report: 4158
Project scale: ~22,000 placed actors, ~500 Device_CharacterSpawner_C, ~200+ GroupActor instances, ~50 .verse scripts, World Partition + One File Per Actor (OFPA) enabled
Severity: High — recurring data loss on production maps; requires manual re-placement each occurrence; leaves persistent validation failures that block Check In / Submit
Additional Notes
Project scale: ~22,000 placed actors, ~500 Device_CharacterSpawner_C, ~200+ GroupActor instances, ~50 .verse scripts, World Partition + One File Per Actor (OFPA) enabled
Severity: High — recurring data loss on production maps; requires manual re-placement each occurrence; leaves persistent validation failures that block Check In / Submit
Contributing evidence collected from the repro project
lore statusreports the tree as clean at latest revision immediately before the Submit dialog throws 694 reference errors. Lore CLI and UEFN’s editor-side submit tool disagree about pending state.lore stage .reportsNo changes stagedwhen disk is truly clean — cannot force-add referenced-but-unmodified files to the current changelist.lore lock acquire <path>succeeds but does not cause the file to be included in the pending Submit changelist. Lock ≠ check-out.- The Content Browser in UEFN does not expose a “Not in Depot” / “Untracked” source-control filter (as standard UE does), so there is no discoverable UI to add missing
__ExternalActors__references to the Submit. - The Submit dialog has no “Add referenced files” / “Include dependencies” / “Reconcile” action.
- The only UI-visible fix is to delete the corrupted GroupActor. Users lose whatever grouping they were relying on for organization.
Impact
- Data loss. Users lose placed actors that they consider grouped for organization. In our case, 4 NPC spawners tied to a story set piece have been silently deleted twice in a row on the same map.
- Submit blockage. Any project that has ever used
GroupActoron World Partition levels eventually accumulates ghost references. Once accumulated, no in-editor UI path exists to clear them without deleting the group entirely. Users burn hours diagnosing “694 missing external actor” errors that have no discoverable fix. - Silent failure. Neither the editor log, the compile output, nor Lore status flags the eviction or the ghost references before Submit-time. The user only discovers the loss after (a) reopening the project and finding actors gone, or (b) attempting to submit and being blocked by validator errors.
- Compounding trust erosion. Users learn to distrust Ctrl+G and stop using organizational grouping entirely, which is a regression on a fundamental editor feature.
- No self-repair. UEFN does not offer a “GroupActor → cleanup dead references” or “GroupActor → repair” action. The Details panel exposes no serialized member list for inspection or manual pruning.
Suggested root cause (informed guess, using “informed” VERY loosely given the barely-started state of your documentation)
GroupActor was originally designed for pre-OFPA levels where every actor lived inside the .umap file and could be safely referenced by name. Under OFPA, each child actor lives in its own .uasset under __ExternalActors__/<hash>/…. When a child is deleted, the child’s file is removed from disk, but the parent GroupActor’s serialized member array is not synchronously updated in the same commit — leaving the group holding a dead pointer.
Move-based eviction (Failure Mode 2) appears to be a save-serialization bug: when the parent anchor actor’s transform delta triggers re-serialization of the group, the OFPA writeback for children fails silently (possibly because their external .uasset paths are hashed from actor state that changed during the move). No fallback re-hash occurs; the children are simply written out of existence.
Requested fixes (ordered by impact-to-effort)
- Emit a warning at group-modification time if any grouped child’s
__ExternalActors__file is missing or fails to serialize. Do not silently succeed. - Add a “Reconcile references” / “Clean dead members” action to
GroupActorin the right-click context menu. One click drops dead pointers without dissolving the group. - Auto-heal ghost references in the Submit validator. If
AssetValidator_AssetReferenceRestrictionsfinds a group member whose.uassetdoesn’t exist, auto-remove the reference and offer a one-click “Repair and submit” button. - Fix OFPA writeback for grouped children on parent-transform changes. Ensure children always persist across parent moves.
- Expose an “Untracked / Not in Depot” filter in the Content Browser so users can see external actors that aren’t in Lore’s index. This is the standard UE workflow that UEFN silently removes.
Reproducibility
Both failure modes reproduce reliably in the reporter’s project. Willing to share the affected .umap + __ExternalActors__/ snapshot at any Lore revision on request.
References
-
Similar or adjacent/related issue threads (unresolved): forums.unrealengine.com [community-tracked, various entries, usually no Epic response]
-
Related:
AssetValidator_AssetReferenceRestrictionsvalidator was extended to catch OFPA reference gaps but was not paired with a repair UI. -
AssetValidator_AssetReferenceRestrictionsvalidator surfaces the ghost-reference symptoms but is not paired with a repair UI, leaving users with detected-but-unfixable dead references.
Epic official docs on the affected area (not a comprehensive list):
- Validation and Fix-Up Tool in UEFN — the tool that should be able to auto-repair this class of error but doesn’t cover the GroupActor case