Making your game moddable.

It is possible, but Epic’s restriction on redistributing the editor makes it a non-starter.

You need to either have your game released through the Epic launcher with the editor, or you need to provide your modding SDK a source code, some assets, and the build artifacts from every release. I think mods need to be re-built for every release you do, too.

So what is the process of getting your game on the Epic Games Launcher? Do we need to pay Epic Games? I’m guessing Epic Games has a lot of game companies asking them to put their game on the Epic Games launcher for modding, so there must some sort of filtering process, or formal application process. I don’t see many games on the “modding” section either; looks like big game titles and not really any indie games.

Thanks dude for clarifying.

From what I’ve been told by [USER=“14973”] [/USER], it’s a straight forward process with no extra costs. If you’re making a mod editor you should send him a message aswell

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? :slight_smile:

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 :slight_smile:

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?