Search Unity

Introducing vBug: Visual Debugging | Playability testing | Usability testing

Discussion in 'Assets and Asset Store' started by Michiel-Frankfort, Nov 20, 2014.

  1. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Great news! vBug is finally live! After a year of development and testing, vBug has been accepted by Unity and is now available in the asset-store: https://www.assetstore.unity3d.com/en/#!/content/24747

    It allows developers to debug and test games in a whole new way! It will record the screen, the player input, fpps & memory info, the complete hierarchy, component information, mesh-data and particle-data every frame! You review this data in unity in an unprecedented intuitive way.


    Check out the trailer:


    Check out the first tutorial:


    Documentation:
    http://www.frankfortsoftware.com/vbug/vbug - documentation - v1.0.pdf

    Let me introduce myself: my name is Michiel Frankfort and I’m a senior gameplay-programmer and designer at Little Chicken Game Company in Amsterdam - The Netherlands. During my many-years experience with Unity3D, I learned a great deal about the inner workings of the Unity3D game-engine.


    While I was working on one of Little Chickens biggest projects, I learned that debugging and especially QA-testing can yield test results that are not always very useful or simply lack viable information. Thats why I started vBug, a tool that should give clear insight in player-behaviour but also helps the developer reproduce and fix problems.

    Let me know what you think. Im very excited!
     
    Last edited: Nov 20, 2014
  2. bjornrun

    bjornrun

    Joined:
    Oct 29, 2013
    Posts:
    88
    This looks very interesting. Is it compatible with U5 beta?
     
  3. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Thanks!

    I'm currently investigating U5 Beta. Unity changed the way shaders and materials work and that requires some extra testing and debugging.

    In order to make all the platforms work and support Unity 5, it will take some time. Once I have a version ready for Unity 5, I will announce it here,

    Cheers!
     
  4. DigitalGlass

    DigitalGlass

    Joined:
    May 12, 2009
    Posts:
    88
    In the video you show there is a mesh recorder, particle recorder. Will your api support devs to implement specific types of recorded information specific to their game for debug playback?
     
  5. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    Wow, this looks great! Very powerful, could feedback some very important data. I have a couple of questions:

    1. You say this works on mobile (iOS and Android). How is the data captured and stored on mobile, and how do we playback this information?
    2. Will this work for UI elements too? So, say we have a scene which is entirely for a main menu (uGUI). Would this track what the user does inside the menu?

    Great work though, seems incredibly useful!
     
  6. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Yes it will, all the code is included and you can change it as you please. I've done this on purpose because of cases like this.
     
  7. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Well.. for the time being you need to copy-paste the data manually (http://www.frankfortsoftware.com/vbug/vbug - documentation - v1.0.pdf), but... we are working on stream over WIFI functionality! This going to be amazing, but its still under development for now.

    I will soon ad a tutorial regarding mobile usage, but for now I think its best to check my documentation.

    About uGUI: I will perform a test tonight and see how it holds up using uGUI.
     
  8. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    Thanks for the help. Although its useful for us to see what users do inside the app, its very insightful if we can check what they are doing with the menu's and UI for the apps we develop. We focus on business applications, so see the user flow through an app is quite handy. I like the fact you track the users touch on the screen, that is something that will be of use to us.

    I look forward to a mobile demo :) And WiFi streaming, well thats just awesome :) Is it possible to access the data that you store from within the app, to say upload to a server of our choosing? Then we could download and play it back.
     
  9. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Well indeed, we do want to build an extention which allows the developer to upload it to a server and then download it remotely. But his is planned after the beta period is over and U5 is supported. I'm also working on a roadmap with new features..
     
  10. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    Thanks, good to know! I will keep this in mind for future projects :)
     
    Michiel-Frankfort likes this.
  11. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Hi everyone,

    I received some questions about vBug in combination with NGUI. Thats why I created this little demo. I will soon investigate the new Unity.UI (UGUI) framework. Take a look:
     
  12. DigitalGlass

    DigitalGlass

    Joined:
    May 12, 2009
    Posts:
    88
    Hey I started testing out vbug. Is there a way to change the default root directory of where all the recordings get saved? My C drive is very limited
     
    Michiel-Frankfort likes this.
  13. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Hi, unfortunately Unity limits the storage options on most platforms to the Application.persistentDataPath, thats why its stored there.

    But you have got a good point, for mac and windows editor we can easily let the developer pick it's location.
    Ill add it to my next release version! Great feedback, thanks.
     
    DigitalGlass likes this.
  14. TechnicalArtist

    TechnicalArtist

    Joined:
    Jul 9, 2012
    Posts:
    736
  15. CPXTom

    CPXTom

    Joined:
    Apr 24, 2010
    Posts:
    113
    This plugin is great and $30 is a real bargain for something like this!

    My only request would be to add an option to compress sessions or even just archiving them. Takes a long time to download several sessions from an iPad, since there are so many vBugSlice files. Also I had 3 sessions and they clocked in around 111mb.
     
    Last edited: Nov 21, 2014
    Michiel-Frankfort likes this.
  16. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Thank you for the compliment, great to hear you like it. I will look into this, but unfortunately its already compressed using LZF by default and most data is captured as binary (as xml would take 10x the space). I also experimented with PNG and JPG compression for the screencapture, but they are way to heavy to execute for each frame.

    I would advise to capture only those things really needed, and if your framerate is high enough, capture every x frames. By default most recorders are set to every 3 frames, but with 60 fps, every 6 frames means 10fps capturing, which in some cases is enough (usability-testing for example)

    Thanks for the purchase!
     
  17. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,548
    This looks great. I'm trying to solve a random hang bug. Do you have trial version, maybe capture for 5 seconds for us to test?
     
    Michiel-Frankfort likes this.
  18. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Not at the moment. All code is included therefore is not possible to make a trial version and make it unhackable.
     
  19. Dabeh

    Dabeh

    Joined:
    Oct 26, 2011
    Posts:
    1,614
    Wow, this looks great, some questions though:

    Are you serializing each frame individually and allowing them for playback?
    Can I view the fields on objects at that frame and if so also classes or structs on a monobehaviour?
    Can I rewind to a certain frame and then start playing from there?
     
    Last edited: Nov 22, 2014
    Michiel-Frankfort likes this.
  20. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Hi.

    Yes! Each frame is saved individually. By default the entire hierarchy is captured every frame and by adding the vBugGameObjectReflectable to an object, each frame all exposed members of monobehaviours are captured recursively as well. These fields can indeed be structs or classes, even collections are supported.

    The timeline lets you scub back and forth between these frames. And you can 'play' from any givin frame. Check out the tutorial for an A-to-Z walktrough

    Cheers!
     
  21. CPXTom

    CPXTom

    Joined:
    Apr 24, 2010
    Posts:
    113

    You're welcome.

    I think maybe I wasn't clear on the request. While it's great that you're already using compression to keep file size down, I was more looking to have an option to archive entire sessions. Moving 3 archives from an iPad to my computer would be a lot faster than moving over ~3000 individual files :)

    Thanks again!
     
    Michiel-Frankfort likes this.
  22. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Ah, yes... good point, although I never thought of it as a problem, indeed its a great idea!
    Thanks for the feedback, Ill think of a way to make that happen and add it to the project asap.

    Have a great weekend!
     
  23. CPXTom

    CPXTom

    Joined:
    Apr 24, 2010
    Posts:
    113
    Awesome, thanks!
     
  24. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    For anyone experiencing difficulties with 'Writing to disk not allowed' warning, or any other 'Shader not found' issue, I have a fix ready. It will take a while before I'm able to submit it to the Asset-store, but if these issues are causing you headaches, I'll send you an update.

    I also added a feature requests: Being able to pick your destination folder to store .vBugSlice's (vBug root folder) and I fixed some small things regarding the timeline.

    Thats all for now!
    ps: I'm thinking about overhauling my Assetstore images (icon, small and big picture)... any suggestions?
     
  25. DigitalGlass

    DigitalGlass

    Joined:
    May 12, 2009
    Posts:
    88
    Any plans to be able to play multiple sessions at the same time? I work on a multiplayer game, and it'd be good to be able to compare the different clients.
     
    Michiel-Frankfort likes this.
  26. khan-amil

    khan-amil

    Joined:
    Mar 29, 2012
    Posts:
    206
    Looks neat, curious as to how much it affects performances ?

    Keeping a close look on that for when we'll need it.

    For your main picture I'd suggest getting rid of the film roll pictures on the bottom, extend the other 2 and maybe add an image of your timeline tool.
     
    Michiel-Frankfort likes this.
  27. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Enabling all recorders, capturing all meshes, etc is very heavy indeed. Take Uniy's own deep-profiler for example, this brings performance to its knees.

    In case of vBug, it depends on the platform, system specs, amount of recorders enabled, etc. Clearly the screencapture and hierarchy-scanning are by far the most compute-intensive. But if your scene is pretty clean, running on a modern device (like an iPad air for example) and capturing lots of mesh-data, the mesh-capturing & memory-calculations takes over...

    The angrybots tutorial video shows off all possible recorders set to enabled and I'm recording all meshes of all enemies and all particles of all visual effects. On an my iPad 2, this cuts the framerate roughly in half and on my Nexus 5 it around 30%-40% performance cost.

    Included into the project there is a 25-page documentation file, this also explains a lot about how to setup and optimize for your needs. Not every project needs memory info, mesh capturing etc.

    Thank you for the feedback btw, I will change the main image to something less cluttery ;-)
     
  28. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Thanks for the
    Yes there is! Heatmaps are one of the many things you could do with all this raw data available. On top of that I want to add a way to leave 'markers' behind in the real world. If you would leave a marker for each player dying, it will then be easy to visualize the places where players get stuck for example.

    In general, this is my roadmap for now:
    - Make it as stable as possible, implement small feature requests, etc
    - Find a way to support UnityEngine.UI
    - Make sure Unity 5 is supported
    - Implement 'Stream over Wifi' functionality (already in progress)
    - Heatmaps, world-markers, multi-session comparison
     
    khan-amil, CPXTom and DigitalGlass like this.
  29. khan-amil

    khan-amil

    Joined:
    Mar 29, 2012
    Posts:
    206
    Yeah, makes sense. Good to hear that's it's customisable in that way.
    And yeah, heatmaps/marker will help in that regard, for things that do not need to have precise recording. I can live with having only a plot path of my ennemies and not seeing their full mesh all the time for example ^^

    Unless there is something critical, you should consider hosting your documentation somehere on your website and put the link to it in your assetstore page.
    I prefer to see in details what I'm purchasing before committing, I don't think I'm the only one though ^^
     
    Michiel-Frankfort likes this.
  30. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Yes there is, you can find the documentation online and I'll add a link to it in my description.
    Thanks for the feedback
     
  31. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Hi everyone!

    A new version is live! This versions contains a lot features and fixes gained from user input and feedback! Thanks for the great input guys!

    This version allows you to pick the destination of your recorded files when running it from editor and for standalone build, you can choose between the persistentDataPath or the same folder the game is running at. It contains a ton of performance tweaks, small bug-fixes and user input.

    Check it out:
    https://www.assetstore.unity3d.com/en/#!/content/24747

    There is also new documentation online:
    http://frankfortsoftware.com/vbug/vbug_documentation_v1.1.pdf

    Have a great day everyone, thanks for using/considering vBug.
     
    Play_Edu likes this.
  32. iamsam

    iamsam

    Joined:
    Dec 22, 2013
    Posts:
    233
    Hi Michiel, seems like an amazing and a must have asset. I had a couple of questions before purchasing the plugin.

    Is it possible to save the screen recordings (along with mouse and keyboard overlays) as movie files and view them in an external player?

    One of the primary uses for me is to troubleshoot my game on different client configurations, is it possible that the client plays the game and saves the data to the hard drive and sends it back to me so that I can load it in VBug inside Unity and troubleshoot the problem.

    Thanks,
    Sam
     
    Michiel-Frankfort likes this.
  33. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Hi sam!
    Its currently not possible to export it as a movie (perhaps I will add this feature in the future) but I figured you don't need it since you can playback the gameplay movie-style in-editor. The 'play' button in the vBug toolbar will playback to movie in real-time as if you're looking at a movie.

    The answer to your second question is.... yes you can! It will be stored to the "persistentDataPath" which can be accessed by any file-manager (platform dependent). On IOS I prefer iFunBox. When you use a "standalone" version, data is stored to folder the application-folder for ease of use.

    We are currently using vBug @ Little Chicken Game Studio in Amsterdam to test a game for the Royal Dutch Airlines (KLM) , and we are running it at at-least 8 devices being used by dozens of testers. At the end of a test-session we collect all the vBug data and compare them.

    Thank you for your interest!
    btw: There is a new version live with an improved memory-footprint management-system!

     
  34. iamsam

    iamsam

    Joined:
    Dec 22, 2013
    Posts:
    233
    Hi Michiel,

    Thanks a lot for the quick reply, somehow I did not get an alert that you had replied (they probably want me to check the forums regularly :p)

    I am glad to see that movie export might be an option in the future. The reason I had asked for this feature is because we are currently working with international collaborators who would like to have that aspect in the release instead of the editor (you could also promote it as an excellent way to make tutorial videos for other publishers on the asset store, they can use this feature to tell the audience exactly what they are doing using the keyboard and mouse while demonstrating their plugin).

    I am really happy to hear about the fact that the client can save the data and send it back to us, I am going to purchase it tonight.

    Thanks again for the outstanding support.

    Sam
     
    Michiel-Frankfort likes this.
  35. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    Hi, do i only have to ad this to the first scene and it lives true the game or do i have to ad this to every scene in the game (that is in my interest)?

    I think at the desktop it is easy to just test the scene i am working on but on mobile i sometimes have to choose things in the menu so it work like i want so that is the reason i ask this question.

    Is there a way to get the files from an ios device without an extra app or software?
     
    Last edited: Feb 10, 2015
  36. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218

    Hi RandAIThor,

    The vBug-Initializer lives trough-out all scenes because the boolean 'Dont Destroy On Load' is set to true. If you turn this off, you could add a vbug initializer to each scene with different settings per scene. This allows you to tweak settings the way you like.

    If you want vBug to record all scenes and not stop when changing a level, then all you have to do is drag the vBug-initializer to your game's entry-point scene and leave it as-is.

    About interfaces: I'm currently working on a native UnityEngine.UI (Unity 4.6 and Unity 5) support! So stay tuned!
     
  37. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Hi guys.

    I receive a lot of questions about Unity 5 and Untiy.UI support. I just want to let you guys know that I just finished native UnityEngine.UI support (great performance btw) and the first concrete steps to support fully Unity 5. I'm currently testing Unity 5 projects (demo projects are hard to find btw) and the next release of vBug should support 4.6 and 5.0 natively.


    Have a nice weekend and stay tuned!
     
  38. radimoto

    radimoto

    Joined:
    Aug 23, 2012
    Posts:
    257
    Looks amazing - purchased! Looking forward to the Unity 5 release!
     
    Michiel-Frankfort likes this.
  39. MisterAlwin

    MisterAlwin

    Joined:
    Oct 28, 2013
    Posts:
    1
    This tool looks pretty amazing! Sorry if this is already mentioned, but is it compatible with the free version of Unity?
     
    Michiel-Frankfort likes this.
  40. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Hi MisterAlwin,

    Yes its compatible with the free version of Unity, however the way the screen is being captured is performed in a different (and less efficient) way, due to the lack of RenderTexture support. This means that especially on mobile the performance takes a hit when capturing the screen. All other features are not affected by this. For more information, please check the documentation.

    frankfortsoftware.com/vbug/vbug_documentation_v1.1.pdf

    Cheers!
     
  41. kotor

    kotor

    Joined:
    Dec 3, 2013
    Posts:
    140
    I just bought this tools. I have some issues

    1) Since I am creating my Dungeon dynamically, vBug give me a blank Dungeon in the scene view when playing through the timeline. Do you have any solution ?

    2) vBug playback screen is very blurry (poor quality). Do you know what is going on there.

    Thanks
     
  42. sbjerk

    sbjerk

    Joined:
    Nov 15, 2013
    Posts:
    1
    I realize this is far from the scope of this project, but could this be used for ghost character playback within a new game? (Such as in a racing game if wanted to race against myself from previous recorded data?) This is something Time Donkey managed to do fairly well. http://blurst.com/time-donkey/ (this would just put sprinkles on the frosting!)
     
    Michiel-Frankfort likes this.
  43. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Hi!

    The quality of the screencapture is by default restricted to 256 max size. This is done to save performance and diskspace. You can set it to native by changing the settings. Please goto the vBugInitializer - settings - recording - screencapture and change resolution to something you think is acceptable. Besides the resolution, vBug also compresses the image to 16 bits, instead of the usual 32. This causes 'banding' and looks really poor when there are gradients visible, so set this to 32 bits if you require the quality.

    About the blank dungeon. The props/chunks, do you have the MeshRecordable component attached to them? If so, have you tried the 'full mesh capture' option?

    Thank you for using vBug, if the documentation and tutorials do not work for you, please send me an email with detail description to vbug4unity@gmail.com

    Cheers!
     
  44. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Haha, yes this idea has crossed my mind several times. I get a lot of 'Call of Duty - killcam' feature requests, so perhaps this will be my next asset-store project haha. A ghost-capture system could indeed be based on the lessons learned from vBug.

    Ill keep it in mind, thanks for the feedback!
     
  45. cr4y

    cr4y

    Joined:
    Jul 12, 2012
    Posts:
    44
    1. Am I the only person seeing "Serialization depth limit exceeded at 'Frankfort.VBug.Internal::ExposedObject'. There may be an object composition cycle in one or more of your serialized classes" a lot after importing this package?
    2. Why all recordables during replay in scene view are black (both in Smart mesh and Full mesh) - I guess that if we are able to set Color parameter of recordable, it would be nice to really use it on scene during replay.
    That being said, this package is bless. Thanks for it!
     
  46. gekidoslair

    gekidoslair

    Joined:
    Sep 7, 2012
    Posts:
    128
    Hi,

    Just bought and trying out vBug for the first time. Looks incredible! So useful.

    Quick question - I added the Initializer into our first startup scene and ran the game, only to get this:

    Code (CSharp):
    1. ReadPixels was called to read pixels from system frame buffer, while not inside drawing frame.
    2. UnityEngine.Texture2D:ReadPixels(Rect, Int32, Int32, Boolean)
    3. Frankfort.VBug.Internal.ScreenGrabber:Execute_readPixels(IAbortableWorkObject) (at Assets/_SharedLibraries/ThirdPartyComponents/vBug/Runtime/Internal/UnityActivityRecorder/UnityActivityGrabbers/ScreenCapture/ScreenGrabber.cs:302)
    4. Frankfort.VBug.Internal.WorkloadDistributionManager:HandleNextItem(AsyncWorkloadCycle, Boolean) (at Assets/_SharedLibraries/ThirdPartyComponents/vBug/Runtime/Internal/DataProcessing/WorkloadDistributionManager.cs:330)
    5. Frankfort.VBug.Internal.WorkloadDistributionManager:ExecuteNextItemSequential(WorkloadExecutorType) (at Assets/_SharedLibraries/ThirdPartyComponents/vBug/Runtime/Internal/DataProcessing/WorkloadDistributionManager.cs:316)
    6. Frankfort.VBug.Internal.WorkloadDistributionManager:LateUpdate() (at Assets/_SharedLibraries/ThirdPartyComponents/vBug/Runtime/Internal/DataProcessing/WorkloadDistributionManager.cs:272)
    Any ideas? I don't have any specific recorders added yet (still watching tutorial videos), but not sure if this is a problem with the asset import or something strange with my setup?

    Thanx
     
    Michiel-Frankfort likes this.
  47. JonMoon

    JonMoon

    Joined:
    Feb 26, 2015
    Posts:
    10
    I have the same questions as cr4y, I get:

    "Serialization depth limit exceeded at 'Frankfort.VBug.Internal::ExposedObject'. There may be an object composition cycle in one or more of your serialized classes" a lot after importing this package?

    This happens when I update my code. What's the cause?
     
  48. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    48
    Same issue here with "Serialization depth limit exceeded at 'Frankfort.VBug.Internal::ExposedObject'. There may be an object composition cycle in one or more of your serialized classes". Even if I remove the initialiser from the scene, I still get the error. Is the only way to get rid of it to remove the plugin completely?
     
  49. cr4y

    cr4y

    Joined:
    Jul 12, 2012
    Posts:
    44
    I just want to notice that serialization limit message does NOT do any harm and both package and rest of project are working correctly. Second thing I have mentioned (colours) are much more important for me. It's hard to check team game recording when both teams are in same colour :)
     
  50. Michiel-Frankfort

    Michiel-Frankfort

    Joined:
    Sep 7, 2014
    Posts:
    218
    Hi guys,

    I received several complaints about the serialization-depth. Try increasing the the 'Object Member Scan Depth' over at the vbug-settings - Recording - GameObjectReflection. Its set to 3 by default (to preserve performance and disk-space), try increasing it to a larger number and see if this fixes the problem.

    I will look into it asap.
    Thank you all for choosing vBug