Modding game via DLC-like plugins

Hello, I am currently trying to implement some modding system for our game. Right now I believe the easiest way to do this is to have users cook mods as DLCs into PAKs, which are mounted at runtime by a custom mod manager. I want to be able to add new assets (which are going to be discovered by reflection), as well as override base game assets whole (e.g. replacing a BP class to inject custom scripts)

What is the best way to cook this dlc? I am using -DLCName and -BasedOnReleaseVersion. This works for newly created assets. However, if I want to override base game assets (change the asset in the project - it is different from the ReleaseVersion), this doesn’t include them in the pak. I tried adding -DLCActLikePatch, which, on the first glance, cooks the plugin folder as if it was mounted into the /Content directory (this would allow copying the overriden asset to plugin folder and changing it there). In UnrealPak -list, it shows up under the base game path. However, in runtime it is mounted into the /ModName/ path, and it won’t act as an override. Would it work differently if mounted from a pak without iostore? (Is it even possible to combine iostore paks and normal paks in one game?)

In an ideal world, the user would have a plugin with a bunch of new assets, and an Override folder, where a mirrored Content structure could be placed - every asset placed there would then be cooked as the base game asset (and it would replace the base game asset if mounted). If not possible, just mounting everything under /Content would also work, making a bit of a mess, but whatever. Is any of this possible?

(Also, I would like to avoid any engine changes for this, especially changes to UAT.)

[Attachment Removed]

Hi,

This depends if you are using classic Paks or IOStore. I’m guessing that you are using IOStore as this requires the following in the plugins ini.

  ; <DLCPlugin>/Config/Default<DLCName>.ini
  [PluginSettings]
  RemapPluginContentToGame=true

Regards,

Martin

[Attachment Removed]