We’ve released a new sample project to help Unreal developers bring mod support to their games. Based on the work done for Robo Recall, the UGC Example Project and SimpleUGC plugin aim to make it easier than ever to bring your community into the creative process. Join us as Senior Technical Product Designer Chance Ivey walks through many aspects of the project and plugin, including how to build and test mods for the sample, and how you can use the technology in your own games.
great project, I read through the source, and have a few questions / notes:
1st of all, creating a new mod plugin by a button click is really handy for modders, thanks for that! using a pair of replacement components is also a nice idea. and ofc the editor widget is also like a xmas present. but seeing more comments in the source would be lovely.
imo it is a better approach to build the mod plugin (as a DLC) by AutomationTool.exe + command line arguments. it seems to be more simple than a source build. I’m experimenting with it currently, calling AutomationTool by CreateProc(), args can be got from the build log of a DLC, and replacing some parameters according to actual project is easy (engine path + project name + mod plugin name), and works fine. rarely certain maps are left out, but apparently newly created ones work.
the command looks like this:
<engine-root-dir>Engine/Binaries/DotNET/AutomationTool BuildCookRun -project=<project-path>.uproject -noP4 -clientconfig=Shipping -serverconfig=Shipping -nocompile -nocompileeditor -installed -ue4exe="<engine-root-dir>Engine\Binaries\Win64\UE4Editor-Cmd.exe" -utf8output -platform=Win64 -targetplatform=Win64 -ini:Game:[/Script/UnrealEd.ProjectPackagingSettings]:BlueprintNativizationMethod=Disabled -cook -map= -unversionedcookedcontent -pak -dlcname=<mod-plugin-name> -DLCIncludeEngineContent -basedonreleaseversion=1.0 -stage -compressed
then the resulting pak can be found easily, ready for renaming, copying to the installed game for quick testing, and uploading…
it would be nice to have a solution for displaying the output log while the mod plugin is being built, similarly to project launcher (in case of errors we could support modders more easily)
copying the mod pak files to the Content folder of the installed game is not always possible, imo the pak loader plugin available on marketplace is the correct way how pak files should be mounted, because it enables mounting paks from any location e.g. steam workshop folders. and steam workshop support is a must today.
I would love to see a live stream or a tutorial of up/downloading paks using SteamWorkshop and Mod.io too, and managing them in-game, especially maps. (other stuff can be)
Hey all, looking forward to walking through the project tomorrow! Gonna tackle some of these that are more specific / things we can’t cover on stream -
I unfortunately am not the best to comment on the topic of upload / download for mobile, you might want to post anything question you’ve got in the mobile forums under the Development Discussion section.
I have intentions to add a few more in areas where things are less than clear as well as some extra logging where appropriate. Thanks for the reminder and kind words!
This is something we had in Robo Recall, but I think we had it as an editor setting and not a plugin setting. I will check with the Editor folks to see if there’s a way to enforce that via a command, but I am not sure there is at the moment.
That sounds like fun, we’ll keep it in mind when thinking about future content. Same goes for your question about WRT paks mounted from anywhere / Steam Workshop!
That is the intent on my end. I hope to add some other functionality to it to make it more robust at some point. For now, it will remain scoped around Robo Recall’s capabilities (minus code mods) as we have a shipped game using the methods and a bigger example in it.
I can’t imagine why not, but I am not terribly familiar with their tech. I’ve had brief conversations with that team, so we’ll see I suppose!
The protecting your assets when releasing an editor is still a bit vague to me. I’m looking into having people only create new maps or edit existing ones. And of course you’d want them to have access to the game’s art. Is there any way to protect your art and not be forced to include uncooked art files in your custom editor?
Would be great if the editor could somehow read your game pak and make the art assets and maps visible in your content browser as read only, and have the modders reference these assets when they make maps.
The livestream got me excited but I am mixed up about who does what. I think it goes like this:
Dev builds automation tool from ue4.25 source.
Dev uses UGC plugin to set up their game to be moddable.
Dev builds game executable and CoolGameEditor.exe and distributes to end users.
End users receive the CoolGame game executable as well as CoolGameEditor.
End Users run CoolGameEditor and it works just like Unreal Editor but somehow knows what can be eisted and what cannot. They put their own maps,models, etc into it and hook up the replacements.
End Users user CoolGameEditor to package the mod content they created using CoolGameEditor and then email the packages to their friends to put into their mod folder.
End Users run CoolGame and it loads the mod packages at runtime and applies them according to the way the Dev dictates via blueprints.
Can we get this question answered? I couldn’t understand it from the live stream, it didn’t make an ounce of sense to me. The way it sounded, is that we had to give our players the whole game project so they could make mods. At that point it’s not really a mod right? They have the full game. I’m sure I’m understanding this wrong (really hope so), but I’m not too keen on providing a full game project to just anyone.
I don’t think so. When you package a game, you normaly create a PAK file with your content. So you could give one just the Editor Build with the UGC Plugin (and the unrealbuildtool which is why I guess you need the source build at all, if I find time I will try to just put the UGC and buildtool to a regular 4.25 project). He/she/it launches the editor, creates the mod (which is a normal plugin with a little bit of wizard from the UGC), adds its own content into the plugin|mod content folder, puts in the information for which actors it replaces and or builds a new map, packages this up with the UGC (like you would manually with any plugin you create), this builds another PAK file which goes to the folder in the game.
So I guess the question for yourself is: what classes/interfaces/Blueprints/… does the modder need to extend/change your gameplay in a way it is supposed to be. Think about a shooter where you want the users to replace weapons. I would give them a base weapon mash for orientation/fbx export…, the blueprintInterface they need to implement with functions like getAmmo, getMaxAmmo, shoot, reload, getReloadSpeed … and this bp should be marked as it replaces the normal weapon in my game (which is marked as ok for being replaced). but you could also go into dataAssets or DataOnlyBlueprints or dataTables for just providing attribute input
maybe a good start is to look into roborecall which you should find in the launcher for the purpose of being modable without giving away the whole game.
quite unclear for me is a licensing question: I guess you are only allowed to distribute your editor build via the launcher (no glue how you get in touch with epic about that) or via a forked github unreal repo, because both implicits that the end user has acceppted epics eula.