Search Unity

  1. Click here to see what's on sale for the "Best of Super Sale" on the Asset Store
    Dismiss Notice
  2. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

[RELEASED] RockTomate - Automate repetitive tasks in Unity

Discussion in 'Assets and Asset Store' started by elmar1028, Jan 22, 2020.

  1. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi Elmar,

    Great job. It really nice to hear that.

    Best regards,
    Ian
     
    elmar1028 likes this.
  2. Recon03

    Recon03

    Joined:
    Aug 5, 2013
    Posts:
    477

    Handle this with version control or your server. ( if not set one up)
     
  3. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi Elmar,

    I have a confusion about RunJobStep. The outfield IsSuccess seems always true whether the job is end with failed or not. Of course I can put variable in executed job's all steps output field IsSuccess. But it still not easy to use.

    Regards,

    Ian
     
  4. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    Hi Ian,

    Sorry for the delayed response.

    I was able to reproduce the bug, which I am now investigating. I will keep you posted.

    Kind regards,

    Elmar
     
  5. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    Hi @Ian-Lai,

    Hope you're well.

    The bug when Run Job step always succeeds has been fixed. It will be included in an upcoming 1.0.3 release, which should be live on the Asset Store this week (depending on the review times).

    Please let me know if you'd like the fixed version now and I will send it to you privately.

    Kind regards,

    Elmar
     
  6. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi Elmar,

    I'd like to have it earlier. Thanks for your update.

    Kind regards,

    Ian
     
  7. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    Sent.

    Elmar
     
  8. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    An upcoming 1.0.3 update will feature a revamped Job Session Console window with more relevant error reporting and improved readability, making it much easier to spot errors and warnings.

    upload_2020-5-20_23-13-9.png
     
    TonyLi likes this.
  9. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    Another upcoming feature is being able to run only a single step. Now you can quickly test individual steps to make sure they're working without having to run the entire Job.

    run_this_step_demo.gif
     
    TonyLi and opsive like this.
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,853
    Very useful feature. I'll probably use it quite a lot.
     
  11. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    RockTomate Release Notes 1.0.3

    Update History

    Warning: Due to the changes in the project hierarchy, the current version of RockTomate must be removed before the new one could be imported.

    Your existing jobs will be unaffected.
    Changes & Improvements

    General

    • [Job Editor] Can now run a single Step
    • RockTomate settings are now stored in "ProjectSettings" directory
    • Can now copy job variable values to the clipboard (evaluates formulas as well)
    • [Step Browser] All categories are now sorted in alphabetical order
    • Added additional user settings in the "Preferences" window
    • Job Session Log has been renamed to "Job Session Console"
    • [Job Session Console] Can now sort log entries by Type
    • [Job Session Console] Log entries are now colour-coded by type to be easily identifiable
    • [Job Session Console] Removed unusable expand all/collapse all buttons
    • [Job Session Console] Can now clear console window
    • Printed log entries give more information regarding the failed jobs
    • RockTomate related log entries are automatically printed out if Unity is running in Batch Mode
    • Added an option to clear cache directory and log entries (available in
      Tools > RockTomate > Utils > Clear
      menu option)
    Root Variables
    • Added:
      %UnityDir%
    • Added:
      %IsTempProject%
    • Added:
      %AppVersion%
    • Added:
      %IsBuilding%
    • Added:
      %IsCompiling%
    • Added:
      %TimeSinceStartup%

    Macros

    • Added:
      trim()
    • Added:
      starts_with()
    • Added:
      ends_with()
    Steps
    • New Plugin Integration: Bakery GPU Lightmapper
    • Added: Print List
    • Added: Copy Asset
    • Added: Delete Asset
    • Added: Create ScriptableObject Asset
    • Added: Comment
    • [Print] Now prints to Unity Console by default
    • [Print] Added an option to print to Job Session Console (disabled by default)

    Bug Fixes

    General
    • [Job Session Console] Fixed a bug when would sometimes throw exceptions
    • [Variable Bank Editor] Fixed a bug when changes wouldn't be saved when the window is closed
    • [Variable Bank Editor] Fixed a bug when Variable Banks created in newer Unity versions would throw null reference exceptions in older Unity versions
    • Fixed a bug when creating a variable bank in the "External Tab" would break Run Job's TargetJob Field
    • Fixed a bug when whitespace at the end of formula input would skip the formula evaluation stage
    • Fixed a bug when nested macros would sometimes fail
    • Fixed a bug when formulas like
      split("Hello, world", ',')
      wouldn't parse
    • Fixed a bug when duplicated Job and the original Job would share the same Id, causing errors down the line
    • Fixed a bug when custom step drawers wouldn't be utilized

    Steps

    • [Compile DLL] Fixed issues when trying to compile scripts in Unity 2019.3 or later
    • [Run Job Step] Fixed a bug when step wouldn't fail if nested Job fails
    • [Run Job Step] Fixed a bug when duplication of this step would throw an error
    • [Run Job Step] Fixed a bug when exceptions would be thrown for nested Jobs with loop-able steps (e.g. Loop, Repeat etc.)
    • [Run Job Step] Fixed a bug when nested Job would continue execution even after parent Job execution has been interrupted
     
    Last edited: May 21, 2020
    opsive likes this.
  12. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    Hi Elmar

    I've updated version to 1.0.3 and noticed there's something strange about CompileDll step.

    In previous version, I can use .net 3.5 in my unity player settings and the result file would look like this.

    Image 1.png

    But in this version, I can only use .net 4.x in my unity player settings. And the result file will show warning message like below.
    Image 2.png

    The error message when I use .net 3.5 in this version.


    09/06/2020 16:00:05.128 | ERROR | Step "Compile DLL" at ROW 2: (0,0) : error :
    09/06/2020 16:00:05.129 | ERROR | Step "Compile DLL" at ROW 2: (0,0) : error : at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
    09/06/2020 16:00:05.129 | ERROR | Step "Compile DLL" at ROW 2: (0,0) : error : at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0
    09/06/2020 16:00:05.129 | ERROR | Step "Compile DLL" at ROW 2: (0,0) : error : at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0
    09/06/2020 16:00:05.129 | ERROR | Step "Compile DLL" at ROW 2: (0,0) : error : at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0
    09/06/2020 16:00:05.129 | ERROR | Step "Compile DLL" at ROW 2: (0,0) : error : at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0
    09/06/2020 16:00:05.129 | ERROR | Step "Compile DLL" at ROW 2: (0,0) : error : at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0
    09/06/2020 16:00:05.129 | ERROR | Step "Compile DLL" at ROW 2: (0,0) : error : at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0
    09/06/2020 16:00:05.129 | ERROR | Step "Compile DLL" at ROW 2: (0,0) : error : at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0
     
  13. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    Hi Ian,

    I can't seem to reproduce the issue. What version of Unity are you using? Would it be possible if you could reproduce this on a smaller scale and privately send me the Job file?

    Thank you,

    Elmar
     
  14. Ian-Lai

    Ian-Lai

    Joined:
    Jul 31, 2019
    Posts:
    15
    I'm not sure this problem has fixed or not.

    After importing Rocktomate package, I delete sample job files and create variable bank file. When I press (+) button to add variable. It shows NULL in editor window. It also shows a NullReferenceException like below when I try to fix it. But if I create a job file first, It works fine.


    NullReferenceException: Object reference not set to an instance of an object
    HardCodeLab.RockTomate.Editor.Controls.VariableTreeElement.set_FieldName (System.String value) (at Assets/RockTomate/Scripts/Editor/Controls/TreeViews/Variables/VariableTreeElement.cs:41)
    HardCodeLab.RockTomate.Editor.Controls.VariablesTreeView.RenameEnded (UnityEditor.IMGUI.Controls.TreeView+RenameEndedArgs args) (at Assets/RockTomate/Scripts/Editor/Controls/TreeViews/Variables/VariablesTreeView.cs:222)
    UnityEditor.IMGUI.Controls.TreeView+TreeViewControlGUI.RenameEnded () (at C:/buildslave/unity/build/Editor/Mono/GUI/TreeView/TreeViewControl/TreeViewControlGUI.cs:224)
    UnityEditor.IMGUI.Controls.TreeViewGUI.EndRename () (at C:/buildslave/unity/build/Editor/Mono/GUI/TreeView/TreeViewGUI.cs:441)
    UnityEditor.IMGUI.Controls.TreeViewGUI.DoRenameOverlay () (at C:/buildslave/unity/build/Editor/Mono/GUI/TreeView/TreeViewGUI.cs:451)
    UnityEditor.IMGUI.Controls.TreeViewGUI.BeginRowGUI () (at C:/buildslave/unity/build/Editor/Mono/GUI/TreeView/TreeViewGUI.cs:178)
    UnityEditor.IMGUI.Controls.TreeView+TreeViewControlGUI.BeginRowGUI () (at C:/buildslave/unity/build/Editor/Mono/GUI/TreeView/TreeViewControl/TreeViewControlGUI.cs:196)
    UnityEditor.IMGUI.Controls.TreeViewController.OnGUI (UnityEngine.Rect rect, System.Int32 keyboardControlID) (at C:/buildslave/unity/build/Editor/Mono/GUI/TreeView/TreeViewController.cs:585)
    UnityEditor.IMGUI.Controls.TreeView.TreeViewWithMultiColumnHeader (UnityEngine.Rect rect) (at C:/buildslave/unity/build/Editor/Mono/GUI/TreeView/TreeViewControl/TreeViewControl.cs:438)
    UnityEditor.IMGUI.Controls.TreeView.OnGUI (UnityEngine.Rect rect) (at C:/buildslave/unity/build/Editor/Mono/GUI/TreeView/TreeViewControl/TreeViewControl.cs:412)
    HardCodeLab.RockTomate.Editor.Windows.VariableBankEditorWindow.RenderVariableTreeView () (at Assets/RockTomate/Scripts/Editor/Windows/VariableBankEditorWindow.cs:146)
    HardCodeLab.RockTomate.Editor.Windows.VariableBankEditorWindow.OnGUI () (at Assets/RockTomate/Scripts/Editor/Windows/VariableBankEditorWindow.cs:125)
    System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <df7127ba07dc446d9f5831a0ec7b1d63>:0)
    Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
    System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <df7127ba07dc446d9f5831a0ec7b1d63>:0)
    System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <df7127ba07dc446d9f5831a0ec7b1d63>:0)
    UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:342)
    UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:336)
    UnityEditor.HostView.OldOnGUI () (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:129)
    UnityEngine.Experimental.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:266)
    UnityEngine.Experimental.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:438)
    UnityEngine.Experimental.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:421)
    UnityEngine.Experimental.UIElements.IMGUIContainer.HandleEvent (UnityEngine.Experimental.UIElements.EventBase evt) (at C:/buildslave/unity/build/Modules/UIElements/IMGUIContainer.cs:401)
    UnityEngine.Experimental.UIElements.EventDispatcher.PropagateEvent (UnityEngine.Experimental.UIElements.EventBase evt) (at C:/buildslave/unity/build/Modules/UIElements/EventDispatcher.cs:754)
    UnityEngine.Experimental.UIElements.EventDispatcher.ProcessEvent (UnityEngine.Experimental.UIElements.EventBase evt, UnityEngine.Experimental.UIElements.IPanel panel) (at C:/buildslave/unity/build/Modules/UIElements/EventDispatcher.cs:599)
    UnityEngine.Experimental.UIElements.EventDispatcher.Dispatch (UnityEngine.Experimental.UIElements.EventBase evt, UnityEngine.Experimental.UIElements.IPanel panel, UnityEngine.Experimental.UIElements.DispatchMode dispatchMode) (at C:/buildslave/unity/build/Modules/UIElements/EventDispatcher.cs:307)
    UnityEngine.Experimental.UIElements.BaseVisualElementPanel.SendEvent (UnityEngine.Experimental.UIElements.EventBase e, UnityEngine.Experimental.UIElements.DispatchMode dispatchMode) (at C:/buildslave/unity/build/Modules/UIElements/Panel.cs:176)
    UnityEngine.Experimental.UIElements.UIElementsUtility.DoDispatch (UnityEngine.Experimental.UIElements.BaseVisualElementPanel panel) (at C:/buildslave/unity/build/Modules/UIElements/UIElementsUtility.cs:245)
    UnityEngine.Experimental.UIElements.UIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at C:/buildslave/unity/build/Modules/UIElements/UIElementsUtility.cs:68)
    UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at C:/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:179)
     
  15. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    Hi @Ian-Lai,

    That's a new one. I have fixed it and sent you the fix in the PM.

    The fix will be available in the next public release. If anyone else is affected by it, please message me privately with your invoice number and I will send it over.

    Elmar
     
  16. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    Hi all! Hope you are all well!

    After several months of hard work, I am proud to announce the release of version 1.1.0!


    Full Changelog

    Changes & Improvements

    Event Manager

    This update brings a brand new feature to RockTomate - Event Manager!

    upload_2020-9-30_19-42-1.png

    It's a separate system that lets you configure RockTomate to run whenever certain events are triggered (e.g. new asset has been imported or project finished building). This lets you create your own automated workflows without even having to worry about running RockTomate jobs.


    Persistent Variables


    By default, RockTomate doesn't store modified variable values after job execution. This was done to ensure that jobs will run as predicted. However, this limited some users from being able to store simple data that was needed to stay persistent.

    Starting from version 1.1.0, you can now specify if you want variable values to persist between job executions.

    variables-persistent-variables-demo.gif


    Quickly jump between Jobs

    Job Editor Window now remembers the last 5 jobs you've been working on, allowing to quickly jump between them. The number of remembered jobs can be changed in the Preferences window. This QoL feature will make it easier to work with multiple jobs at once.

    jumping_between_jobs.gif

    String Interpolation in Formulas

    If you've been heavily relying on formulas in your workflows, you would know that you can only have 1 root macro per formula (excluding nested macro calls). Starting from 1.1, you can now have multiple macro calls in a single formula spliced together.

    For example:
    2 plus 2 equals {sum(2,2)}


    Would evaluate to:
    2 plus 2 equals 4


    This update took a while, but I hope you'll enjoy it as much as I enjoyed working on it :D
     
    opsive likes this.
  17. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    Reminder that RockTomate sale ends in 3 days!
     
  18. Jakub_Machowski

    Jakub_Machowski

    Joined:
    Mar 19, 2013
    Posts:
    420
    Hello I'm not programmer but working a lot in Playmaker, Is Your software something similar in workflow (but for editor) is there a list of already created actions for RockTomate?
     
  19. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    Hi @Jakub_Machowski,

    There is a wiki page dedicated to all currently existing actions (known as steps) here.

    May I ask what would you like to achieve with RockTomate?

    Kind regards,

    Elmar
     
  20. Jakub_Machowski

    Jakub_Machowski

    Joined:
    Mar 19, 2013
    Posts:
    420
    We are looking for an asset that Will allow us to prepare some In Editor Tools but without programming, like We can do With playmaker but playmaker works only in playmode. So basically more actions library is available better for us. If I may as what is difference beeteen Your RockTomate and for example Monkey available on asset store too https://assetstore.unity.com/packages/tools/utilities/monkey-productivity-commands-119938 We didnt choose their asset cause its more like making batching process that simillar to playmaker workflow :) This is Why I'm asking here
     
  21. elmar1028

    elmar1028

    Joined:
    Nov 21, 2013
    Posts:
    2,323
    I never used MonKey, but from their store page description, it seems that they specialize in smaller-scale actions at a click of shortcuts (e.g. Open Scene).

    RockTomate can do smaller-scale actions, as well as chaining those actions together, also allowing you to pass parameters in the process, which lets you create large workflows. In this example, I use RockTomate to compile, test and publish my existing products (RockTomate included) to the Asset Store.

    I've written a guide on how automated tasks (called Jobs) can be created in RockTomate here.

    And, of course, if there's is an action that you'd love to see in RockTomate, I will add it :)
     
  22. Jakub_Machowski

    Jakub_Machowski

    Joined:
    Mar 19, 2013
    Posts:
    420
    Thanks for Info :) We will check out it and make decission
     
unityunity