Thank you very much for this post.
Weāve been working on mod support on our side here, and weāre still trying to get modding to work.
On a basic level, I understand that mods are plugins, built as DLC on top of a base game. The resulting pak file is then placed into the GameName/Content/Paks/, which is then automatically loaded. Iāve done this, confirmed that the game loads the pakā¦
But then, AssetRegistry appears unable to actually find the assets. Whatās wrong ? Calling SearchAllAssets(), then GetAssetsByClass() only returns base assets, no mod assets included. Whyās that ?
Well, Iāve spent a week investigating modding support, and as far as Iām concerned, there currently isnāt any.
4.19 has an obvious breaking bug - it canāt build DLC. So modding is entirely impossible on that version, unless you fix a regression in the engine code yourself.
4.20 doesnāt have that bug, but despite dozens of hours of work, Iāve never been able to detect mod content from a mod pak, despite trying many different methods.
- The asset registry works perfectly fine for the base pak, but wonāt detect content loaded using OnMountPak().
- The same issue happens if you let the engine load a mod pak from next to the default pak (which is not a practical method with Steamworks, anyway).
- Loading assets manually with LoadSynchronous() wonāt find mod assets.
Iāve confirmed that the basics of reading a pak file still work - I can dump the contents of my mod file and check that the assets are there. It all appears good and consistent. Actually making use of these, as of 4.20, appears impossible.
Iād love to be proven wrong, but Iād advise going with a different engine if modding is required.
I believe you must still manually merge the asset registries of each pak file when loaded, similar to how it is described here. It was stated to be added to a future release over a year ago but doesnāt look like it ever made it in. It seems after investigating modding support again before we move into 4.22, itās still barely supported natively and requires lots of custom code to get functioning, on top of the legal barriers mentioned in this thread related to distribution.
Why is the Editor required for Modding? Would it not just be adding prefab Media and Code modules?
Anything new?
I see you released the modding editor for Elium Rain, how you solved your problems? ![]()
Weāve found that manual mounting doesnāt work, and mounting mods outside /gamename/Mods in the packaged game doesnāt work, so weāve made a lightweight launcher that synchronizes the Steam mod folder with that specific folder.
Hello, so are mods definitely possible for those without the resources to hire a team of programmers?
What does it involve to add a new map to a game?
Would be a matter to tell the player: download ue engine, open this level-template, modify it as you wish and copy it into game\mods\maps folder and voila?
In general what considerations should be made to make your game modable since the first day?
Thanks 
Modding support in UE4 is very constrained, limited, hard to set up, hard to use.
First, you will need to release a significant part of your project. Hereās why.
- You will need to distribute at least the release information for the latest version, basically the cook manifest, so that people can cook against it, hard requirement here.
- Any Blueprint that you want people to be able to use (game mode, custom player start, any kind of Blueprint used in levels) will need to be distributed as well
- Since people will need to test the level, they need to play it, so your mod kit needs playable code & content
Our mod kit for Helium Rain is the full game project minus most of the playable ācharactersā and most of the levels.
Some additional constraints follow.
- No redistributing Marketplace assets, hope none of that is used for gameplay, canāt distribute it, unless youāre a packaging wizard and understand how to cook editor assets
- No redistributing any editor outside Epic store, so no āmod editorā launch option on Steam
- If you use Steam modding, you will at least need some kind of C++ code to copy mods from the Steam workshop directory on your PC to the game install dir
āDonāt do itā is how Iād put it at that point. UE4 is not meant for modding.
But modding (or UGC) is so important!!
/SRyUpR4qOxU
If UGC is going to be a large part of your game, all of the things I described above are feasible. We did and and our modkit is available. Itās just never going to be a dayās work to have modding in your game, so you should be sure your game revolves around modding, like some Valve games do.
What Iām searching for is some guidelines to make my game moddble since day 0.
E.g.: Instead of āhard-codeā a new map in the game code, why not doing it already as a mod? Same for new races, enemy types, resources, items, etc.
Letās say you hire a level designer. Give him your modding tools directly instead of having to give him access to full source.
I think this is one of the pillars to develop a game the right way since day 0.
Mods in UE4 are patches over a full released game. Technically, they actually rely on the engine support for DLC. So no, you shouldnāt work like that at all.
Making your game moddable, as far as the game code goes, isnāt particularly hard. Just use the asset registry to discover assets, as opposed to hardcoding lists of content in the code, which you shouldnāt do anyway.
Does the default modding only handle adding new content then? For example, can a mod override the jump height of the player without replacing the entire player?
Iām not really sure, but I donāt believe you can do that, no.
In such case wouldnāt it be a matter to implement a file containing this info? (SQLite, XML, or just plain text).
For a localization mod, wouldnāt it be something like an external table as well?
A localization mod is exactly what the UE4 modding support should be stellar at. Provided, of course, that your modding kit includes the po files and your modder understand UE4 well enough to import the translated version, set up a new language and cook it as a mod.
The basic problem with UE4 modding is just that - the cooking and patching infrastructure is quite powerful, but you need to understand every bit of it to truly offer mod support and spend weeks or months on it.
UE4 games made by Bamco (Bandai Namco ICYMI) doesnāt have the modkit provided by the devs yet it manages to have mod applied all over the place, at least cosmetic mods. Especially Soulcalibur 6.
Without the official toolkit/dumbed down UE4 SDK, active modders (those who create mods for your game) will inevitably have to get their hands to UE4 SDK and U4Pak to make/replace custom content especially custom meshes. Passive modders (those who just apply mods to their installation of your game) just have to deal with U4Pak.
If you just want to allow mesh mods or audio mods, or any cosmetic mods, really, you can leave it that way and let the modders do their job with U4Pak and making the cosmetic mod in a fresh UE4 SDK, and you can leave your game in Shipping build then call it a day.
This results you unable to integrate your game with Steam Workshop, but then Grand Theft Auto V is still moddable without Steam Workshop and the mods are collected independently.
On the other hand, if you want to allow custom script to be added to your game, that is where things can get confusing real quick and Iām sure weāre scratching our head around it. The wiki provided by seems to get around this case, but I still donāt know how to obtain the profile in a shipped game or providing the profile in the game files.
You can have the materials and code notarized and legally signed with copyright⦠I know it can seem damning to release source-code for anything but having a notarized and copyrighted source-code is the way to go.