Announcement

Collapse
No announcement yet.

Inside Unreal: Adding Mod Support with the Simple UGC Plugin

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #16
    Originally posted by VictorLerp View Post

    We answered that and more during the livestream, but the TLDR is that we currently aren't able to due to how the packaging process works. That might change in the future though!

    Definitely looking forward to the change, but for now, I'll just migrate to a source build of UE4.

    I also forgot that I had another question:

    Will this be usable with mod.io in the future?

    Comment


      #17
      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.

      is that all correct?

      Comment


        #18
        Originally posted by sebaenam View Post
        I got really confuse about this:

        Should I give the users the full project of the game to let them being able to create mods? Like a Github project so them can download it and having UE downloaded create a new mod?
        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.

        Comment


          #19
          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
          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.
          S. Hein, CEO, IT-Consulting Hein - IT-Service and 3D Visualisation

          Comment


            #20
            Originally posted by BlueMind Studio View Post

            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.
            You've have to provide actual content files (e.g. blueprints, cooked art assets etc), otherwise there's nothing for modders to actually hook into and compile against in the editor.

            Comment


              #21
              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.

              Comment


                #22
                1. Place your project in a directory under your UE4 root directory (such as /Games or /Projects) and add the directory to UE4Games.uprojectdirs using your favorite text editor. Save this file.
                2. NOTE: If you cannot move your project's location for one reason or another, skip this step and move the SimpleUGC.Automation project and scripts to your Engine directory as oulined in the Adding Automation Projects documentation.
                3. Run GenerateProjectFiles.bat in your UE4 root directory.
                4. Open the Visual Studio solution.
                5. If you haven't yet, build the UE4 and UnrealPak projects.
                6. Verify that the build scripts are listed in the Programs/Automation directory
                7. Open Properties for SimpleUGC.Automation and choose the Build tab on the left. Set the Output Path to your source build's Engine\Binaries\DotNET\AutomationScripts\ directory for both Development and Debug Configurations. The "Browse..." button makes this easy.
                8. Build the AutomationTool project.
                9. Build your project in the Development configuration.
                10. Build and run your project in the Development Editor configuration.
                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?
                Last edited by ShiftZ; 08-07-2020, 02:53 AM.

                Comment


                  #23
                  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.:

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


                  Attached Files

                  Comment


                    #24
                    Originally posted by formatc2013 View Post
                    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.:

                    Code:
                    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)

                    Comment


                      #25
                      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:


                      Code:
                      '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?
                      Attached Files

                      Comment


                        #26
                        @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.
                        Last edited by ZioYuri78; 08-13-2020, 09:09 AM.
                        Join the Unreal Engine community on Reddit! | Twitter: @ZioYuri78

                        Comment


                          #27
                          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

                          Comment


                            #28
                            Originally posted by ZioYuri78 View Post
                            @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.
                            That was it!

                            Thanks!​​​​​​​

                            Comment

                            Working...
                            X