Pak File Loader Plugin

@BlueMountainsIO
@sivan

Thanks for the tips! I made previously mistake on my side. It works fine!. However, I have question regarding classes and blueprints. I made a blueprint from an actor which contains static mesh component with model and material. Everything is included in my mounted .pak file which I’m loading. When I want to spawn the blueprint to world, it does not have the static mesh in static mesh component. The .pak file is successfully loaded. [UE4.24]

Do I have to do something extra or the BP should spawn as usual with everything inside without touching it?

It works well when I want to spawn StaticMeshActors but I would like to spawn my actors (inherited from actor class) which can contain various components inside.

Thank you for any answer!



@Dash-POWER the only thing that does not work for me is GetPakFileClass… try a workaround to get its class…

Hi! Do you plan mobile support?

@sivan @BlueMountainsIO Well, I can confirm that the GetPakFileClass works for me. It spawning the actor to the world and ticking. If I will put there other components like post process, point light, it’s completely fine. It somehow works with static mesh components but only it seems with Engine Content meshes like box, cone etc… (So referencing meshes somehow works only with specific meshes?) but material doesn’t.

My hypothesis are that when mounting .pak and using GetPakFileClass to spawn class, the Asset Registry or don’t know what exactly what is not able to link all references to that spawned blueprint. (static mesh > material > textures…) (Point light works, Post process works - because there are part of the bluperint and they are not referencing anything outside). Yes. You can spawn an actor blueprint, but all references will be broken it seems.

I’m using UE4.24 and don’t know if it’s bug or normal behavior.

I am trying to exctract the .pak file from the steam game project remedium. I follwoed all the instructions The NanoPlusContent folder is created for me, and then the folders aren’t populated with the .uassets the folder is blank. I thought this tool was supposed to work?

This is in the unreal engine editor. Can someone please help me out?

Hi, bought the plugin and tried the demo in 4.22 and it worked fine (good work btw!). However, I couldn’t make it work in 4.24. While checking the questions I found another user who experienced similar problems and your answer was:
“You would need to recreate your pak file with the same engine version again”.

Does this mean that if I had 100 pak files, I would have to recreate all of them if I happen to switch ue4 versions?

I want to use this system to build a catalogue of sorts, where players can buy something in-game which triggers a download of the asset (pak) and mounts it at runtime. As I understand it, each individual asset would have to be a pak file, so eventually the catalogue could end up with hundreds of these. You can see why recreating all of them wouldn’t be feasible.

What are your thoughts on this? Any alternatives or workarounds you may know about to handle this limitation?

Thanks

Hi !

I bought your plugin today, and it look promising !

However, I am unable to make it work (neither in 4.24, nor in 4.25). I have tried to follow as carefuly as possible the intruction from your documentation.

So far, I only tried making your sample project work.

In 4.24, I got 2 error messages when I launch the .exe : “Serialization Error: Action Needed - Corrupt data found, please verify your installation.”, followed by a “Fatal error” when pressed “OK”.

In 4.25, I got an “Assertion failed” (Cf Screenshot) instead of a fatal error (even though the end is the same, as the program crash)

I have maybe done something bad. Could you help me please ?

Hello @BlueMountainsIO, I just purchased this product and it looks like it’s not working at all for UE4 4.24 or 4.25?

I am getting a serialization corruption error when running the packaged sample project. Is this product no longer functional?

This plugin wraps the Engine’s mount functions. So when you get such an error it comes from the engine itself.
Make sure your Pak file and the project use the same engine version.

this plugin is not installing on 4.26. using launcher, please follow up and fix

I’ve been messing with this plugin for a week or so now and just can’t get it to work.

By using “Get All Assets” I can see that my asset registry is not growing after using Load Pak Asset Registry file.

From unrealPak I can see:

