I’ve been trying to make my project support player’s mods, and I am having some struggle with that.
So firstly I want to put out a list of what I am trying to achieve:
- Modders are not required to have any source files of the project.
- Modders make their mods in a separate project. (or inside a given mod template project)
- Mods can have blueprints, materials, levels, meshes.
- Mods are packed into “.pak” files.
- Mods are not conflicting with each other in terms of naming and assets naming. (optional)
- Mods are packed using “UnrealPak.exe” tool. (optional)
I’ve managed to find a way to mount an external pak file at runtime and go through its content, but I am failing to cast any blueprints to “UBlueprintGeneratedClass”, though I am able to load them as “UObject” (they are still staying dysfunctional).
Another thing is that all the hard references inside mod’s assets get broken. Ex: blueprints can’t find their parents, levels can’t find their assets and so on…
I know that the way you pack the mod has a lot to do with the further behavior. I’ve tried making my mod as just a packaged separate project with both same and different names from the project I want to runt the mods in.
At some point, I even tried to package mods as DLS’s using Project Launcher, but it eventually got broken and stopped working properly (some other error).
Packaging with “UnrealPak.exe” gave me some very weird results. Firstly it wouldn’t respect the directories I wanted to pack, simply packing all the content from those directories into the root of the “.pak” file.
Secondly, I couldn’t even load anything, after mounting the pak file.
I know it is better to keep the list of what you tried, but at this point, I don’t even remember all the ways I’ve attempted in order to make it work, but I tried a lot, and I am completely stuck now.
Any help is appreciated.