Inside Unreal: Adding Mod Support with the Simple UGC Plugin

As far as mod.io support for this, it seems most of mod.io’s plugin is basically an API wrapper that has functions that assist in in-game managing of mod.io accounts, subscribing to / retrieving mods and their metadata directly from mod.io’s servers, etc. The mod.io tools stop at the point where a zip file and its metadata are downloaded to a particular directory. From there, likely with some glue code to handle local file management, the Simple UGC code can take over, detecting and applying the mods in the /Mods directory.

Do I understand it in the right way, if a content creator wants to created a mod for the project he is supposed to repeate these steps, otherwise he wont be able to package the plugin with the “Package UGC” button?

Hello everyone!

I would like to set up my modding pipeline.

I started following the steps from here.

When I am hitting Properties in step 6, I get this error message in VS.:


An error occurred trying to load the page.
Could not load file or assembly 'Microsoft.VSDesigner, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

I built the UE4 and UGCExample, and UnrealPak as well, with no errors…

Did anyone else encounter this?

Thanks

This seems to put it right. (.net desktop package has to be installed)

Now I got stuck at the last step:

9.Build and run the UGCExample project in the Development Editor configuration.

I did so built in Development Editor and then pressed Start on top.

Window pops up for a few secs, than it shuts down, and I get this:


'UnrealBuildTool.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.
'UnrealBuildTool.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'E:\UnrealModKit\UnrealEngine\Engine\Binaries\DotNET\UnrealBuildTool.exe'. Symbols loaded.
'UnrealBuildTool.exe' (CLR v4.0.30319: UnrealBuildTool.exe): Loaded 'E:\UnrealModKit\UnrealEngine\Engine\Binaries\DotNET\DotNETUtilities.dll'. Symbols loaded.
'UnrealBuildTool.exe' (CLR v4.0.30319: UnrealBuildTool.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'.
'UnrealBuildTool.exe' (CLR v4.0.30319: UnrealBuildTool.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll'.
'UnrealBuildTool.exe' (CLR v4.0.30319: UnrealBuildTool.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll'.
'UnrealBuildTool.exe' (CLR v4.0.30319: UnrealBuildTool.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'.
XXXPlatformFactory.RegisterBuildPlatforms: XXXPlatformSDK using manually installed SDK 1.0.0
MacPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.MacPlatformSDK using manually installed SDK
TVOSPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.IOSPlatformSDK has no valid SDK
AndroidPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.AndroidPlatformSDK has no valid SDK
HoloLensPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.HoloLensPlatformSDK using manually installed SDK
IOSPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.IOSPlatformSDK has no valid SDK
LinuxPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.LinuxPlatformSDK has no valid SDK
LuminSDKVersionHelper.HasAnySDK: *** Unable to determine MLSDK location ***
LuminSDKVersionHelper.HasAnySDK: *** Unable to determine MLSDK location ***
LuminPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.LuminPlatformSDK has no valid SDK
WindowsPlatformFactory.RegisterBuildPlatforms: UnrealBuildTool.WindowsPlatformSDK using manually installed SDK
BuildMode.Execute: Command line: "E:\UnrealModKit\UnrealEngine\Engine\Binaries\DotNET\UnrealBuildTool.exe"
Exception thrown: 'UnrealBuildTool.BuildException' in UnrealBuildTool.exe
UnrealBuildTool.Main: ERROR: No platforms specified for target
UnrealBuildTool.Main: BuildException: No platforms specified for target
UnrealBuildTool.Main: at UnrealBuildTool.TargetDescriptor.ParseSingleCommandLine(CommandLineArguments Arguments, Boolean bUsePrecompiled, Boolean bSkipRulesCompile, List`1 TargetDescriptors) in E:\UnrealModKit\UnrealEngine\Engine\Source\Programs\UnrealBuildTool\Configuration\TargetDescriptor.cs:line 272
UnrealBuildTool.Main: at UnrealBuildTool.TargetDescriptor.ParseCommandLine(CommandLineArguments Arguments, Boolean bUsePrecompiled, Boolean bSkipRulesCompile, List`1 TargetDescriptors) in E:\UnrealModKit\UnrealEngine\Engine\Source\Programs\UnrealBuildTool\Configuration\TargetDescriptor.cs:line 192
UnrealBuildTool.Main: at UnrealBuildTool.BuildMode.Execute(CommandLineArguments Arguments) in E:\UnrealModKit\UnrealEngine\Engine\Source\Programs\UnrealBuildTool\Modes\BuildMode.cs:line 158
UnrealBuildTool.Main: at UnrealBuildTool.UnrealBuildTool.Main(String] ArgumentsArray) in E:\UnrealModKit\UnrealEngine\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.cs:line 550
Timeline.Print: Timeline:
Timeline.Print:
Timeline.Print:  0.000]
Timeline.Print:  0.008](+0.002) FileMetadataPrefetch.QueueEngineDirectory()
Timeline.Print:  0.011](+0.073) XmlConfig.ReadConfigFiles()
Timeline.Print:  0.084](+0.000) SingleInstanceMutex.Acquire()
Timeline.Print:  0.084](+0.159) UEBuildPlatform.RegisterPlatforms()
Timeline.Print: 0.085  0.000](+0.041) Initializing InstalledPlatformInfo
Timeline.Print: 0.127  0.042](+0.000) Querying types
Timeline.Print: 0.128  0.044](+0.095) XXXPlatformFactory
Timeline.Print: 0.224  0.139](+0.002) MacPlatformFactory
Timeline.Print: 0.226  0.141](+0.005) TVOSPlatformFactory
Timeline.Print: 0.232  0.147](+0.003) AndroidPlatformFactory
Timeline.Print: 0.235  0.151](+0.001) HoloLensPlatformFactory
Timeline.Print: 0.236  0.152](+0.001) IOSPlatformFactory
Timeline.Print: 0.238  0.154](+0.002) LinuxPlatformFactory
Timeline.Print: 0.240  0.156](+0.002) LuminPlatformFactory
Timeline.Print: 0.243  0.158](+0.000) WindowsPlatformFactory
Timeline.Print:  0.250](+0.001) DeleteJunk()
Timeline.Print:  0.252](+0.012) TargetDescriptor.ParseCommandLine()
Timeline.Print:  0.264](+0.021) <unknown>
Timeline.Print:  0.286](+0.000) FileMetadataPrefetch.Stop()
Timeline.Print:  0.289]
The program '[69760] UnrealBuildTool.exe' has exited with code 6 (0x6).