LogPakFile: Display: Using command line for crypto configuration
LogPakFile: Display: Mount point …/…/…/TwoLevelSelector/
… bunch of other files removed for brevity (side note, I don’t expect these to be here, should be in main project, would love to know why they are here
LogPakFile: Display: “Plugins/LoadedAsset/Content/casePic.uasset” offset: 14336, size: 436 bytes, sha1: A8BF4EF2253B647D24FFD94AB5746F43DDE916EF, compression: Zlib.
LogPakFile: Display: “Plugins/LoadedAsset/Content/casePic.uexp” offset: 14845, size: 2073 bytes, sha1: DB0272EBB4709E4C30174AEF07290ACA07E0FA89, compression: Zlib.
LogPakFile: Display: “Plugins/TestLoadedPak/AssetRegistry.bin” offset: 17103, size: 961 bytes, sha1: F11B59AB1130ACC2AB2FE0D2C0A03FDEE27A0175, compression: Zlib.

My register mount point step has
root path = /LoadedAsset/
content path = …/…/…/TwoLevelSelector/Plugins

What should I use in register mount point content path?
Does the pak file structure look Ok?

Thanks for any help you can offer.

Hello @BlueMountainsIO

I’m getting these errors:

LogPlayLevel: Error: [2020.12.16-12.17.34:301][807]LogStreaming: Error: Couldn’t find file for package /LoadedAsset/casePic requested by async loading code. NameToLoad: /LoadedAsset/casePic
LogPlayLevel: Error: [2020.12.16-12.17.34:301][807]LogStreaming: Error: Found 0 dependent packages…
LogPlayLevel: Warning: [2020.12.16-12.17.40:182][743]LogOutputDevice: Warning:
LogPlayLevel: Script Stack (2 frames):
LogPlayLevel: MainUI_C.ExecuteUbergraph_MainUI
LogPlayLevel: MainUI_C.BndEvt__ExitButton_K2Node_ComponentBoundEvent_3_OnButtonClickedEvent__DelegateSignature
LogPlayLevel: Error: [2020.12.16-12.17.42:313][743]LogWindows: Error: begin: stack for UAT
LogPlayLevel: Error: [2020.12.16-12.17.42:313][743]LogWindows: Error: === Critical error: ===
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error:
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: Assertion failed: PakPrecacherSingleton [File:D:/Build/++UE4+Licensee/Sync/Engine/Source/Runtime/PakFile/Private/IPlatformFilePak.cpp] [Line: 1380]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error:
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error:
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error:
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ffc64acd759 KERNELBASE.dll!UnknownFunction ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721520da6 TwoLevelSelector.exe!ReportAssert() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721524188 TwoLevelSelector.exe!FWindowsErrorOutputDevice::Serialize() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7212dc8ed TwoLevelSelector.exe!FOutputDevice::LogfImpl() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721271aab TwoLevelSelector.exe!FDebug::AssertFailed() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721273d00 TwoLevelSelector.exe!FDebug::CheckVerifyFailedImpl() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7239baea0 TwoLevelSelector.exe!FPakPlatformFile::Unmount() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7207c7b02 TwoLevelSelector.exe!UPakLoaderLibrary::execUnmountPakFile() [D:\Build++Portal+Promotion\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\PakLoader\Intermediate\Build\Win64\UE4\Inc\PakLoader\PakLoaderLibrary.gen.cpp:179]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7218a3278 TwoLevelSelector.exe!UObject::execCallMathFunction() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7218a55e4 TwoLevelSelector.exe!UObject::execLetBool() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721880ac2 TwoLevelSelector.exe!ProcessLocalScriptFunction() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7218559aa TwoLevelSelector.exe!ProcessScriptFunction<void (__cdecl*)(UObject * __ptr64,FFrame & __ptr64,void * __ptr64)>() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721880609 TwoLevelSelector.exe!ProcessLocalFunction() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721880ac2 TwoLevelSelector.exe!ProcessLocalScriptFunction() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff72187ff51 TwoLevelSelector.exe!UObject::ProcessInternal() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7216581a9 TwoLevelSelector.exe!UFunction::Invoke() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff72187fab6 TwoLevelSelector.exe!UObject::ProcessEvent() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7207bfed5 TwoLevelSelector.exe!TMulticastScriptDelegate<FWeakObjectPtr>::ProcessMulticastDelegate<UObject>() [D:\RocketSync\4.25.0-13144385+++UE4+Release-4.25\Working\Engine\Source\Runtime\Core\Public\UObject\ScriptDelegates.h:488]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7237ac937 TwoLevelSelector.exe!UButton::SlateHandleClicked() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff72374a2dd TwoLevelSelector.exe!?Execute@?$TBaseUObjectMethodDelegateInstance@$0A@VUButton@@$$A6A?AVFReply@@XZ$$V@@UEBA?AVFReply@@XZ() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721bd9ac7 TwoLevelSelector.exe!SButton::ExecuteOnClick() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721bf4d50 TwoLevelSelector.exe!SButton::OnMouseButtonUp() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721a90856 TwoLevelSelector.exe!FLogTrace::OutputLogMessage<int,bool>() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721aefcc4 TwoLevelSelector.exe!FSlateApplication::RoutePointerUpEvent() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721add7bf TwoLevelSelector.exe!FSlateApplication::ProcessMouseButtonUpEvent() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721ad376c TwoLevelSelector.exe!FSlateApplication::OnMouseUp() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff72195d9c0 TwoLevelSelector.exe!FWindowsApplication::ProcessDeferredMessage() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff72194bb14 TwoLevelSelector.exe!FWindowsApplication::DeferMessage() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff72195fe97 TwoLevelSelector.exe!FWindowsApplication::ProcessMessage() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff721947739 TwoLevelSelector.exe!FWindowsApplication::AppWndProc() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ffc66cee858 USER32.dll!UnknownFunction ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ffc66cee299 USER32.dll!UnknownFunction ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7219612a4 TwoLevelSelector.exe!FWindowsPlatformApplicationMisc::PumpMessages() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff72030d142 TwoLevelSelector.exe!FEngineLoop::Tick() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff72032056c TwoLevelSelector.exe!GuardedMain() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff72032062a TwoLevelSelector.exe!GuardedMainWrapper() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff7203318c0 TwoLevelSelector.exe!WinMain() ]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ff725bf9a92 TwoLevelSelector.exe!__scrt_common_main_seh() [d:\agent_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
LogPlayLevel: Error: [2020.12.16-12.17.42:314][743]LogWindows: Error: [Callstack] 0x00007ffc65dc7034 KERNEL32.DLL!UnknownFunction ]
LogPlayLevel: Error: [2020.12.16-12.17.42:315][743]LogWindows: Error: [Callstack] 0x00007ffc66fbd0d1 ntdll.dll!UnknownFunction ]
LogPlayLevel: Error: [2020.12.16-12.17.42:315][743]LogWindows: Error:
LogPlayLevel: Error: [2020.12.16-12.17.42:315][743]LogWindows: Error: end: stack for UAT
LogPlayLevel: Error: ERROR: Client exited with error code: 3

