Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Hdg Remote Debug - Live update / inspector for your phone!

Discussion in 'Assets and Asset Store' started by samizzo, Apr 22, 2016.

  1. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hdg Remote Debug is now available on the asset store! Get it here http://u3d.as/sHr



    Hdg Remote Debug is a live update and debug tool for Unity 3D that lets you inspect the GameObjects, components, and serialized fields in your game after it has been deployed onto a device. It is an alternative to the Unity Remote that actually works! You can tweak fields on the live build while sitting in the Unity editor, and it's great for quickly iterating on settings like UI layout and touch controls.

    This tool is a great time saver when you want to tweak things on the device without having to go through the rebuild and redeploy cycle (which is particularly slow on iOS and HoloLens). It's also a great help when debugging device-specific bugs.

    Features
    • Simple to use.
    • Runs on most platforms that Unity supports (tested extensively in the Mac and Windows editor, and with Android, iPhone, and Windows 10 (UWP) devices).
    • Works with micro mscorlib!
    • Iterate on touch controls on the device.
    • Works with Unity free or Pro.

    Workflow

    • Drop the provided prefab into your scene.
    • Build and deploy to your device.
    • Bring up the Hdg Remote Debug window by clicking on "Window > Hdg Remote Debug".
    • Click the "Active Player" button and your device should appear in the list.
    • Select it and profit!







    More information is available on our web site here:
    http://www.horsedrawngames.com/remote-debug-live-update-of-unity-builds-on-device

    Trello roadmap: https://trello.com/b/TSDsEbrA/hdg-remote-debug-roadmap

    Hdg Remote Debug is available in the Asset Store now for $60. Get it here: http://u3d.as/sHr!
     
    Last edited: Aug 8, 2016
    Gekigengar and lestavergen like this.
  2. obelisk

    obelisk

    Joined:
    May 18, 2013
    Posts:
    1
    This looks amazing! What a sweet time saver, and platform agnostic too! When will this be available? I WAN'T IT NOW!
     
    samizzo likes this.
  3. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Thanks for the enthusiasm! I'm working on submitting it to the asset store right now, so hopefully in a week or two depending on turnaround.
     
  4. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    I've posted some more information about how Hdg Remote Debug works on our blog here!
     
  5. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hdg Remote Debug is now available in the Asset Store for a special half-price discount of $25 for the next two weeks! Get it here http://u3d.as/sHr.
     
  6. imgodot

    imgodot

    Joined:
    Nov 29, 2013
    Posts:
    212
    Can Hdg Remote be used for debugging a client EXE in a multiplayer game running on one PC?
    Example: I have a multiplayer game and am running the host for player#1 in the Unity editor.
    The client is running on a compiled version of the EXE for player #2.
    Can Hdg Remote connect to the client EXE so I can see what's going on in the client in real-time?

    Thanks.
     
  7. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Yes you can do that! You can place the Hdg Remote Debug server component in your game, build out to exe, then run. Then in the Unity editor, disable the Hdg Remote Debug server component before you run it in the editor.

    You have to disable the component in the editor because you can't have two debug server components running on the one machine because they would both try to listen on the same TCP port which is not allowed. I want to fix this by assigning a randomised port but I'm not sure how high priority this is because typically you wouldn't be running multiple copies on one machine. But it sounds like your type of use case would benefit (e.g. if you ran more than two clients on the one machine).

    Hope that makes sense, and thanks for your interest!
     
  8. imgodot

    imgodot

    Joined:
    Nov 29, 2013
    Posts:
    212
    samizzo,
    Does Hdg Remote have the capability to show the values from custom lists (e.g. a list of classes)?
    How about arrays?

    Thanks.
    -- Paul
     
  9. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    If Unity can show it in its own inspector, then it should also show up in Hdg Remote Debug. That means that as long as your class is serialisable it should work. Actually I think there might be a bug where the `List` type is currently not working, but arrays work. `List` was working at one stage, so I need to investigate that; I think I broke it somewhere along the line!

    - Sam
     
  10. imgodot

    imgodot

    Joined:
    Nov 29, 2013
    Posts:
    212
    Sam,
    The lists I would want to display require a custom inspector in Unity.
    Based on your response, Hdg Remote would not work with lists that require a custom inspector, correct?

    Thanks.
    -- Paul
     
  11. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    That's right, unfortunately we can't show custom inspectors. The class would just appear as a set of fields, just like it would in the Unity inspector if there were no custom inspector.
     
  12. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Just a reminder that the price of Hdg Remote Debug will be going up to $50 on Friday! Get in quick before the launch pricing special ends!

    We've also got some great new features planned, like the ability to run methods on a component from the Hdg Remote Debug inspector. More details soon!
     
  13. imgodot

    imgodot

    Joined:
    Nov 29, 2013
    Posts:
    212
    Sam,
    It seems like a great product, but I typically spend the majority of my debugging time on edge cases with lists of classes.
    If you ever add the ability to display a list of classes, I'll buy it in a hot dang minute!
    -- Paul
     
    samizzo likes this.
  14. pixelsteam

    pixelsteam

    Joined:
    May 1, 2009
    Posts:
    924
    Can UI modification be seen with this asset.
     
  15. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Yep you can change many of the built-in Unity UI elements!

    I'm leaving it at the discounted price for the moment, possibly for another week, while I fix some bugs for the next release!

    - Sam
     
  16. athibodeau

    athibodeau

    Joined:
    Feb 10, 2014
    Posts:
    3
    This tool will be very useful for profiling: rebuilding a large game to test a small modification is a huge waste of time. May I suggest that you add the following features in a future iteration of your tool?
    • Multiple Selection: When profiling, one may want to disable multiple GameObjects or components at once. This would also be useful to modify settings on multiple components.
    • DontDestroyOnLoad: Although this has been (unofficially?) deprecated, this is still used a lot. Generally, this is used on managers (that have crucial settings that we might want to modify).* These objects should be inspectable.
    • Multi Scene: GameObjects in other loaded scenes (ex: additively loaded scenes) should be inspectable too.

    *When DontDestroyOnLoad is applied on a GameObject, it is moved to a special scene that cannot be queried directly through the SceneManager. A workaround to get the scene, consists to move a given GameObject (ex: kind of singleton) to this scene by calling DontDestroyOnLoad on it. Then, you can use the scene property of the GameObject to get the DontDestroyOnLoad scene. From there, you can query the other GameObjects of that scene with GetRootGameObjects and loop through their children.
     
    Last edited: Jun 15, 2016
  17. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Thanks for the suggestions! I like the DontDestroyOnLoad idea, that's a nice workaround. I'm working on some bug fixes at the moment to do with lists of user-defined structs. I'm hoping to release an update late this week, then I can look into some enhancements!
     
  18. ldhongen1990

    ldhongen1990

    Joined:
    Dec 18, 2015
    Posts:
    61
    ADB Support will be nice, much like Unity Profiler, my office wifi is unreliable most of the time
     
  19. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hey that's cool, I didn't know the Unity profiler supported a connection over ADB. Looking at the Unity profiler docs it looks like it's just some adb command-line settings to forward a network connection over the ADB connection so it might not require me to make any code changes. I'll look into it. Thanks!
     
  20. ldhongen1990

    ldhongen1990

    Joined:
    Dec 18, 2015
    Posts:
    61

    I did some ADB forwarding but it didn't seem to detect my device, let me know if you have a successful solution, really love to have solid low latency wired connection
     
  21. Inspeinre

    Inspeinre

    Joined:
    Jun 15, 2013
    Posts:
    44
    Hey, whether the sources are available?
     
  22. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hey,

    Sorry, the sources are not currently available. I am going to be putting them up on the asset store soon as a "pro" package for a price but it's going to be kind of pricey ($400 - $500 - it's mostly because I've been contacted by some larger businesses who say they want source to anything they use in case the seller disappears).

    I will be building some extensibility features into the tool in the future so end-users can hook into some things, like providing a custom console that you can control from Unity and run commands on the device etc.

    Thanks,
    Sam
     
  23. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hey @ldhongen1990, the port forwarding is actually working, but you can't see the game because you can't forward udp over the cable. Hdg Remote Debug use udp to discover instances on the local network. I think I'll add a manual connection option, so you can set up the forward with adb and then in the tool you can enter a manual address to connect to. I want to do an update with a couple of bug fixes so I'll try to get that in as well in the next week.
     
  24. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    I've uploaded some new documentation here: http://www.horsedrawngames.com/RemoteDebug/ Those docs will also be available in the next update.

    I thought I'd also call attention to the "Remote method triggering" feature which I think I forgot to mention in the current documentation (it's in the new docs linked above though). This feature lets you mark up a method with an attribute, and that method will appear in the tool as a button. Clicking the button will execute the method in the game. So like this:

    Code (csharp):
    1.     [Hdg.Button]
    2.     public void RunMe()
    3.     {
    4.         Debug.Log("Hello, World!");
    5.     }
    Currently the method can't take any arguments, but I hope to extend the feature to allow passing in arguments.
     
  25. ldhongen1990

    ldhongen1990

    Joined:
    Dec 18, 2015
    Posts:
    61
    Awesome! Amazing! Beautiful! Delicious!
     
  26. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Just as an update - I've sent off builds to some beta testers. Hopefully I get the all OK from them and I can then submit to the store by the end of the week. Coming in this update will be UWP support, lots of misc bug fixes, and an ability to manually connect to an IP address (so you can use ADB @Idhongen1990!).

    Sorry it's taken a while to get this update out. I've had a bunch of other contract work on that made it hard to find the time!
     
  27. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    I've just uploaded a new build to the asset store, so hopefully it should be up and and available in the next week. The price has now been raised to US$60.

    This new build contains quite a few bug fixes and some significant improvements:
    • Support for UWP platforms (e.g. Microsoft Windows Phone and HoloLens).
    • Support for connecting to a custom IP address, so you can use ADB port forwarding to connect over a USB connection to an Android device.
    • Support for serialising arrays of structs.
    I'll post an update when the package has been approved in the asset store!
     
  28. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hdg Remote Debug v2.0.3251 is live now on the asset store! You can get it here!
     
  29. Dan2013

    Dan2013

    Joined:
    May 24, 2013
    Posts:
    200
    @samizzo
    Looks cool.
    When I modified attribute values of my GameObjects, how I can save these modified results?
     
  30. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Thanks @Dan2013! At the moment you can't apply the modified values, but that feature is on the roadmap. I'm not exactly sure how it would work because the current scene in the editor might not match the scene in the game. I think as an initial step I might just have a button to save the values to a text file while I work on finding a way to apply to the objects in the editor.
     
    Dan2013 likes this.
  31. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    I've just released a version which is compatible with Unity 4.6.8 to Unity 5.3.1! Unfortunately there are some limitations in it due to a lack of certain API features in those versions of Unity. There is no way to access all the root GameObjects in a scene, and the only way to get all GameObjects is by using Resources.FindObjectsOfTypeAll. Unfortunately this also returns prefabs in the Assets folder and I haven't been able to figure out a way to filter this out.

    The workaround that Hdg Remote Debug implements is to check their activeInHierarchy flag; this is false for prefabs in the Assets folder. This also means that any objects that are disabled will not show up. There is a button in the toolbar called "Show disabled objects" which will show those disabled objects. Be warned however that this will also show the prefabs in the Assets folder, which could be quite a lot depending on your project.

    You can get Hdg Remote Debug from the asset store here!
     
  32. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    I've recently added support for additively loaded scenes and DontDestroyOnLoad objects (previously only GameObjects from the main active scene would be shown). Once I've improved the UI to look more like Unity's hierarchy multi-scene editing in the hierarchy view I'll be pushing out a new release! Hopefully that will be coming in the next two weeks.
     
  33. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Just submitted a new build to the asset store which includes:
    • Support for additively loaded scenes.
    • Turning off automatic refresh (for scenes that have thousands of GameObjects which can be slow).
    • Various bug fixes.
    The support for additively loaded scenes doesn't include the UI changes I wanted to make, so the GameObjects from all the scenes will appear in one big list. The next task on my list will be to do the UI changes, but I wanted to get these features and fixes out there.

    Hopefully it will be available in the store shortly!
     
    Last edited: Oct 6, 2016
    mensch-mueller likes this.
  34. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hey @athibodeau unfortunately I've had to remove support for DontDestroyOnLoad objects. That method you mentioned only works in the editor and not at runtime in a standalone build; at runtime the scene on my DontDestroyOnLoad object is the active scene but annoyingly the DontDestroyOnLoad objects don't show up when you get all GameObjects from the active scene.
     
    Last edited: Oct 23, 2016
  35. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    The new version is finally up on the store here! This update includes:
    • Support for additively loaded scenes.
    • The five most recently added custom servers now persist via EditorPrefs.
    • Added a button to turn off automatic refreshing of the hierarchy. If this is on the user must manually press the "refresh" button to get an updated list of GameObjects.
    • The inner exception is now logged when using the Hdg.Button attribute, rather than the generic "invoke failed" exception.
    • Misc other bug fixes.
    Also thanks to everyone who has bought the tool and sent me feedback and bug reports!

    Cheers,
    Sam
     
  36. sdpgames

    sdpgames

    Joined:
    Sep 2, 2014
    Posts:
    17
    Hi Sam

    Thanks for the great tool. Unfortunately we make a heavy usage of DontDestroyOnLoad mainly on our managers (camera, input, etc) and we really need to tweak those (actually the purchase in the first place was to tweak input settings).

    Like you, we have been stuck in DontDestroyOnLoad hell for a long time, before and after the new Scene Management system. Sometimes we'd just like to give up on that seemingly forever broken feature, but really we are left with no choice.

    I'd like to offer a simple solution that'd avoid company like us being stuck. Why don't you offer a simple API like DontDestroyOnLoad (your own DontDestroyOnLoad function if you will). In debug, we'd call your's at the same time as Unity's. It'd work for us at least :)

    Thanks in advance;
    Laurent
     
  37. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hey @sdpgames,

    Sure thing, I could do that. It's super annoying that there's no way to get the DontDestroyOnLoad objects at runtime and it seems that Unity are deprecating it in favor of using additively loaded scenes but I know a lot of people still use DDOL objects since they've been a part of Unity for so long!

    I'll add support for that and get a build submitted ASAP! Thanks for using the tool!

    Cheers,
    Sam
     
  38. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Ok I've just submitted a build with that feature! To use it, after you call DontDestroyOnLoad call:

    Hdg.RemoteDebugServer.AddDontDestroyOnLoadObject(this.gameObject);

    If you ever destroy the DontDestroyOnLoad object, call remove:

    Hdg.RemoteDebugServer.RemoveDontDestroyOnLoadObject(this.gameObject);

    This is also detailed in the documentation (which you can also view online here).

    Hopefully it gets through submission quickly! Thanks again for the suggestion!

    Cheers,
    Sam
     
  39. sdpgames

    sdpgames

    Joined:
    Sep 2, 2014
    Posts:
    17
    Excellent, thank you!

    Laurent
     
  40. sdpgames

    sdpgames

    Joined:
    Sep 2, 2014
    Posts:
    17
    Hi Sam;

    We have tried, now we have this exception when connecting to the game client:
     

    Attached Files:

  41. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    I actually didn't even realise the update had gone live (I didn't get any email from Unity)!

    So just to double check: you are calling AddDontDestroyOnLoadObject(obj) for certain objects right? And you also immediately before (or after) call DontDestroyOnLoad(obj) for those objects?

    Do you ever explicitly destroy those objects without calling RemoveDontDestroyOnLoadObject?

    If you ever call AddDontDestroyOnLoadObject for an object that isn't a DontDestroyOnLoad object this could happen when you change scenes and the object is cleaned up. Otherwise I'm not sure why it would be happening.

    Are you able to make a minimal project that reproduces it? That would be really handy. You can email it to sam@horsedrawngames.com.

    I will also put in a test for null in case regular objects end up in my internal list.

    Thanks,
    Sam
     
  42. sdpgames

    sdpgames

    Joined:
    Sep 2, 2014
    Posts:
    17
    Hi Sam;

    It now works better, we did create a component that we add on all DontDestroyOnLoad roots to manage the lifecycle calls toHdg. We do have some issues:

    - For most objects we have the following exception

    exception.jpg

    - All children of DontDestroyOnLoad objects seems to be missing (they are visible in the tree view but when selected, "game Object was not found" is displayed). Some are created at run-time. Automatic refresh is enabled

    - (minor) the debugger game Object itself appears twice in the window

    Thanks in advance;

    Laurent
     
  43. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hi Laurent!

    Sorry about those bugs! I've just fixed the missing children bug. I haven't seen the debugger object appearing twice though, and that first issue I think is something else entirely, some array field that I'm not handling properly.

    Can we take this to email? I'd like to send you a build with some fixes if that's okay, and see if we can figure out the first issue. You can email me at sam@horsedrawngames.com

    Thanks!
    Sam
     
    Last edited: Nov 3, 2016
  44. chenlijun

    chenlijun

    Joined:
    Nov 16, 2016
    Posts:
    1
    Hi Sam

    When will you release the fix to missing children bug? We also encountered the same bug with Laurent.
    Thanks!

    chenlijun
     
  45. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Hi chenlijun,

    I've got a fix and am testing it at the moment. Hopefully it will be in the store soon!

    Cheers,
    Sam
     
  46. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    @chenlijun - I've submitted a new build to the asset store with this fix. It should be available soon!
     
  47. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    This is live on the store. Let me know if you have any other problems! (cc @chenlijun)
     
  48. samizzo

    samizzo

    Joined:
    Sep 7, 2011
    Posts:
    487
    Happy New Year! Hdg Remote Debug is half price ($30) for January to celebrate the new year! Get it now!
     
    Last edited: Jan 4, 2017
  49. sebas77

    sebas77

    Joined:
    Nov 4, 2011
    Posts:
    1,641
    I didn't read all the thread, but as far as I understood, I can use this on a windows stand alone client as well, because this is what I need. Can you confirm it? It would be nice to have some direction on your documentation if special steps are needed to work with it.
     
  50. lorenzodom

    lorenzodom

    Joined:
    Apr 3, 2015
    Posts:
    22
    A video tutorial of your tool + ADB port forwarding to connect over a USB connection to an Android device would be nice, i already buy your asset and struggle a litte to configure this on windows, i know there's a lot of tutorials over the internet but if you provide one of the whole process would be nice as i said.

    I leave here the one that i used to configure the (Windows/ ADB port forwarding to connect over a USB )


    Totally recommended "Hdg Remote Debug" is a very useful tool!!