External Actors packaging support in CookedEditor target

Hi Epic,

I have seen a consistent behavior about cooked editor trying to look for packages in __ExternalActors__ / __ExternalObjects__

I have attached a small sample project but behavior is same even on LyraSample.

Am I missing any key step needed to perform to ensure World parition enabled levels work as expected in a cooked editor that has .paks mounted?

Errors I see : I created a blank open world level called L_WorldMap_WP. And loading it in cooked editor yields the following.

LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/0/L6/HDXPFQTEH0N0O4QADLYVTU which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/E/X9/OAPFQ2KXI2TWSWS4N5Z1VY which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/1/GA/6HR33KJW1ZA7UIMBRKKJ6L which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/3/B9/NNHZ3DYZU1S8PHFQY894K1 which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/6/0N/LR41HALB67YG6PJ4EZDEV2 which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/3/VH/HR472ULLO3J29WWLOUP0DW which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/7/9Q/UPH37J68A85XEZRCO41T8H which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/A/G5/DA7K852XM4VSVUMLFGL7EI which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/8/X1/QM7UGPOUSGCOV6LYNHS487 which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Engine/Plugins/FX/Niagara/Content/Functions/Localspace/ENiagaraCoordinateSpace which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath ../../../Engine/Plugins/FX/Niagara/Content/Functions/Localspace/ENiagaraOrientationAxis which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.
LogPackageName: Warning: GetLocalFullPath called on FPackagePath .. /.. /.. /Sandbox/Content/__ExternalActors__/Maps/L_WorldMap_WP/A/G5/DA7K852XM4VSVUMLFGL7EI which has an unspecified header extension, and the path does not exist on disk. Assuming EPackageExtension::Asset.

Any insights into this would be greatly appreciated. I am taking an educated guess in that editor code path is not accommodating logic to stream these from .pak and looking at __ExternalActors__ as I would have expected actors to be part of level package

Thank you.

Kind Regards,

Abhi

Steps to Reproduce

Context : Created project called : Sandbox using Unreal 5.5.4 ( compiled from source ). [ See attached project files ].

Sandbox:

* Configured to have CookedEditor target

Added following build graph : GenerateCookedEditor.xml [ See attached file ]

Generated cooked editor target using following :

.\RunUAT.bat BuildGraph -script=“.. \.. \Engine\Build\Graph\Tasks\GenerateCookedUnrealEditor.xml” -target=“BuildAndTest Sandbox” -set:EditorBootTest=false -set:TargetBootTest=false -set:FillEditorDDC=false -set:TargetPlatforms=None -set:EditorPlatforms=None -set:ExtraEditorCompileArguments=“-Project=\”.. \.. \.. \Sandbox\Sandbox.uproject""

Note : You have to fix up script and project paths depending on where you are running this from.

Let me know if you need anything else.

Hey Abishek,

we’re currently looking into this, but there’s a chance this is just not a supported path right now.

Since we don’t support cooked editor as an official feature it might take a few days before I have something for you.

Just to clarify, are are you creating the map before or after cooking, i.e. are you trying to load an uncooked WP world that you created in the cooked editor, or are you trying to open a WP world that should have been cooked and is part of the cooked editor cook already?

Thanks,

Sebastian

Hi,

I’ve talked to the team and they confirmed that cooked WP maps are not something we support in Cooked Editor builds.

It’s still considered an internal feature so it’s quite possible this won’t change unless our use of it requires it.

If wanna try implementing it yourself and have more specific questions around WP runtime loading feel free to create a question for it, but be aware that there’s only a limited amount of support we can give for such modifications.

Best,

Sebastian

I’m afraid my previous post might have been a bit vague. Modifying unsupported features is outside the scope of what we can support on EPS. If you want to go down this route, we cannot provide you with guidance on it. If you face very specific problems with the WP code that you consider a bug or issues that would also affect other users without the modifications, we can certainly discuss these in separate tickets, but for most of it, I’m afraid you’ll have to do your own research.

Apologies for the somewhat unhelpful answer, but we’re unfortunately limited in our options with this.

Alternatively I can give you a build graph for just running this on LyraSample, may be easier so lmk.

.\RunUAT.bat BuildGraph -script="D:\p4\ue_sourceroot\Engine\Build\Graph\Tasks\GenerateCookedUnrealEditorLyra.xml" -target="BuildAndTest Lyra" -set:EditorBootTest=false -set:TargetBootTest=false -set:FillEditorDDC=false -set:TargetPlatforms=None -set:EditorPlatforms=None -set:ExtraEditorCompileArguments="-Project=\"..\ue_sourceroot\Samples\Games\Lyra\Lyra.uproject""

Hi Sebastian,

Thank you for getting back.

So, I am creating the map before cooking. Since cooked editor supports uncooked content if I just drop __ExternalActors__ folder after cooked editor is generated it does work.

So TLDR I am trying to open a WP world that is cooked. I am currently also trying to investigate this myself and am drawing similar conclusions that its just an unsupported code path.

I am focusing on understanding how a cooked WP world is loaded on a packaged non editor game target. As I may have to just accommodate this edge case to ensure cooked editor also does something similar.

Kind Regards,

Abhi

Hi Sebastian,

I want to implement this myself. Can you help with some pointers as to where the WP runtime loading determines editor vs cooked game code path to decide where to stream world actors packages from within a given cell?

From what I was able to deduce so far, external actors and external objects are editor only and during cooking it gathers all external packages and the cells they belong to and generate runtime optimised cell streaming packages.

I was wondering if I can have a quick win by making the PIE code path behave exactly like cooked non editor game.

Given this is internal feature and clearly works with UEFN I’d greatly appreciate any potential edge cases to keep in mind.

Kind Regards,

Abhi

I wasn’t asking for support / modification of unsupported features. I was merely following up on your previous response which said : “If wanna try implementing it yourself and have more specific questions around WP runtime loading feel free to create a question for it”

So all I was asking is some insights into how WP runtime loading varies between cooked game vs editor. As it would save me time navigating and finding the right area to dig deeper. As I assume WP is officially supported feature?, if I can’t get support that is fine feel free to close the ticket :), I’ll figure it out and respond back with an answer so other licensees can find it useful if they hit similar requirements.