Announcement

Collapse
No announcement yet.

Distributing custom build to team.

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

    #46
    Originally posted by lekjart View Post
    Thanks, I think I got it figured out now. Mostly...

    Only thing that I haven't really managed is to redo a rocket build after a succesful one. There must be some config file somewhere that tells the build system that it has already created a rocket build and it doesn't go into a full rebuild because of it. I tried deleting the LocalBuild folder and the Saved/Rocket folder but that only results in errors when I run the RunUAT command. I used forceincrementalcompile, so I was hopeful I wouldn't need to do a full delete and cloning to get back doing a build after changing a few files. I am sure it's possible but I can't figure it out. Anyone has done that successfully?
    Well the below contains some chicken scratch notes I took as I went through this months ago, not quite sure how accurate they are or if I am missing anything.

    + The "-CleanLocal" parameter deletes the manifests from Saved\GUBP directory. Those manifests determine whether a node script has been completed or not. If a manifest is there it will skip I think. So This might be all you need, but it will do a full build.
    + The "-ForceIncrementalCompile" parameter prevents the build from cleaning.
    - A big caution, if I remember correctly I think it was this parameter that will complain if binaries are compiled in non-rocket before running the rocket build again.

    The incremental build with minimal changes is also on my TODO list. I did write up a custom GatherRocket node script to not copy the entire rocket build over and just the changes. However, there are more files that compiled that were unnecessary from a simple change.

    This is what my thoughts on it (Just a reminder, I'm still using version 4.8.2):
    Each node script has a list of dependent node scripts and a DoBuild() method. If you pass in "-OnlyNode", the dependencies are skipped.
    The node GUBP.GamePlatformMonolithicsNode (I think the name of the node is "UE4_Win64_Mono_Precompiled") compiles in the DoBuild():
    + UE4Game Development.
    The node GUBP.ToolsNode ( I think the name of the node is "Tools") compiles in the DoBuild():
    + CrashReport (shipping)
    + UE4EditorServices (development)
    + UnrealCEFSubProcess (Development)
    + UnrealFileServer (Development)
    + UnrealLightMass(Development)
    + UnrealPak(Development)
    + UnrealVersionSelector(Shipping)
    + BootstrapPackage(Shipping)

    I haven't tried it, but I was thinking of writing a shell script that only removes those single node manifests and running those nodes separately with "-OnlyNode" and "-ForceIncrementalCompile", then also run my custom GatherRocket node script I mentioned earlier to package the changes.


    There might be an easier way to do that. lol. I just haven't gotten back into the build process yet.

    Comment


      #47
      Originally posted by Harley_J View Post
      I'm going to bump this one too because I also ran into the dictionary key issue as well "ERROR: Exception in mscorlib: The given key was not present in the dictionary.".

      Has anyone figured this one out what key is not in the dictionary for that rocket script and how to solve it?
      Bumping this too as I have the same issue. If anyone from Epic is watching this, it would be extremely helpful if you posted some instructions on how to set up an environment, and what the process is to reproduce your launcher distributed builds. I work for a middleware vendor who maintain a UE4 integration, and our aim is to produce a Rocket build which we can push downstream to the subset of our customers who don't modify engine source, and just want to have the off-the-shelf experience they get from the launcher distributed vanilla builds, but with our special sauce. Any help much appreciated!

      Comment


        #48
        Originally posted by chrisvarns View Post
        ... I work for a middleware vendor who maintain a UE4 integration, and our aim is to produce a Rocket build which we can push downstream to the subset of our customers who don't modify engine source, and just want to have the off-the-shelf experience they get from the launcher distributed vanilla builds, but with our special sauce. ...
        And I build an engine based on various github forks that provide extra functionalities. And some of those forks have additional APIs and API keys which are restricted to my own machine.

        We have a team of developers across two continents, each developer is using its own version for his/her own little specialty, then I merge the whole back into my engine. A custom build would be a boon to our development.
        Last edited by DrHobo; 03-02-2016, 05:10 PM.

        Comment


          #49
          Originally posted by Kalms View Post
          Thanks for sharing your knowledge so far.

          I have done some testing myself, and managed to create a Rocket-style build. My findings so far are in this Git repository: https://github.com/Kalmalyzer/UE4RocketBuild

          Currently I can create a Rocket style build without doing any source code changes. A Win64-only build becomes 12GB in size, including template projects.

          I haven't worked out a good way to distribute and register the build to team yet, but I suspect that registration would just be a matter of assigning a non-GUID ID and manually registering it in the same way that the logic in UnrealVersionSelector does it, followed by running UnrealVersionSelector.
          Hi guys, just a heads up, this works perfectly with 4.11;

          I didn't expect but it bundles custom plugins too.

          12Gb output 7zips down to 3Gb.
          • Follow me on twitter
          • Visit our website traverse.world
          • Checkout our game's forum thread

          Comment


            #50
            How to do Rocket build is also shown in this Answerhub thread. It actually ends up being pretty simple. I've had to make two quick changes for it to use VS2015 for PDBCopy as part of the process, and had to add the folders for the Templates as shown in the thread otherwise you may get an error. But once you do that it's one command line call and looks identical to the Epic launcher builds.

            This also works in 4.11:
            https://answers.unrealengine.com/que...nternally.html

            Comment


              #51
              Anybody have problems with build 4.11.2 and using it?
              Mine builds fine, but when I try to generate projects I got error

              GetBuildPlatform: No BuildPlatform found for Win64

              Any clues why this happens? Source build works fine.

              PS. Ok, i fixed it by making -CleanLocal build
              Last edited by Yata; 04-28-2016, 11:14 AM.

              Comment


                #52
                Hi all,

                First of all, thanks to all who have contributed to working out how to get a Rocked build made. We don't plan to make many changes to the Unreal Engine as a whole, but would like to be able to distribute a custom build to the team with Win64 + PS4 + Xbox One support.

                I've managed to create a rocket build for distribution as per instructions on this thread with 2 target platforms Win32 + Win64. Now we also have access to PS4 and in future Xbox One portions of the Unreal Engine and I've added both those platforms to -TargetPlatforms=Win32+Win64+PS4+XboxOne but it still only generates a rocket build that only create Win32 + Win64 cooked builds. Is it possible to add the Xbox One and PS4 build targets to a rocket build and if so, how do you do this because adding the extra targets to -TargetPlatforms command-line parameter doesn't seem to do anything extra?

                Comment


                  #53
                  Originally posted by rau_torus View Post
                  Hi all,

                  First of all, thanks to all who have contributed to working out how to get a Rocked build made. We don't plan to make many changes to the Unreal Engine as a whole, but would like to be able to distribute a custom build to the team with Win64 + PS4 + Xbox One support.

                  I've managed to create a rocket build for distribution as per instructions on this thread with 2 target platforms Win32 + Win64. Now we also have access to PS4 and in future Xbox One portions of the Unreal Engine and I've added both those platforms to -TargetPlatforms=Win32+Win64+PS4+XboxOne but it still only generates a rocket build that only create Win32 + Win64 cooked builds. Is it possible to add the Xbox One and PS4 build targets to a rocket build and if so, how do you do this because adding the extra targets to -TargetPlatforms command-line parameter doesn't seem to do anything extra?
                  This can be done but it requires source code modification. I suggest you take the question to the appropriate forums. (sorry, I do not have access to those.)

                  Comment


                    #54
                    GUBP.ExecuteNode: System.IO.FileNotFoundException: 未能找到文件“D:\prg\UnrealEngine\Engine\Build\InstalledEngineFilters
                    .ini”。
                    文件名:“D:\prg\UnrealEngine\Engine\Build\InstalledEngineFilters.ini”
                    在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
                    在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShar
                    e share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolea
                    n useLongPath, Boolean checkHost)
                    在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileO
                    ptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
                    在 System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 buffe
                    rSize, Boolean checkHost)
                    在 System.IO.StreamReader..ctor(String path, Encoding encoding)
                    在 System.IO.File.InternalReadAllLines(String path, Encoding encoding)
                    在 AutomationTool.FileFilter.ReadRulesFromFile(String FileName, String SectionName, String[] AllowTags) 位置 D:\prg\U
                    nrealEngine\Engine\Source\Programs\AutomationTool\AutomationUtils\FileFilter.cs:行号 216
                    在 Rocket.StripRocketNode.DoBuild(GUBP bp) 位置 d:\prg\UnrealEngine\Engine\Source\Programs\AutomationTool\Scripts\Roc
                    ketBuild.Automation.cs:行号 447
                    在 AutomationTool.LegacyNode.DoBuild() 位置 d:\prg\UnrealEngine\Engine\Source\Programs\AutomationTool\GUBP\Nodes\Lega
                    cyNode.cs:行号 81
                    在 GUBP.ExecuteNode(BuildNode NodeToDo, Boolean bFake) 位置 d:\prg\UnrealEngine\Engine\Source\Programs\AutomationTool
                    \GUBP\GUBP.cs:行号 1545
                    Program.Main: AutomationTool exiting with ExitCode=1 (Error_Unknown)
                    BUILD FAILED

                    test in 4.13:
                    seems InstalledEngineFilters.ini has changed to InstalledEngineFilters.xml, but code is outdate.

                    Comment


                      #55
                      Yep -- it appears that Epic are phasing out Rocket in favor of a new build process. There are some notes to that effect in https://forums.unrealengine.com/show...l=1#post575178 (with suggested command lines for those who would like to start investigating this), and people have been investigating how to use the new build mechanism in https://forums.unrealengine.com/show...t=distributing . I am not planning to dig into this myself though, as I currently don't work with UE4.

                      Comment


                        #56
                        Originally posted by Kalms View Post
                        Yep -- it appears that Epic are phasing out Rocket in favor of a new build process. There are some notes to that effect in https://forums.unrealengine.com/show...l=1#post575178 (with suggested command lines for those who would like to start investigating this), and people have been investigating how to use the new build mechanism in https://forums.unrealengine.com/show...t=distributing . I am not planning to dig into this myself though, as I currently don't work with UE4.
                        thanks Kalms!
                        i will read the topic and try their new methods

                        Comment

                        Working...
                        X