Search Unity

uTomate - The automation solution for Unity3D!

Discussion in 'Assets and Asset Store' started by kork, Apr 13, 2013.

  1. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    We just implemented these, so these two will be in uTomate 1.3.0.

    That sounds rather strange. Could you give me some more details on which actions you run in which order? Also be aware that the "runInBackground" setting is a shared setting between web player and standalone players, so if you set the web player settings and have this to "false", it will implicitly change the setting for standalone players to "false" as well and vice versa. There is no way around this, as Unity doesn't keep this setting separate for different target platforms.
     
  2. MMO-Studio

    MMO-Studio

    Joined:
    Sep 28, 2012
    Posts:
    4
    just bought it.. can't wait to try it ;)
    figured the fastest n easiest way to build client and multiple server files with one click ;)
     
  3. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    Great, thanks a lot for buying uTomate. Please let us know if we can help you out with your specific automation needs :)
     
  4. realblues

    realblues

    Joined:
    Dec 10, 2010
    Posts:
    10
    This is Good Plug-In.

    but I have a request about path.

    my setting uses "\" instead of "/" and it occurs exception when run StripBasePath() in UIFileUtils.cs.

    I temporary Fixed Code in StripBasePath() :

    basePath = basePath.Replace("\\", "/")

    and it works fine.

    I wish to be fixed better way in official version.
     
  5. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    @realblues, thanks for making us aware of the issue. We'll fix this with the next version of uTomate.
     
  6. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    We have just released uTomate 1.3.0 to the Unity Asset Store! This release contains a lot of new functionality especially for automated modification of scenes and is fully compatible with Unity 4.3!

    Check out our website for more details on this release!

    There is also a 20% discount on uTomate until X-mas 2013! If you are not a uTomate user yet, this is a good time to change this. Get your copy from the Unity asset store!
     
    Last edited: Dec 2, 2013
  7. silentneedle

    silentneedle

    Joined:
    Mar 14, 2013
    Posts:
    280
    Great update, please keep up the good work.
     
  8. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    @silentneedle Thank you very much! Please also let us know if you'd like to see a specific feature in uTomate!
     
  9. EmeralLotus

    EmeralLotus

    Joined:
    Aug 10, 2012
    Posts:
    1,462
    Thanks for the update. Also more tutorials please.
     
  10. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    @rocki, thank you very much for your feedback. We have a few more tutorials in the pipeline, especially about the new scene editing functionality :) Do you have a specific topic that you want to see covered by a tutorial?
     
  11. EmeralLotus

    EmeralLotus

    Joined:
    Aug 10, 2012
    Posts:
    1,462
    @kork,

    To be hones, I'm so new to UTomate that I cannot think of something for now.
    Once I learn enough I can be more specific. At the moment, the more videos you
    put up the quicker I can learn the ins-outs of this great package.
     
  12. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    Hey there! We've released a demo version of uTomate today! You can now try uTomate before you give us your money! Check out our newspost!
     
  13. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    We've updated uTomate to 1.3.2. This version contains several bugfixes and incorporates feedback we got from you. Check the change log at our website.
     
  14. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    Don't have uTomate yet? Starting at 0800 UTC uTomate will be on sale at the Unity asset store - a good day to start automating your projects!
     
  15. KBoyko

    KBoyko

    Joined:
    Nov 27, 2013
    Posts:
    5
    Does anyone know of any resources for sample actions? The ones included with uTomate are great, but I'd love to have access to some other user-created ones instead of writing all new ones.
     
  16. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    Hi @KBoyko , while I am not aware of a uTomate user generated actions repository, is there some specific action that you are missing? We can surely add actions that are missing to the standard distribution :) Just let me know.
     
  17. KBoyko

    KBoyko

    Joined:
    Nov 27, 2013
    Posts:
    5
    It's anecdotal information, but I'm creating custom actions for:
    • Changing texture import settings
    • Moving directories (using move instead of copy/delete to speed up the process)
    • Downloading files
    • Permanently saving a project property
     
  18. gurayg

    gurayg

    Joined:
    Nov 28, 2013
    Posts:
    269
    Perfect timing KBoyko :) I was just about to ask for a similar UTomate actions.

    I was just going to start to write a texture/model import post processor and If I can use Utomate for this purposes, It would be wonderful.
    What I have in mind at the moment is;
    Based on the file name, assets are placed on different directories and import settings are edited.
    If it has "_n" it is set as Normal map, if it has "_2K" it is set to 2048...etc
    And even further It'd be wonderful if we can create a material and assign those textures to its appropriate slots.

    Do you think it is feasible?
     
  19. KBoyko

    KBoyko

    Joined:
    Nov 27, 2013
    Posts:
    5
    @kork, I'm running into an issue with reloading of assemblies. I'm trying to automate some builds and require the Plugins folder to be removed at one point before a build is made. This normally wouldn't work because uTomate locks assembly reloads during execution, but I figured that the Refresh Asset DB action could resolve this. It does not seem to be. Do you have any suggestions?
     
  20. khan-amil

    khan-amil

    Joined:
    Mar 29, 2012
    Posts:
    206
    just ran in a quinda frustrating "bug".
    When using the zip action, I had my "Source folder" ending with a "/", but when comparing with the actual path at line 95 of UTBuildZipFileAction.cs
    Code (CSharp):
    1. var relativePath = UTFileUtils.StripBasePath(UTFileUtils.GetParentPath(file), theBaseDirectory);
    2.                    
    I had an exception because the "GetParentPath(file)" returns a path without ending slashes.

    Now that I know it it's easy to fix, but having mentionned somewhere that we need to end without slashes would have saved me some debugging :/
     
  21. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    @khan-amil thank you very much for bringing this to our attention. We'll fix this in the next release of uTomate!
     
  22. Katarak

    Katarak

    Joined:
    Feb 19, 2013
    Posts:
    13
    does uTomate work on Unity 5?
    normally since it's all scripts it should, however you use Ionic Zip Dll which might not?

    It's on sale now so I was thinking of picking it up to help with our building multiple versions.
     
  23. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    @Katarak - the store version (1.3.5) does not work in Unity 5 out of the box as Unity 5 is still not released and they seem to change the API quite heavily with every beta release. We have a branch of uTomate (uTomate 1.5) which works with Unity5 and which we intend to release as soon as Unity5 is released and their API is stable (see also http://www.ancientlightstudios.com/ancientlight/news/2014/10/30/unity-5-support.html). That being said, we send customers who need Unity 5 support right now a pre-release version of 1.5 if they ask for it. However the pre-release is still beta quality so there might be a few glitches in it and we do not recommend it for production use (which everyone seems to happily ignore ;)).
     
  24. gekidoslair

    gekidoslair

    Joined:
    Sep 7, 2012
    Posts:
    128
    Hi @kork

    I'd be interested in helping to beta test the Unity 5 version of uTomate - I'm working on integrating it into our CI pipeline (using TeamCity) and everything seems to work fine (so far), except for running command-line builds from the CI server, which seems to crash out (exit code 1) in every project I've tried so far.

    Running the plans within Unity 5 (visual / full editor mode) works perfectly fine, so I'm not sure what the problem might be.

    Any ideas would be greatly appreciated. I'd also love to get some more information about how you have integrated Nexus / repository management within uTomate - I've kind of hacked it via nuget / teamcity packing, but requires an extra step (to unzip the nupkg after downloading the dependency). Would love to be able to
     
  25. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    Hi @gekidoslair , you're very much welcome. Just send me your invoice number over to support@ancientlightstudios.com (please don't post in in the forum) and I'll fix you up with the 1.5 beta right away. Are you getting any error messages except the "exit code 1" thing? Is there something in the editor.log?

    Regarding the Nexus stuff: we are simply using the Nexus REST API to upload/download packages to there. It's not a full blown dependency management like maven would do. Is there a specific issue, I can help you with? If you need to unzip something, there is an action for this: http://www.ancientlightstudios.com/utomate/documentation/actiondocs/unzip_zip_file.html.
     
  26. adamhill

    adamhill

    Joined:
    May 30, 2008
    Posts:
    26
    Is the ancientlightstudios website down?
     
  27. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    It should be back up now. We had some issues with our webserver after upgrading some packages to mitigate the LogJam SSL issue.
     
  28. ImpossibleRobert

    ImpossibleRobert

    Joined:
    Oct 10, 2013
    Posts:
    527
    I am trying out uTomate today. For bake nav meshes I constanly get errors. The reason:

    settingsObject.FindProperty("m_BuildSettings.widthInaccuracy");
    settingsObject.FindProperty("m_BuildSettings.heightInaccuracy");

    The lines above will return null in Unity 5.1. I commented them out for now and then it works. Don't know if it's Unity 5.1 specific (and cannot test right now).
     
  29. ImpossibleRobert

    ImpossibleRobert

    Joined:
    Oct 10, 2013
    Posts:
    527
    I found two more things. When baking the navmesh I have to hide some objects first. So I find them by tag, set them inactive, bake and then find them again and set them active again.
    1. Is it possible somehow easily to remember which objects were deactivated and then activate them all at once without going through the tags again? Currently I would also activate objects which were inactive before initially.
    2. The baking action hangs every second time and I need to go to runners and cancel it there which makes it unusable. Baking has finished in the editor though. I suspect this could be due to the fact that when hiding an object the light is rebaked in Unity 5 and this somehow throws the end of action detection of utomate off. How can this be fixed?
     
  30. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    @10FingerArmy: thank you for bringing this to our attention.

    The two lines that were not working were actually an oversight when migrating to Unity 5. I have sent you a fix for this via mail.

    In the simplest case you can just re-use your first list.
    • Find Game Objects by Tag -> stored in property named "byTag"
    • ForEach operation over "byTag" where you deactivate all your objects.
    • Bake Nav Mesh
    • ForEach operation over "byTag" where you re-activate all your objects.
    The list of game objects will be kept for as long as the automation plan is running (or you switch the scene), so there is no need to do another find operation.

    You could also use the "Combine List" action if you have multiple sets of GameObjects that you want to activate/deactivate in one go. I have attached a sample automation plan, showing how to combine two lists of GameObjects. One list was searched for by name, the other one by tag.

    This is a bug in Unity (see http://fogbugz.unity3d.com/default.asp?699420_1utmppr3r3vflhbg). It also affects Unity's built-in GUI not just uTomate's action. Basically we use the same code as Unity's GUI to detect whether or not the bake process has finished (NavMeshBuilder.isRunning). I hope Unity fixes this soon as I see no real workaround for this except maybe running some heuristics against CPU load but I guess we all know how that will end up.
     

    Attached Files:

  31. ImpossibleRobert

    ImpossibleRobert

    Joined:
    Oct 10, 2013
    Posts:
    527
    Thanks for the quick answers. Due to the Unity navmesh bake bug I am still on hold using uTomate. Any news on that frontier?

    I am also wondering a bit. Is this asset still actively developed? There was no update so far for 5.1 and with 5.2 beta that just started again uTomate needs adaptations quickly (and throws on compile error). Also there are many warnings in the console for uTomate using obsolete functionality in 5.1.

    I need to plan my build pipeline and I want to make sure I did not bet on the wrong horse. Please advise.
     
  32. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    @10FingerArmy We have no news from Unity, but we filed quite a few issues in the past which got fixed at some point without us getting any notification, so that isn't neccessarily a bad thing. If it works in the GUI, then it should work in uTomate as well.

    Regarding your other question, yes this asset is still actively developed. We plan to release uTomate 1.5.1 this week, which fixes all issues with Unity 5.1 and comes with a lot of new functionality (I guess we went a bit overboard with the functionality enhancements for a point release and should release more often, will do so next time). If you'd like to skip over Unity's verification process, which usually takes another 3-5 days, just shoot a mail to oursupport containing your invoice number and we'll send you the current version right away.
     
    TurboNuke and ImpossibleRobert like this.
  33. ImpossibleRobert

    ImpossibleRobert

    Joined:
    Oct 10, 2013
    Posts:
    527
    That is really great to hear! I would also second the notion of releasing more often. This is even true for beta versions. It would be really great if uTomate followed quite quickly if a new Unity point release comes out as beta so that there are no compile errors and new checkboxes (if there are any, e.g. in lighting) can be used also in automation.

    Keep up the great work and thanks a lot for all the efforts!
     
  34. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    @10FingerArmy we just got a notification mail from unity that they could reproduce the issue with the navigation mesh baking and that they are handing this over to their developers. so it is probably getting fixed in one of the next releases of unity, though I don't know in which one. I just wanted to let you know.
     
    ImpossibleRobert likes this.
  35. SpectralEdge

    SpectralEdge

    Joined:
    Sep 17, 2012
    Posts:
    33
    Trying to build a DLL and I am not quite sure what to give for the string for the DLLs I want to add as a reference, is it a direct string? I tried doing an expression but it always throws an error. The dll is in the root of my plugins folder "\Plugins\Test.dll"

    I am also not certain what to give to expression that is basically "root project folder, up one level, down in to another project folder". I cant give it the computer path as the team needs to be able to execute the code from their own computer, the projects are using svn..

    The game is quite large, and I am basically splitting it in to different projects which each generate a dll with the necessary files for what it does (Networking, Data Loading, etc) and drops the dll in the main project when it is generated.

    How do I do these two things? (set the dll reference, and get the path)
     
  36. zloty

    zloty

    Joined:
    Mar 11, 2010
    Posts:
    37
    @SpectralEdge the referenced dlls are just paths to the files. You can specify them as plain strings (e.g. /Users/zloty/sub-folders/your.dll on Mac or c:/path-to-the-dll/your.dll on Windows) or use the expression mode to avoid hard-coded paths. See http://www.ancientlightstudios.com/utomate/documentation/actiondocs/5.1/build_dll.html for an example. The expression uses the $project:assets property, to build a path relative to the Assets folder in the current project. But you can also use the $project:root property to get a path to the project folder itself (see http://www.ancientlightstudios.com/utomate/documentation/manual.html#runtimeproperties for more information).

    This is also the solution for your second question. The expression $project:root + "/../demo" would create a path to the demo directory that is in the same directory as your project folder.

    Please note to always specify paths with slashes (/) even on windows. uTomate will handle the conversion if necessary.
     
  37. SpectralEdge

    SpectralEdge

    Joined:
    Sep 17, 2012
    Posts:
    33
    That is great for going DOWN a folder from the $project:root, I need to go UP one more folder, and then back down inside the other folder, that is what I can't figure out.

    Figured out the second part, I was just doing it wrong. Just need to know how to go up and back down now.
     
  38. zloty

    zloty

    Joined:
    Mar 11, 2010
    Posts:
    37
    $project:root + "/../demo" should do this.

    assume we have the following file structure
    • Documents
      • devel
        • demo
        • theProject
    So the demo folder is a sibling of your project folder. The expression $project:root + "/../demo" will be evaluated to something like "/Documents/devel/theProject/../demo" and will always select the demo folder right next to your project folder.
     
  39. SpectralEdge

    SpectralEdge

    Joined:
    Sep 17, 2012
    Posts:
    33
    Ahhh, I see, so /../ is what makes it go up, I didn't understand. Thanks.
     
  40. SpectralEdge

    SpectralEdge

    Joined:
    Sep 17, 2012
    Posts:
    33
    This asset is fab and saving me so much time. Thanks for your help.

    One of the actions I wish came with the asset, is taking a selection of game objects from the scene after selecting them and saving them to a prefab.
     
  41. zloty

    zloty

    Joined:
    Mar 11, 2010
    Posts:
    37
    We are glad to hear, that you like our asset. :)

    As far as i understand you want to select an object in the scene hierarchy (by hand, or with another action in the same automation plan?) and the new action should convert this object into a prefab. In this case just drag/drop the object in a project folder to convert it into a prefab (this is feature provided by unity). But i'm quite sure you already know this. So there must be a special use-case why such an action would be helpful.

    Can you give us a few more details, why you need such an action? What are the use cases?

    Thanks
     
  42. SpectralEdge

    SpectralEdge

    Joined:
    Sep 17, 2012
    Posts:
    33
    I would like to use it as part of the automation.

    As far as use, imagine you have two projects, when someone is working on the interface they have prefabs for each of the items they are working on and they make the nice little interface work.

    Now when I want it in the primary project I want the whole thing as one prefab. I am saving the gui as a single prefab so it can be saved to the main project, the problem is they dont want to do this while working on the gui because they want all the parts to remain connected to their respective prefab (so if they edit one button prefab it fixes all of them), once they drag the whole tree out to create a prefab for the whole tree, they lose the individual prefab connections.

    So, what I would like, is to make a utomate action which creates a prefab for them and puts it in the main project folder (not their current one) and leaves their working separate prefab connections alone.
     
  43. zloty

    zloty

    Joined:
    Mar 11, 2010
    Posts:
    37
    thanks for the information.

    It might be possible if the action first duplicates the object and then uses the PrefabUtility class to create a new prefab. Duplicating the object is probably required to keep the prefab references of the original objects. Now it should be possible to export the prefab (as an unitypackage via ExportUnityPackage action). Export might be necessary to include all dependencies too. After these steps the object can be deleted again (via DeleteGameObject action).

    Now import the package into your main project and use the prefab in your scenes.

    I don't know what happens if you export the same prefab again and overwrite it in your main project. Either it will reconnect the objects in your scene with the new prefab version or it will import it as a new prefab and the links in your existing scene objects are broken.

    If you need help implementing this action just send us a support ticket with your invoice number. http://www.ancientlightstudios.com/utomate/support/support.html
     
  44. silentneedle

    silentneedle

    Joined:
    Mar 14, 2013
    Posts:
    280
    Anyone else gets unity crashes when building asset bundles with Unity 5.2.2f1?
     
  45. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    @silentneedle I can't reproduce a crash when building asset bundles with Unity 5.2.2.f1, so if you're getting crashes it might be specific to your project/settings/bundles. In general, crashes indicate a Unity bug as Unity shouldn't crash when you just call a function. Then again there might be a workaround. If you could produce a minimum example which yields the crash we could investigate further.
     
  46. crafTDev

    crafTDev

    Joined:
    Nov 5, 2008
    Posts:
    1,820
    Hello,

    Unity 5.3 breaks a whole lot of stuff. Could you take a look and fix ASAP please?

    Thanks,
    jrDev
     
  47. kork

    kork

    Joined:
    Jul 14, 2009
    Posts:
    280
    We're about to submit an update to the asset store. It may still take a week to get published because of the store vetting process. If you need the update ASAP please contact our support and include your invoice number. We'll send you the update via mail then.
     
  48. crafTDev

    crafTDev

    Joined:
    Nov 5, 2008
    Posts:
    1,820
    Email Sent.

    Thanks,
    jrDev
     
  49. docsavage

    docsavage

    Joined:
    Jun 20, 2014
    Posts:
    1,021
    Hi @kork

    Just getting back into needing uTomate. Still think it's great. I have been testing out the 'Build Unity Player' action. 3 Quick questions though.

    1. There is a header stating unity pro is needed for this feature but it does appear to work for me in unity 5.3.1p1. Is this mainly aimed at unity 4 users?

    2. Can see redundant windows 8 target platform option but cannot see 8.1 - does it exist anywhere or is it part of another option in the drop down?

    3. Any plans to add windows 10 universal to the action?

    Thanks again.

    belated Happy Christmas by the way!

    doc
     
  50. fizzd

    fizzd

    Joined:
    Jul 30, 2013
    Posts:
    21
    Hey @kork

    Is it possible to automate adding lines of code to a file, and duplicating files?

    Basically in my game, every level is its own class. So I want to duplicate Level1.cs to Level2.cs, then add a references to the newly created class in LevelSelector.cs which looks like:

    public enum LevelName
    {
    Level_Lean,
    Level_Intimate,
    Level_OrientalDubstep,
    //add new enum here
    }


    and


    public static Levels GetLevelFromEnum(LevelNameln)
    {
    switch(ln)
    {
    case LevelName.Level_Intimate:
    return new Level_Intimate();


    case LevelName.Level_Lean:
    return new Level_Lean();


    case LevelName.Level_OrientalDubstep:
    return new Level_Barbra();

    case Level //add new enum here :
    return new //add new class here
    }

    Is such a thing possible?