I can see from my own logging that I have the file in the asset registry:
Log: ASSETREG After = /LoadedAsset/casePic.casePic | /LoadedAsset/casePic | /LoadedAsset | casePic | Texture2Dfalsetruetrue

Can you please help me to fix this issue?

@Frustrated_Coder

Sorry, for the late reply. I only get notified when questions are asked on the marketplace page.
This crash doesn’t really seem to be connected to this plugin. I suggest checking your particular BP code near the following event:


LogPlayLevel: MainUI_C.ExecuteUbergraph_MainUI
LogPlayLevel: MainUI_C.BndEvt__ExitButton_K2Node_ComponentBoundEvent_3_OnButtonClickedEvent__DelegateSignature

Could you solve your other problem? :slight_smile:

@BlueMountainsIO

I am looking to purchase this plugin but before that, can you please confirm that this plugin supports loading DataTables that are linked to each other and can load textures from the linked tables?
For eg:
Set1_Datatable references Set2_Datatable and Set2_DataTable references some Texture2D asset called MyTexture2D
and all of these files exist in a separate plugin called Patch1.

What this plugin can do depends on what the engine can do. It’s just a wrapper around the engine pak mounting functionality including some helper functions to load anything based on UObject and UClass (see documentation).

I open the sample project and replace begion play with keypressed 3 then all the functionality cant work.

If I keep the blueprint as it is,as the program be executed when begion play event fired,all the functionality works fine!

why?

I know this has only been tested on windows but i saw some people saying they got it to work on android.

I whitelisted the android platform on the .uplugin but my app still crashes when i click to open it.
(oculus quest to be more specific)
If someone could shed a light on how they managed to work on mobile, it would be great.

Where do I find a 4.26 example project? When I load the 4.24 example to 4.26 version and create package it, the executable won’t run. It says it’s corrupted.

You would need to copy the plugin from the marketplace engine folder and make it a project plugin. Then it will compile for your target platform.

Updated the links in the description on the marketplace page.