Did anyone encounter this?

@formatc2013 Looks like you are running the UnrealBuildTool project instead of the UGCExample project, in you Solution Explorer right click the UGCExample project and select Debug->Start New Instance or directly set it as Startup Project.

The Robo Recall support native C++ plugin creation from the box. When the same functionality will be added to the UGC? For me interesting the options:

  • C++ plugin without content
  • C++ plugin with content
  • The plugin that based on another plugin

That was it!

Thanks!​​​​​​​

Are there any restrictions on projects that contain marketplace items (meshes and visual stuff mostly). I’m guessing people would have access to those assets which they might have not purchased

Is this still a thing?

Send me to a 404 on github and EPIC Games organization has no UGCEXAMPLE in their repository…

You must be logged in Unreal Engine 4 on GitHub - Unreal Engine

i have no ideal what i doing in the Visual Studio , hope some one can make a video of how to set up every thing.

An video tutorial will be nice for newbies guys like me then a text tutorial :D. Because 6 of 9 steps on documentation talk about build, I do not want to rebuild the engine because I’m new in C++ and Visual Studio is a pain for me, a lot of wrong suggestions come from it + I looked on other comments and I see some of them received errors. Think like I’m your dog from the beginning of the video and that are my reactions when I look on Visual Studio C++ code, bunch of rainbow text line.
You sad blueprint guys can use it (you mentioned at the end of the video, the cost is to rebuild the engine, most important will be a part of it) but I’m not good enough on rebuild and I have a wars friend ship with Visual Studio (and other 90% Microsoft products) so a video tutorial from where I can copy-paste moves to achieve my goal of build will be nice, or if UE team will be nice to implemented in launcher like a standard plugin where I can search it, check it and restart the editor to achieve same goal will be more then what a simple guy like me is wishing for this Christmas from Santa clause :rolleyes:

Hi @VictorLerp

What’s not clear to me from watching the video and going through the starter guide is how do you hide code in the mod kit project so you don’t give away your games code? I want to make a mod kit where people can alter existing code with hooks that I setup without showing them the original code.

Also, how do you set up the templates that are shown at the end of the demo/starter guide?

From the starter guide: “You will want to account for these in the custom IPluginWizardDefinition in the SimpleUGCEditor module so that they properly populate in the list of templates. See the Robo Recall source for a good reference on how that can be handled.”

But what’s the IPluginWizardDefinition and what’s the SimpleUGCEditor module?

1 more question:

How do you handle if your game is still heavily in development? Can the real project and the mod kit project stay in sync somehow? How does making a new build of your game affect mods made with a previous version of the modkit?

Thanks in advance!

More Info Please?
Does this plan work?a good way to avoid compiling…

**YanYuHongChen**yes ofc it works, what I made and tested is:

  • compiling as DLC in my mod project, which is based on the game C++ code but having minimal blueprints included (plus some assets for helping modders),
  • copying the resulting pak file to a certain folder (just hardcoded local Steam workshop folder, it should be detected in future)
  • loading this pak file by the game, using the pak loader plugin from marketplace,
  • after scanning DLC assets, the DLC maps appeared in the UI map list, and could be loaded from menu (mod level creation was not finished so they were not fully playable).

unfortunately, I had to interrupt finishing it, because our game is still in early access, thus I had to convince our managers to add modding support only for the final version, because a lot of features are changing currently… (and it is a VR shooter, so we must provide a good documentation for modders how to optimize levels, baking light etc., so it is going to be not a small task to complete)

Just wondering if it is possible to package my game in a project and package the mods in a different one, so I don’t give away my all my content. How would you go about it?

3 Likes

Hi, guys did the links changed? I cannot access any of the projects…

Have you connected your Epic Games and GitHub accounts? You also need to be logged in to GitHub to access the repository.

Requirement of having UE source and rebuilding seems painful. It should be simple plugin from marketplace to make this process do-able especially for modders. I’m a bit disappointed, in Unity I was able to set it up using Addressables. Modder has to only download my Unity project (or build plugin) then right click any folder -> Build Mod.

2 Likes