Search Unity

Turbo Builder - Fast build solution

Discussion in 'Assets and Asset Store' started by Stefan-Laubenberger, Mar 14, 2019.

  1. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Dear developers!

    We proudly present our latest asset: Turbo Builder

    Turbo Builder creates builds for multiple platforms in one click. It works together with Turbo Switch to offer an incredible fast build pipeline.

    Turbo Builder is a great time-saving tool for your multi-platform projects.


    Features:
    Fast & efficient

    • Build multiple builds with one-click
    • The platform settings are the ones from Unity
    • Support for various VCS like Unity Collaborate, git, svn, Mercurial & PlasticSCM
    • Control TPB with CLI and integrate it seamlessly in your build pipeline
    • Compress the builds as ZIP files
    • See the backup space usage

    Supported platforms
    Turbo Builder works with ALL platforms, but supports those out-of-the box:
    • Android
    • iOS
    • Linux
    • macOS
    • PS4
    • PS5
    • Switch
    • tvOS
    • WebGL
    • Windows
    • (UWP (WSA)
    • XboxOne

    Documentation & control
    • Powerful API for maximum control
    • Comprehensive documentation and support
    • Full C# source code

    Compatibility
    • Works with Windows, Mac and Linux editors
    • Compatible with Unity 2019.4 – 2023
    • C# delegates

    Integrations:


    Video:


    Some impressions:
    01-Build.PNG

    02-Config.PNG


    AssetStore:
    Turbo Builder PRO
    Turbo Suite Bundle
    All Tools Bundle

    Our other assets


    Changes


    Any constructive comments are very welcome!



    So long,
    Stefan
     
    Last edited: Jun 18, 2023
    firstuser and elmar1028 like this.
  2. bigbrainz

    bigbrainz

    Joined:
    Jul 21, 2015
    Posts:
    177
    Turbo Switch PRO has proved very useful, so we're looking at using this as well. I have a couple of questions:
    1. Can I generate iOS builds from my Windows machine or do I still have to use a Mac?
    2. Do I still have to go through all the XCode stuff each time or can that be included as part of what this does?
    3. Same question for Archiving and uploading from XCode--is that still separate?
    Thanks!
     
  3. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi

    Thank you for your interest in our product!

    You can build an iOS app under Windows, but the whole Xcode-part must still be done on a Mac.
    A possible solution is the asset iOS Project Builder for Windows

    I hope this helps you further.


    Cheers
    Stefan
     
  4. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    We've just released version 2020.5.2 of Turbo Builder.
    Main changes:
    • Planned final release for 2020
    • Example integration improved
    • New Youtube video added:
    • Updated to Common 2020.4.7
     
  5. Kabrakan

    Kabrakan

    Joined:
    Apr 11, 2021
    Posts:
    1
    Thanks!!
     
    Stefan-Laubenberger likes this.
  6. AlienFreak

    AlienFreak

    Joined:
    Jul 2, 2012
    Posts:
    40
    Dudes, I frickin love this thing! TB Switch was awesome and this just works smooth as butter first time building to Android, iOS, Mac and PC.

    Questions:
    1. Is there a way to get TBP to take the Xcode project and compile it, and output the archive (what we submit to the App Store) to a specified directory? Maybe as a Method in Config? (FYI, I'm on a Mac)
    2. Zip Method? Could you give me a sample Method in the TBP Config section for say zipping the contents of a build and putting that in a directory?
    3. Git Method? How about an example Method for getting the latest git at the start of all builds?
    Thanks,

    Don
     
  7. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    I wrote you an answer via email.
     
  8. AlienFreak

    AlienFreak

    Joined:
    Jul 2, 2012
    Posts:
    40
    Still loving TBP. I've switched up my project to using Addressables. This requires building Addressables for each platform and before the platform is built. Is there any support for building Addressables using TBP?
     
  9. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi

    Have you tried "AddressableRebuilder.cs" from "Assets\Plugins\crosstales\TurboBuilder\Example Integration\Editor"?
    You have to open the file and change line 1 from "false" to "true.

    Does that help?


    So long,
    Stefan
     
  10. JustFamous

    JustFamous

    Joined:
    Aug 23, 2017
    Posts:
    12
    Can i build on Android without switching to that platform?
     
  11. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi

    To create a build for a given platform, Unity always has to switch to it.
    Anyway, if you want to have the same default platform after every build, you could edit the file "SwitchBackAfterBuild.cs" under "Assets\Plugins\crosstales\TurboBuilder\Example Integration\Scripts\Editor".
    Just remove the first and second last line in the file and change the variable "target" (line 11) to your desired default target.

    I hope this helps you further.


    Cheers
    Stefan
     
  12. versusco

    versusco

    Joined:
    Oct 10, 2014
    Posts:
    4
    Hello Stefan, we use TurboBuilder quite a lot and recently start using TurboSwitch as well.

    I think there is one thing could be upgraded for building multi- configurations.
    For example:
    For each platform, we need to build couple configurations, and its differentiate from platform to platform.
    Each configuration may have some different setting overrides

    Windows client
    Windows local server
    Windows headless server
    Linux headless server
    Playstation Client
    Playtation Server
    Andorid companion app
    iOs companionion app

    if turbo build can create an inteface for hooking up a scriptable obect to define override setting for each platform would be super useful
     
  13. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi

    Thank you for using our tools!

    We recommend that you take a look at the "Example Integration" - you could create you own menu or window that allows you to build all your versions.
    If you need help, let us know.

    However, your input is very valuable and we plan to do something like you proposed, but it's not a quick&easy task and has to be planned and implemented accordingly (which will need time). So we can't give a promise nor ETA right now.

    I hope this helps you further.


    Cheers
    Stefan
     
    versusco likes this.
  14. versusco

    versusco

    Joined:
    Oct 10, 2014
    Posts:
    4

    Great to know its in active development ;)

    yes we have been doing our own interface on top, but its not as ideal as you guys having it out of box.
    Would love to see that coming. That said, one extra note.

    CLI access to specify witch overriding scriptable asset to be involved would also really help automation.

    Question:
    is the TurboSwitch caches being used for build?
    is the caching includes some of the library folder like, package cache folder?
    how about custom packages are they cached as well?
     
  15. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    It depends on the Unity-version. If you are using 2020 or newer, TurboSwitch no longer caches any data and uses Unity to do the job. Otherwise, you can configure which folders are cached.
     
  16. havokentity

    havokentity

    Joined:
    Sep 25, 2017
    Posts:
    44
    Hello Stefan,

    I'm using TurboBuilder when I cancel a build sometimes, it says Turbo Builder shows a message "Turbo Builder PRO is busy, please wait..." perpetually until I restart the editor.

    Is this a known issue?

    Thanks

    Edit: It's very hard to reproduce. Sorry I may not be of more help.
     
    Last edited: Sep 1, 2022
  17. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi

    I think we found the issue you reported.
    If you like to have access to the updated version, please send us your invoice via email.


    Cheers
    Stefan
     
  18. havokentity

    havokentity

    Joined:
    Sep 25, 2017
    Posts:
    44
    Hi Stefan,

    Thanks! Will just get the update when you guys roll it out on the Unity Asset Store because the problem
    itself is sporadic. I'm having another strange issue though with Turbo Builder pro, when I build with the Build All
    button, the prefabs don't seem to build correctly (I guess wrong UUID's? not sure). Also the build all stopped working with some error saying "Directory not found" when building player exception.

    Never happened before strangely enough.

    Thanks!
     
  19. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hmm, this is strange :(

    First a question regarding the first issue: do you use TB in combination with our Turbo Switch?
    TB itself certainly doesn't interfere with the prefabs - it uses the standard build process from Unity to create builds, so something else must be the reason.

    About the problem with the directory: have you enabled "Add Name To Path", "Add Version To Path" or "Add Date To Path"? If that's the case, what are your values (name, version, date format)? I assume it may contains invalid characters for the path or your project path exceeds more than 255 characters. Apart from that, I can't imagine the reason for the issue.
     
  20. havokentity

    havokentity

    Joined:
    Sep 25, 2017
    Posts:
    44
    Hi Stefan,

    Yeap I use TB and TS in combination I got the full collection together haha. I can't tell if the prefab issue still persists because now it doesn't build the win64 build at all but builds the iOS and Android builds which I haven't tested so far(Btw, it only happens with Fusion Networked Prefabs).

    Would like to confirm that I've not enabled "Add Name To Path", "Add Version To Path" or "Add Date To Path"

    I will investigate further and see if I can find a way to build a project to reproduce the issue.

    Till that time I guess I'll avoid using the Build All feature.

    Thanks
     
  21. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Are you using a newer version of Unity than 2019.4?
    If that's the case, I recommend removing Turbo Switch since you won't gain any switch speed.
    Does that help?
     
  22. havokentity

    havokentity

    Joined:
    Sep 25, 2017
    Posts:
    44
    Am using Unity 2020.3.38f1. I removed Turbo Switch but unfortunately still no dice. :/
     
  23. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Maybe, something is screwed up in the "Library"-folder of your project. I would suggest closing Unity, deleting the folder and let Unity re-import the whole thing.
     
  24. havokentity

    havokentity

    Joined:
    Sep 25, 2017
    Posts:
    44
    Hmm, I thought the same, I've already deleted Library and Temp folders a bunch of times. Tried it again but still no dice
    :(:confused:

    For now since I don't have anymore leads and got some deadlines coming up, I'll just use the regular build option in Unity, hopefully it resolves itself on it's own sometime or maybe you find the bug.

    Thanks !
     
  25. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    That's so strange :( do you see any messages during the build in the console?
     
  26. havokentity

    havokentity

    Joined:
    Sep 25, 2017
    Posts:
    44
    Sorry about the late reply, I thought I had replied. Here's a screen shot of the errors

    upload_2022-9-11_15-54-48.png
     
  27. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Unfortunately, the blacked-out part would be very interesting to me...
    Can you please PM me the path - I won't do anything evil with it :)
     
  28. havokentity

    havokentity

    Joined:
    Sep 25, 2017
    Posts:
    44
    For some reason I couldn't seem to find the PM button lol so I found your discord on your public Unity forum profile and messaged you there
     
  29. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    @Stefan-Laubenberger Can you please help me understand the Before Building and After Building methods?

    I need to execute some pre and post build scripts in order to make Naninovel happy.

    upload_2023-11-1_22-9-6.png

    This is the class in question:

    Code (CSharp):
    1. using UnityEditor;
    2. using UnityEngine;
    3.  
    4. /// <summary>
    5. /// These methods are configured in the TurboBuilderPro methods config.
    6. /// </summary>
    7. public static class NaninovelBuildUtils
    8. {
    9.     public static void BeforeBuilding ()
    10.     {
    11.         Debug.LogWarning("TESTING: BeforeBuilding");
    12.         var options = new UnityEditor.BuildPlayerOptions();
    13.  
    14.         // ReSharper disable once SwitchStatementHandlesSomeKnownEnumValuesWithDefault
    15.         switch (Crosstales.TPB.Builder.CurrentBuildTarget)
    16.         {
    17.             case BuildTarget.StandaloneWindows:
    18.                 options.target = UnityEditor.BuildTarget.StandaloneWindows;
    19.                 break;
    20.             case BuildTarget.StandaloneWindows64:
    21.                 options.target = UnityEditor.BuildTarget.StandaloneWindows64;
    22.                 break;
    23.             case BuildTarget.StandaloneOSX:
    24.                 options.target = UnityEditor.BuildTarget.StandaloneOSX;
    25.                 break;
    26.             default:
    27.                 Debug.LogError("Unidentified build target: " + Crosstales.TPB.Builder.CurrentBuildTarget);
    28.                 return;
    29.         }
    30.         Naninovel.BuildProcessor.PreprocessBuild(options);
    31.     }
    32.     public static void AfterBuilding()
    33.     {
    34.         Naninovel.BuildProcessor.PostprocessBuild();
    35.     }
    36.  
    37. }
    38.  
    As far as I can tell, it does nothing.

    If I change the value of "Before Building" to an incorrect value (any string), it doesn't throw any error.
    The log warning in my utils class is never executed.

    Do you have any suggestions?
     
  30. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    If I hack the appropriate code directly into Builder.cs, it works - just above and below the
    if (!string.IsNullOrEmpty(Config.EXECUTE_METHOD_PRE_BUILDING))
    and
    if (!string.IsNullOrEmpty(Config.EXECUTE_METHOD_POST_BUILDING))
    lines respectively.

    So, for whatever reason, the
    Helper.InvokeMethod
    calls appear to do nothing - and throw no error.
     
  31. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    Actually, scratch that. It starts to build but it crashes Unity:


    Code (CSharp):
    1. #0  0x0000010470c3ec in std::__1::__tree_node_base<void*>*& std::__1::__tree<core::basic_string<char, core::StringStorageDefault<char>>, std::__1::less<core::basic_string<char, core::StringStorageDefault<char>>>, std::__1::allocator<core::basic_string<char, core::StringStorageDefault<char>>>>::__find_equal<core::basic_string<char, core::StringStorageDefault<char>>>(std::__1::__tree_const_iterator<core::basic_string<char, core::StringStorageDefault<char>>, std::__1::__tree_node<core::basic_string<char, core::StringStorageDefault<char>>, void*>*, long>, std::__1::__tree_end_node<std::__1::__tree_node_base<void*>*>*&, std::__1::__tree_node_base<void*>*&, core::basic_string<char, core::StringStorageDefault<char>> const&)
    2. #1  0x0000010643e550 in BuildReporting::ScenesUsingAssets::RegisterScenesUsingAssets(core::hash_map<core::basic_string<char, core::StringStorageDefault<char>>, std::__1::set<core::basic_string<char, core::StringStorageDefault<char>>, std::__1::less<core::basic_string<char, core::StringStorageDefault<char>>>, std::__1::allocator<core::basic_string<char, core::StringStorageDefault<char>>>>, core::hash<core::basic_string<char, core::StringStorageDefault<char>>>, std::__1::equal_to<core::basic_string<char, core::StringStorageDefault<char>>>> const&)
    3. #2  0x0000010643cd60 in BuildReporting::BuildReport::UpdateSummary()
    4. #3  0x00000106bcc4f0 in BuildPlayerData(BuildTargetPlatformGroup, BuildTargetPlatform, int, BuildPlayerOptions, BuildCompression const&, dynamic_array<core::basic_string<char, core::StringStorageDefault<char>>, 0ul> const&, AssetBundleBuildData*, dynamic_array<EditorSceneBackup, 0ul>&, ScriptingObjectPtr, BuildReporting::BuildReport&, core::basic_string<char, core::StringStorageDefault<char>> const&, BuildReporting::BuiltAssetBundleInfo*, core::basic_string<char, core::StringStorageDefault<char>> const&, std::__1::set<PPtr<Prefab>, std::__1::less<PPtr<Prefab>>, std::__1::allocator<PPtr<Prefab>>>&, BuildPlayerSetup const&)
    5. #4  0x00000106bbfeb8 in DoBuildPlayer_Build(BuildPlayerSetup const&, dynamic_array<EditorSceneBackup, 0ul>&, BuildPlayerOptions, BuildTargetPlatformGroup, BuildTargetPlatform, dynamic_array<core::basic_string<char, core::StringStorageDefault<char>>, 0ul> const&, bool, ScriptingObjectPtr&, BuildReporting::BuildReport&, BuildReporting::BuiltAssetBundleInfo*, core::basic_string<char, core::StringStorageDefault<char>> const&)
    6. #5  0x00000106bbe4f4 in DoBuildPlayer(BuildPlayerSetup const&, dynamic_array<EditorSceneBackup, 0ul>&, core::basic_string<char, core::StringStorageDefault<char>>, dynamic_array<core::basic_string<char, core::StringStorageDefault<char>>, 0ul> const&, bool, BuildReporting::BuildReport&, BuildReporting::BuiltAssetBundleInfo*, core::basic_string<char, core::StringStorageDefault<char>> const&)
    7. #6  0x00000106bc4628 in BuildPlayer(BuildPlayerSetup const&, BuildReporting::BuildReport&)
    8. #7  0x0000010459af64 in BuildPipeline_CUSTOM_BuildPlayerInternalNoCheck(ScriptingBackendNativeArrayPtrOpaque*, ScriptingBackendNativeStringPtrOpaque*, ScriptingBackendNativeStringPtrOpaque*, BuildTargetPlatformGroup, BuildTargetPlatform, int, BuildPlayerOptions, ScriptingBackendNativeArrayPtrOpaque*, unsigned char)
    9. #8  0x000003820e1c28 in  (wrapper managed-to-native) UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck (string[],string,string,UnityEditor.BuildTargetGroup,UnityEditor.BuildTarget,int,UnityEditor.BuildOptions,string[],bool) [{0x2e1786988} + 0x138]  (0x3820e1af0 0x3820e1ce0) [0x165102a80 - Unity Child Domain]
    10. #9  0x0000039c49f980 in  UnityEditor.BuildPipeline:BuildPlayerInternal (string[],string,string,UnityEditor.BuildTargetGroup,UnityEditor.BuildTarget,int,UnityEditor.BuildOptions,string[]) [{0x3b39e9898} + 0x290] [/Users/bokken/build/output/unity/unity/Editor/Mono/BuildPipeline.bindings.cs :: 507u] (0x39c49f6f0 0x39c49f9c0) [0x165102a80 - Unity Child Domain]
    11. #10 0x0000039c49ebd0 in  UnityEditor.BuildPipeline:BuildPlayer (string[],string,string,UnityEditor.BuildTargetGroup,UnityEditor.BuildTarget,int,UnityEditor.BuildOptions,string[]) [{0x3b39e9720} + 0x698] [/Users/bokken/build/output/unity/unity/Editor/Mono/BuildPipeline.bindings.cs :: 372u] (0x39c49e538 0x39c49ed14) [0x165102a80 - Unity Child Domain]
    12. #11 0x0000039c49e428 in  UnityEditor.BuildPipeline:BuildPlayer (UnityEditor.BuildPlayerOptions) [{0x3b39e96f8} + 0x130] [/Users/bokken/build/output/unity/unity/Editor/Mono/BuildPipeline.bindings.cs :: 336u] (0x39c49e2f8 0x39c49e468) [0x165102a80 - Unity Child Domain]
    13. #12 0x0000039c49e1e4 in  UnityEditor.BuildPipeline:BuildPlayer (string[],string,UnityEditor.BuildTarget,UnityEditor.BuildOptions) [{0x3b39e96d0} + 0x22c] [/Users/bokken/build/output/unity/unity/Editor/Mono/BuildPipeline.bindings.cs :: 331u] (0x39c49dfb8 0x39c49e228) [0x165102a80 - Unity Child Domain]
    14. #13 0x0000039c49be7c in  Crosstales.TPB.Builder:buildPlayer (UnityEditor.BuildTarget,string,string,string[]) [{0x2e1cf5768} + 0x15b4] [/Users/colinmacleod/Work/luminous-threads/Assets/Plugins/crosstales/TurboBuilder/Scripts/Editor/Builder.cs :: 515u] (0x39c49a8c8 0x39c49c320) [0x165102a80 - Unity Child Domain]
    15. #14 0x0000039c496c28 in  Crosstales.TPB.Builder:build (bool,string,string,string[],string[]) [{0x2e1cf5740} + 0x6e8] [/Users/colinmacleod/Work/luminous-threads/Assets/Plugins/crosstales/TurboBuilder/Scripts/Editor/Builder.cs :: 307u] (0x39c496540 0x39c497824) [0x165102a80 - Unity Child Domain]
    16. #15 0x0000039c49601c in  Crosstales.TPB.Builder:Build (UnityEditor.BuildTarget,string,string,string[]) [{0x2e1cf5560} + 0x124] [/Users/colinmacleod/Work/luminous-threads/Assets/Plugins/crosstales/TurboBuilder/Scripts/Editor/Builder.cs :: 80u] (0x39c495ef8 0x39c496058) [0x165102a80 - Unity Child Domain]
    17. #16 0x0000039c461b08 in  Crosstales.TPB.EditorIntegration.ConfigBase:drawAction (UnityEditor.BuildTarget,UnityEngine.Texture) [{0x3b3e4d0c8} + 0x3b0] [/Users/colinmacleod/Work/luminous-threads/Assets/Plugins/crosstales/TurboBuilder/Scripts/Editor/Integration/ConfigBase.cs :: 1033u] (0x39c461758 0x39c461bb4) [0x165102a80 - Unity Child Domain]
    18. #17 0x0000039c460b6c in  Crosstales.TPB.EditorIntegration.ConfigBase:drawColumnAction () [{0x3b3e4d000} + 0x1ec] [/Users/colinmacleod/Work/luminous-threads/Assets/Plugins/crosstales/TurboBuilder/Scripts/Editor/Integration/ConfigBase.cs :: 933u] (0x39c460980 0x39c4611a0) [0x165102a80 - Unity Child Domain]
    19. #18 0x0000039c45e358 in  Crosstales.TPB.EditorIntegration.ConfigBase:drawContent () [{0x3b3e4d118} + 0x260] [/Users/colinmacleod/Work/luminous-threads/Assets/Plugins/crosstales/TurboBuilder/Scripts/Editor/Integration/ConfigBase.cs :: 1109u] (0x39c45e0f8 0x39c45e3a0) [0x165102a80 - Unity Child Domain]
    20. #19 0x0000039c45a048 in  Crosstales.TPB.EditorIntegration.ConfigBase:showBuild () [{0x3b3e4ce70} + 0x3e8] [/Users/colinmacleod/Work/luminous-threads/Assets/Plugins/crosstales/TurboBuilder/Scripts/Editor/Integration/ConfigBase.cs :: 140u] (0x39c459c60 0x39c45ac24) [0x165102a80 - Unity Child Domain]
    21. #20 0x0000039c4550d4 in  Crosstales.TPB.EditorIntegration.ConfigWindow:OnGUI () [{0x3b3e4cd00} + 0x27c] [/Users/colinmacleod/Work/luminous-threads/Assets/Plugins/crosstales/TurboBuilder/Scripts/Editor/Integration/ConfigWindow.cs :: 64u] (0x39c454e58 0x39c45547c) [0x165102a80 - Unity Child Domain]
    22.  
    UPDATE: looks like this crash is a red herring. Resetting the TPB Pro config causes it to no longer bomb out.

    It seems the
    NaninovelBuildUtils
    code doesn't execute because
    Builder
    can't see it. It was originally in
    Assets/_Project/Editor
    .

    When I move it into an
    Editor
    folder directly under
    Assets/Plugins
    , it works as expected.

    Would it be possible for
    Helper.InvokeMethod
    to throw an error so it's clear when it can't find the method(s)?
     
    Last edited: Nov 2, 2023
  32. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi Colin

    Thank you for reporting this issue and I apologize it gave you some trouble.
    Your input is very valuable and we will fix that in the upcoming version.

    Regards,
    Stefan
     
    Colin_MacLeod likes this.
  33. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    On macOS, can TBP set up separate builds for Apple Silicon and Intel64?
     
  34. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi Colin

    You would have to modify it on your own, please see the "Example Integration" (TPBMenu/TPBWindow) for some example scripts.
    The following code should set the architecture of the build:
    Code (CSharp):
    1. PlayerSettings.SetArchitecture(BuildTargetGroup.Standalone, 2); //the last parameter is the architecture (from 0 to 2)
    I hope this helps you further.


    Cheers
    Stefan
     
  35. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    Thanks for the example; I'll check it out.
     
  36. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    @Stefan-Laubenberger Oh! I didn't know you supported cloud builds.

    I'm using TeamCity CI/CD. Stupid question, but is there a static method I can call to build each target?
     
  37. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi Colin

    You could use the method "Build" from the Builder-class.
    I hope this helps you further.


    Cheers
    Stefan
     
    Colin_MacLeod likes this.
  38. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    That sounds like a good bet :)

    Sorry, I should've read the manual. Was being lazy. Yes, that method won't work directly with TeamCity, as it needs zero params, but I can easily wrap it. TY!
     
  39. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    You could also control it via CLI, which is maybe even easier to use from TeamCity.
    Please see chapter 5 of the documentation:
    https://www.crosstales.com/media/data/assets/TurboBuilder/TurboBuilder-doc.pdf
     
    Colin_MacLeod likes this.
  40. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    Oh nice! Thank you so much for the pointer.
     
    Stefan-Laubenberger likes this.
  41. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    @Stefan-Laubenberger Hey, just wanted to share that I've tried the CLI with TeamCity, and it's fantastic. Love it.

    It's very annoying when you develop an asset with great docs, and then someone doesn't read them! I greatly appreciate your rising above it and taking the time to point me in the direction like that, Stefan.
     
  42. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
  43. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    For now, I've written a wrapper method that calls
    BuildCLI
    .

    Code (CSharp):
    1. Crosstales.TPB.Util.Config.EXECUTE_METHOD_PRE_BUILD = nameof(NaninovelBuildUtils) + "." + nameof(NaninovelBuildUtils.BeforeBuilding);
    2. Crosstales.TPB.Util.Config.EXECUTE_METHOD_POST_BUILD = nameof(NaninovelBuildUtils) + "." + nameof(NaninovelBuildUtils.AfterBuilding);
    3.            
    4. Crosstales.TPB.Builder.BuildCLI();
    5.  
    However, I really would like to be able to set the scenes.

    For dev builds, we include an extra initial scene - I don't want that in the release versions.
    BuildCLI
    calls
    build
    without specifying the scenes but, since
    build
    is private scope, there seems to be no way for me to override this behavior.
     
  44. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hmm, why don't you just call the "Build"-method instead?
     
    Colin_MacLeod likes this.
  45. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    Doh!
     
  46. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    OK - so that method (
    Build
    ) appears to only let you specify one build target at a time.
    I had assumed that using the
    BuildCLI
    command with multiple targets would somehow be more efficient than iterating and running
    Build
    on each one.

    What's the point of
    BuildCLI
    if you need to re-implement it to override the config or change the scenes?

    Build
    also sets
    Constants.KEY_BATCHMODE
    false
    - presumably, I don't want this if I'm running it from CI/CD?
     
  47. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    334
    For now, I'll change the scope of
    build
    to public, and copy/change the implementation of
    BuildCLI
    into my own method.
     
  48. havokentity

    havokentity

    Joined:
    Sep 25, 2017
    Posts:
    44
    Any chance you can add support for FASTbuild to support local network distributed builds?
     
  49. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    Hi

    Thank you for your suggestion!
    We will evaluate it, but it seems to be quite a specific solution that is most likely outside of the scope of our asset.
    Maybe it's easier for you to create some scripts to trigger FASTbuild.


    Cheers
    Stefan
     
  50. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,981
    We've just released version 2024.1.2 of Turbo Builder.
    Main changes:
    • Support for Unity Cloud Build improved
    • Updated to Common 2024.1.1
     
    Last edited: Mar 16, 2024