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

[FREE - AWARD WINNER] Graphy - Ultimate FPS Counter - Stats Monitor & Debugger

Discussion in 'Assets and Asset Store' started by Tayx, Feb 13, 2018.

  1. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    WINNER of the BEST DEVELOPMENT TOOL in the Unity Awards 2018.

    Hello people! After years of using various debugging tools, I decided to make my own as a labour of love, that eventually became something I though could be useful to the Unity community. This asset is much more than a simple FPS counter, and at a very affordable price... FREE!



    Graphy is the ultimate, easy to use, FPS counter, stats monitor and debugger for your project.

    Link to the Asset Store: https://www.assetstore.unity3d.com/#!/content/105778?aid=1100l24505
    Link to the Github Repo: https://github.com/Tayx94/graphy

    Try the WebGL demo: https://martinpane.com/graphy-demo



    Main Features:
    • FPS Counter (Graph and Text)
    • Memory Counter (Graph and Text)
    • Audio Spectrum (Graph and Text)
    • Advanced device information
    • Debugging tools
    With this tool you will be able to visualize and catch when your game has some unexpected hiccup, and act accordingly!

    Teaser:



    Graphy also includes a debugger script! The debugger allows you to set one or more conditions, that if met will have the consequences you desire, such as taking a screenshot, pausing the editor, printing a message to the console and more! Even call a method from your own code if you want (through Unity Events or C# System.Action)!

    Additional features:

    - Customizable look and feel



    - Multiple layouts



    - Custom Inspectors!



    - Background overlay to improve readability in cluttered scenes


    - Hotkeys (Modify them to your liking)



    - Easy to use API (accessible from code)



    - Works on multiple platforms (Tested on PC, Mac and Android, but it should work on almost anything)



    - Has been reported to work in VR by Dragonhill (just set the Canvas to World Space, lower the scale to 0.001, and put it anywhere you like)



    - Keep Alive (it will survive scene changes)
    - Background Mode (Negligible impact in performance)
    - There is a LIGHT version that is more compatible with older hardware.
    - Well documented C# and Shader code included (yes, it uses shaders!)

    FAQ:

    1 - Do you have an approximate ms figure on typical midrange desktop hardware, with all features enabled?
    - Yes, less than 0.1 ms in a build and around 0.3-0.7 ms in the Editor due to the extra Editor overhead.

    2 - Is it possible to disable a module if it's not needed, to save a few cycles?
    - Yes, it's possible, and really easy. You just have to set Module State to OFF and you're good to go!

    3 - How is Graphy rendered?
    - It's being rendered through the Unity UI. Graphy is contained in a standard Canvas, and you have complete control over it.



    Link to the Asset Store: https://www.assetstore.unity3d.com/#!/content/105778?aid=1100l24505
    Link to the Github Repo: https://github.com/Tayx94/graphy

    Try the WebGL demo: https://martinpane.com/graphy-demo


    If you have any questions or would like to know more, don't hesitate to contact me! Leave a comment below or get in touch through one of the following links.

    Contact:

    - Mail
    - Twitter
    - Discord (We have an active community, and I can chat with you in real time to solve your problems faster!)

    ------------------------------------------------------------------------------------------

    Changelog:

    - Small hotfix for a index of out bounds error.
    - Simplified Singleton class to allow Graphy to be Destroyed.
    - Deallocating cached strings on Destroy to free up memory.
    - Pretty big refactor.
    - Lots of optimization.
    - Removed min/max fps for 1% and 0.1% lows, which is the industry standard now.
    - Improved UI. Added rounded corners and a better default color palette.
    - Updated package.json to 2.0.1.
    - Now supports UPM (Unity Package Manager).
    - Minimum official supported version is now Unity 2019.3.0. If you want a version that supports 5.4+, go to Github to download it.
    - Lots of minor tweaks, optimizations and bugfixes.
    This is the last release that will officially support Unity 5.4+. Next releases will be targeted towards 2019.3+.

    - Minor tweaks, optimizations and bugfixes.
    - Added support for VR single pass instanced rendering.
    - Removed asmdefs to avoid missing reference issues in new Unity alpha versions.
    - Improvements avgFps calculation, changed list to array (thanks @Kaladrius2trip).
    - Hide Graphy in Game view when it's be disabled on startup.
    - Fixed error if no camera is present in the scene.
    - Added SceneManager namespace so to avoid possible conflicts.
    - Added support for asmdefs (thanks @QSFW).
    - Fixed a number alignment in the audio module (thanks @SuperPenguin).
    - Refactored some code to avoid warnings with the new NET framework 4.0.
    - Shader sorting fix for Screen Space - Camera.
    - Fixed a possible Null Reference Error in the debugger (thanks @strawlink).
    - Fixed import settings in 2 textures (thanks @strawlink).
    - Renamed all Action into System.Action to avoid possible namespace conflicts.
    - Fixed the int rounding to prevent 59.99999FPS from turning into 59FPS (thanks @Rockylars).
    - Renamed all the classes with the "G_" prefix to avoid namespace issues with external code (thanks @Rockylars).
    - Refactored some code and added explanations and regions in the G_ShaderGraph class.
    - Assigned all the variables in their declaration to avoid a new NET framework warning.
    - Added the option to disable hotkeys.
    - Disabled hotkey check when Editor is not focused (thanks @Rockylars).
    - Refatored and cleaned up code (thanks @Rockylars).
    - Fixed a bug where if the app was defocused and focused back, it would reset Graphy's module active values (thanks @Rockylars).
    - Introduced plenty of safety checks to avoid some null reference errors.
    - Possibly fixed the graphs bug when the Editor is defocused and focused back.
    - Code cleanup and refactoring.
    - Updated the header comments in all scripts.
    - Added option to toggle active on start up (thanks @DarkMio).
    - Removed a leftover raycast script in the Graphy UI.Canvas (thanks @DarkMio).
    - Updated the shaders to use UnityObjectToClipPos() (thanks @DarkMio).
    - Bug-Fix: NullRef for EditorStyles.boldlabel (thanks @Flavelius)
    - Added a second graph to the Audio module that shows the highest spectrum value.
    - Added option to Toggle Active and Mode, as well as setting a specific Preset from the API.
    - Fixed a bug that occured when Time.timeScale = 0 (thanks @xDavidLeon!).
    - Improved the dB calculations, now the values are much more precise.
    - Modified the default UI text values to more generic placeholders to increase clarity.
    - Small fixes in the audio module.
    - MASSIVE reduction in garbage generation. From 8-10 KB every 2-3 seconds to just 200-300 bytes. Garbage generation right now is negligible.
    - Some code optimizations.
    - New Feature: Added a modifiable MODE. If set to LIGHT it will reduce some features or maximum values (like graph resolution) but it will improve compatibility with older hardware.
    - Small performance optimizations.
    - Code refactoring.
    - Improved the vetical alpha fade-off effect in the graph to make it more visible for lower values.
    - Updated the "Customize Graphy" scene to account for these new changes.
    - First major update!
    - Removed some leftover raycast targets from the Graphy UI to avoid interfering with users UI.
    - Added a Customization Scene that allows changing all the parameters in runtime to improve the user experience when testing new values.
    - Added a feature to rescale the background overlay of the Advanced Data module to the text with the highest width.
    - Made ALL parameters modifiable from code using the API.
    - Fixed a bug where sometimes the Graphy Manager would fail trying to retrieve the Audio Module.
    - Improved stabilty.

    - Added a feature to choose if you want to apply a background overlay to Graphy, improving readability in cluttered scenes.
    - Optimized the access to Shader parameters when updating them, improving performance.
    - Added a feature to choose if you want to keep Graphy alive through scene changes. Careful, if you activate it but Graphy is the child of another object, the root GameObject will also survive scene changes.
    - Fixed a bug where setting Graphy as a child of another object would break the graphs.
    - Initial release!
     
    Last edited: Apr 15, 2021
    unitybru, z3nth10n, Kirsche and 10 others like this.
  2. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,104
    I just saw this in the New section of the Asset Store. I'm interested and had a couple of pre-sales questions. :)

    I notice you say it has "negligible" impact on performance. Do you have an approximate mS figure on typical midrange desktop hardware, with all features enabled?

    I'm assuming it's possible to disable the audio graph if it's not needed, to save a few cycles, correct?

    Final question, how do you configure the rendering on this? Is it on the UI layer, can it be sent to a specific camera or cameras, or to a RenderTexture, etc.? (I'm not looking for detail here, just a broad overview of how much control the user has over where and how the graphs are rendered.)

    Congratulations on publishing this! The UI design you've implemented is very appealing, and I think you've created something very useful.
     
    Tayx likes this.
  3. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,104
    FWIW, I think this type of asset might work very nicely alongside one of my personal favorites, Squiggle, which is effectively an in-game or in-editor (or both) oscilloscope or chart recorder. The two assets don't overlap on function, but together would be a powerful analysis toolkit. :)
     
    Tayx likes this.
  4. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Hi syscrusher! And thank you for taking interest in Graphy. I'll gladly answer any questions you have, don't hesitate to ask :)

    1 - Do you have an approximate ms figure on typical midrange desktop hardware, with all features enabled?

    Yes, I do! Using a 4 year old Intel i7 with a decent graphics card, and all the features enabled with the default parameters, it takes less than 0.1ms. To put it into perspective, when making a build with just Graphy included, it jumped from 1000 fps to anywhere between 1300-1400 fps.
    If you're running it in the editor it can take up to 0.7ms due to the Editor GUI overhead, as well as having to render everything twice if you have the Game and Scene windows open at the same time.
    In any case, if your game runs at 60fps, each frame is going to take 16.67ms, so Graphy is going to represent less than 1% of the load.

    2 - It's possible to disable the audio graph if it's not needed, to save a few cycles?

    Yes, it's possible, and really easy. You just have to set Module State to OFF and you're good to go!



    3 - How do you configure the rendering on this?

    It's being rendered through the Unity UI. Graphy is contained in a standard Canvas, and you have complete control over it. Right now it's set to Render Mode: Screen Space - Overlay, because its the fastest one, but I've been testing it with World Space to see if it works in VR, and it performs perfectly (we still have to make a few tweaks to get it working correctly in VR).


    Thank you for your questions! I will make a FAQ in the forum post to help answer questions other people may have. I would like to finish by mentioning that we have an active community on Discord which you are more than welcome to join! It's really useful because we can chat in real time and I can solve my customers problems much faster. Just click this link and you're in: https://discord.gg/2KgNEHK
     
    Jackelll and syscrusher like this.
  5. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,231
    Just picked this up earlier today. So far I really like it. I came into discord because I thought I needed support, turns out I am just an idiot. Everything was fine. Great support though, they put up with me quite well.
     
    Tayx likes this.
  6. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,104
    Thank YOU for the answers. You've answered all my questions, I'm happy with what I'm hearing, and I'll grab a copy of this next time I'm on the Asset Store.
     
    Tayx likes this.
  7. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    I hope you enjoy it and you find it useful! If you have any other questions I'll be around ;)
     
    Jackelll likes this.
  8. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Patch v0.5.1 has been submitted for review in the Asset Store.

    - Added a feature to choose if you want to keep Graphy alive through scene changes. Careful, if you activate it but Graphy is the child of another object, the root GameObject will also survive scene changes.
    - Fixed a bug where setting Graphy as a child of another object would break the graphs.
    Remember that if you want immediate access to the newest versions you can join our Discord: https://discord.gg/2KgNEHK
     
    Jackelll and syscrusher like this.
  9. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Patch v0.6 has been submitted for review in the Asset Store.

    - Added a feature to choose if you want to apply a background overlay to Graphy, improving readability in cluttered scenes.
    - Optimized the access to Shader parameters when updating them, improving performance.

     
    Jackelll and syscrusher like this.
  10. Jackelll

    Jackelll

    Joined:
    Feb 28, 2018
    Posts:
    2
    Looking good man! I bought it and everything works perfectly. Could you give us some info on what features are you planning to add in the future? A better way to try different customization options would be very welcome.
     
    Tayx likes this.
  11. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Thanks! Yes of course, right now I'm working on a setup scene that will allow changes in real time. This will make it possible to copy the component values in the Inspector and paste them into Graphy when you exit playmode. There will also be a WebGL demo available to test everything.

    I'm also going to add a feature to set Graphy parameters from runtime.

    There are more features I have planned, but I'm still deciding on which ones to implement first.

    If you have any other doubts don't hesitate to ask!
     
  12. Thygrrr

    Thygrrr

    Joined:
    Sep 23, 2013
    Posts:
    699
    The graph shader renders pink on Adreno 330 GPUs... maybe I'm not packaging it right? :-/

    There's also something that on my phone causes the Graphy Debugger to spam debug log (I guess? can't see it, but it's a drop by 12 fps after a certain point in the app that isn't there if the debugger component is removed)

    This happens with the [Graphy] prefab as obtained from the asset store.
     
    Last edited: Mar 5, 2018
    Tayx likes this.
  13. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Hi Thygrrr, thanks for sharing your issues, I'll try to fix them, but I may need you to change some code on your end to test it, because I don't possess a smartphone with an Adreno 330 GPU right now.

    1 - First, in regards to the pink shader error, I believe it can be one of 3 things:
    • Unity bug: I've had issues building with old versions of Unity. If you're using a previous version to 2017, try upgrading and building again to see if that works.
    • The shader is not supported in the Adreno 330 GPU: It's possible that the GPU does not support the features used in the shader. The "Graph" shader is very simple, and based on the Unity UI standard shader, but you never know, maybe there is something there that isn't supported. Two things come to mind, either the Tags, or the fact that I'm using an array inside the shader to draw the graph. If the problem resides in the array I would have to investigate further, but try commenting the tags first, check if that works: (The shader is located at "Tayx/Graphy - Ultimate Stats Monitor/Shaders")
    • The shader is not being included in the build: If you go into Edit -> Project Settings -> Graphics, you should be able to see "Always Included Shaders". Try to include the "Graph" shader there to see if that solves your problem.
    2 - Second, to check if the debugger is causing the frame drop here are some things you can check:
    • Make sure the "Sleep Time After Execute" parameter is greater than 1, or even 2 seconds if you don't have the "Execute Once" active. If you set this parameter too low, the frame drop caused by the actions you define in the Debug Packet, like taking a screenshot, can actually drop the frame-rate so much that the time to trigger the Debug Packet again has already transcended. This causes a loop that can really tank your FPS.
    • Check all the Conditions in your Debug Packets, you may be triggering Actions because a condition is always being met that you maybe forgot about.
    I hope this helps, but if you need anything else, don't hesitate to ask. We also have a growing community in our Discord channel, where I can chat with you in real time to solve your problems faster, and other people may be also able to help you. If you want to join just click here: https://discord.gg/2KgNEHK
     
  14. savely00

    savely00

    Joined:
    Feb 27, 2014
    Posts:
    36
    Does it support WebGL platform? If YES, could you publish an example, please?
     
    Tayx likes this.
  15. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Hey savely00! Yes, Graphy will work with WebGL, I'm working on that right now and it should be ready tomorrow. Please keep in mind that the Audio Module will not work in WebGL, because Unity does not support GetSpectrumData() in that that platform. You also may have issues rendering the Graphs if you're using an old version of Unity. I have had trouble with Unity 5.4.0, but with Unity 2017.3 everything works perfectly.

    I will also upload an example tomorrow when I finish testing support for WebGL ;)

    I'll let you know when it's up. In the meantime, if you have any other questions, don't hesitate to ask!
     
    savely00 likes this.
  16. Thygrrr

    Thygrrr

    Joined:
    Sep 23, 2013
    Posts:
    699
    I ensured the shader is in the APK. Sadly, it doesn't work. Which is weird, it looks like a very simple shader. Here are two (cut up) screenshots with the relevant info.

    https://imgur.com/a/fpU5B
     
    Last edited: Mar 6, 2018
  17. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    That is indeed weird. I was investigating into this issue, and it seems that more people have also had problems with Adreno GPUs on Android. Someone was suggesting making sure that the SDK is updated to the latest version, you could try updating just in case.

    Another thing you can try if you have the time is to use the shader on a blank image, and remove all the code related to the array I'm using in it, called: "uniform float GraphValues[512];". That way we can rule out if the problem is being caused by using an array in the shader.
     
  18. Thygrrr

    Thygrrr

    Joined:
    Sep 23, 2013
    Posts:
    699
    Your shader is possibly exceeding the uniform array size limits of the GL implementation on the phone. I can get a graph to render by changing all the occurrences of 512 to 128. It's slightly cut off at the default graph resolution of 150, but it works.

    (160, 255, and 256 sadly are also too much, though instead of pink, these give me no output)

    There may be a way to query the max uniform array size of the platform. However, this value should be at least 1024 according to the spec:

    GL_MAX_VERTEX_UNIFORM_COMPONENTS
    params returns one value, the maximum number of individual floating-point, integer, or boolean values that can be held in uniform variable storage for a vertex shader. The value must be at least 1024. See glUniform.

    It may be a Unity limitation, because according to Unity's documentation, the value is 1023!? (2nd hand info from some post discussing a Unity beta)

    The Adreno 330 / Snapdragon 800 is not a weak platform for phones; more in the upper mid range still.
     
    Last edited: Mar 6, 2018
    Tayx likes this.
  19. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Very good catch Thygrrr! Now that you mention it, it makes a lot of sense. I was thinking about the wrong way, my bad. If you don't want to have the cut off, you can reduce the 150 default resolution to 128 ;)

    I'll make sure to look deeper into that for the next revision after the one I'm releasing today. I'm going to be at GDC (Games Developer Conference) for the following 2 weeks, but after that I'll make sure to fix this particular bug. Thanks again for the feedback!
     
  20. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Just saw you edited the post while I was responding. I remember taking a look at that 1024 number when I was testing the shader a while back, that's why the thought of the array size being the problem never crossed my mind. It's a bit of a pain debugging shaders in different platforms, because there is little documentation around.
     
  21. Thygrrr

    Thygrrr

    Joined:
    Sep 23, 2013
    Posts:
    699
    As a mobile developer, I feel you :)
     
    Tayx likes this.
  22. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Patch v1.0 has been submitted for review in the Asset Store.

    - First major update!
    - Removed some leftover raycast targets from the Graphy UI to avoid interfering with users UI.
    - Added a Customization Scene that allows changing all the parameters in runtime to improve the user experience when testing new values.
    - Added a feature to rescale the background overlay of the Advanced Data module to the text with the highest width.
    - Made ALL parameters modifiable from code using the API.
    - Fixed a bug where sometimes the Graphy Manager would fail trying to retrieve the Audio Module.
    - Improved stabilty.



    I have also made available a free WebGL demo! You can try it out here:

    WebGL demo: https://martinpane.com/graphy-demo

    Sadly, Unity does not support GetSpectrumData() in WebGL platforms, so the Audio module had to be disabled for this demo. (@savely00)

    If you don't want to wait for Unity to approve this version, join our Discord! -> https://discord.gg/2KgNEHK
     
    Bartolomeus755 likes this.
  23. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Just a small announcement, I'm going to be travelling the next 2 weeks and going to GDC, so I may be slower to respond to your questions, but I'll do my best ;)

    I'm coming back the 26th of March.
     
  24. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    I'm back from GDC!
    I'll start working on Graphy again soon, stay tuned! :)
     
    Bartolomeus755 likes this.
  25. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    I was thinking about making a lighter version of Graphy that would be compatible with older devices, and to help people like Thygrrr that had to tweak some code to make it work. Would you guys be interested in a [Graphy]_Light prefab that was a bit more limited but that improved compatibility?
     
  26. stevenatunity

    stevenatunity

    Joined:
    Apr 17, 2015
    Posts:
    114
    Do this and take my money! :)
     
    Tayx likes this.
  27. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    I will then! ;)
     
    stevenatunity likes this.
  28. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Patch v1.1 has been submitted for review in the Asset Store.

    - New Feature: Added a modifiable MODE. If set to LIGHT it will reduce some features or maximum values (like graph resolution) but it will improve compatibility with older hardware.
    - Small performance optimizations.
    - Code refactoring.
    - Improved the vetical alpha fade-off effect in the graph to make it more visible for lower values.
    - Updated the "Customize Graphy" scene to account for these new changes.

    Thanks to Thygrrr for finding the reason why some older GPUs weren't able to render the graphs.
     
  29. stevenatunity

    stevenatunity

    Joined:
    Apr 17, 2015
    Posts:
    114
    Bought :) Will use it to test my new game!
     
    Tayx likes this.
  30. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Great! If you have any questions/suggestions just let me know! :)
     
    stevenatunity likes this.
  31. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Patch v1.2 has been submitted for review in the Asset Store.

    - MASSIVE reduction in garbage generation. From 8-10 KB every 2-3 seconds to just 200-300 bytes. Garbage generation right now is negligible.
    - Some code optimizations.

    This has been mainly a performance and maintenance patch. Remember that if you have any suggestions you can respond through the forum or through my Discord server as well.

    https://discord.gg/2KgNEHK
     
    stevenatunity and Bartolomeus755 like this.
  32. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Great news guys, I've decided to make Graphy FREE!

    Let your friends know so they can enjoy the asset as well! :)
     
    glenneroo, mons00n and mfleurent like this.
  33. someguywithamouse

    someguywithamouse

    Joined:
    Mar 25, 2018
    Posts:
    9
    I just found it on the store and after trying it I can say it's an extremely neat tool to have, thank you!

    I have a very (minor) bug to report, however.

    In the exported game project and also the Playtesting mode everything displays properly, but in the editor when the game is not running it confuses my Intel HD card for an AMD R9, and also displays a different version of Core i7. Not that I'm too worried since it seems to work fine in-game, but I thought you might want to know.

    Screenshot (54).png Screenshot (56).png
     
    Tayx likes this.
  34. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Hi someguywithamouse and thank you for taking the time to write! I'm glad you're enjoying Graphy :)

    The bug you mention is actually just a placeholder text that I use to let you know how the end result will look like. That's due to the fact that I can't access those values (like which processor or graphics card you have) in Editor when the game is not running.

    The truth is that it's still something that can be confusing, so I'll probably think a better solution for it and upload a new version. Thanks again for the feedback and if you have any other questions don't hesitate to ask!
     
  35. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Patch v1.2.1 has been submitted for review in the Asset Store.

    - Modified the default UI text values to more generic placeholders to increase clarity.
    - Small fixes in the audio module.

    This has been mainly a performance and maintenance patch. Remember that if you have any suggestions you can respond through the forum or through my Discord server as well.

    If you want immediate access to the newest versions, join the Discord!

    https://discord.gg/2KgNEHK

    Unity_Personal_(64bit)_-_Testing.unity_-_Graphy_-__2018-06-14_20-31-28.jpg
     
  36. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Patch v1.2.2 has been submitted for review in the Asset Store.

    - Improved the dB calculations, now the values are much more precise.
     
  37. PartyBoat

    PartyBoat

    Joined:
    Oct 21, 2012
    Posts:
    97
    Hey Tayx, just wanted to say that Graphy is a fantastic asset, and for the obvious amount of polish and work you've done releasing this for free is deeply altruistic. The fact that you continue to support Graphy after making it free is bad-ass. Thanks again, and keep being an awesome person! :D
     
    limo and Tayx like this.
  38. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Hey PartyBoat! Thanks for the comment, it means a lot! :D (and the awesome review as well)
    Words like yours are what motivate me to continue improving the tool. Hopefully some day it will become the go-to asset for monitoring performance!
     
    stevenatunity and limo like this.
  39. someguywithamouse

    someguywithamouse

    Joined:
    Mar 25, 2018
    Posts:
    9
    Thank you for clarifying this, I will keep that in mind.
     
    Tayx likes this.
  40. dadude123

    dadude123

    Joined:
    Feb 26, 2014
    Posts:
    789
    Hey, nice asset! I got some questions:

    1) Is this using TMP for text rendering?

    2) Can you add your own trackers that make use of existing renderers?
    Like for example I'd like to have a thing that tracks a certain number, and I want to show that in a line-graph, is that possible?

    3) Can you manually "tick" the advance of a graph, or there a fixed relation between width of the graph and time being passed?


    5)
    Can you make it so only every second/third/... datapoint actually advances the graph? As in decreasing the resolution of the graph, if that makes sense?
    I have a data source that I want to show, which only rarely produces datapoints.
    To make the most sense of it visually the whole width of the graph that represents it would have to be "30 minutes" or so. (So left side 30min ago, right side = happened right now).

    6)
    Can you add small text elements to each bar?
    For example the datapoints in #5 could use a small text that moves with the bar that reads something like "2 min ago" or something.


    I don't expect Graphy to come with functionality like described in 5 and 6, and actually creating the UI elements for a custom graph wouldn't be too much of a problem (assuming its all using UGUI). But would integrating a custom graph like that be feasible, or are there some things that would make that really hard?
    Specifically I'm thinking some design-limitations like for example graphs always being advanced at a fixed rate, or maybe it's not possible to add custom text to a bar and have it move with the bar, or something...
     
    Tayx likes this.
  41. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Hey dadude123! I'm loving the detailed questionaire :)

    1) Is this using TMP for text rendering?

    No, it's using Unity UI to improve compatibility. Since it just needs Text and Image components, I decided to go the compatibility route.

    2) Can you add your own trackers that make use of existing renderers?

    You can! You just have to make your own tracking script (this is also in reference to your question 3). Graphy uses a shader to draw the graph, and the shader recieves an array of values to populate it. There is a script called ShaderGraph that contains all the methods you need to update the graph. Take a look at any of this 3 scripts: AudioGraph, FpsGraph or RamGraph to learn how to use the ShaderGraph script.

    3) Can you manually "tick" the advance of a graph, or is there a fixed relation between width of the graph and time being passed?

    When you make your tracking script you can manually decide when to update the graph, giving you full control of the update rate (you could make it a fixed time in the Update method or by calling a method anytime you want to update it). Due to the amount of possible combinations, I decided to leave full control to the user.

    5? (You skipped 4 ;)) ) Can you make it so only every second/third/... datapoint actually advances the graph? As in decreasing the resolution of the graph, if that makes sense?

    Same as 3, because you make the script, you decide :)

    6) Can you add small text elements to each bar? For example the datapoints in #5 could use a small text that moves with the bar that reads something like "2 min ago" or something.

    This is not implemented right now. Are you picturing the text on the side of the graph? Or inside it?


    Thanks again for all the questions, keep them coming! I hope Graphy ends up being useful for you :)
     
    Last edited: Jul 10, 2018
    dadude123 likes this.
  42. tosiabunio

    tosiabunio

    Joined:
    Jun 29, 2010
    Posts:
    115
    Very interesting extension but I have some suggestions.

    I would need the ability to start the monitor hidden and toggle its visibility by API call (e.g. via public Toggle() call).

    It would be great if modules collapsed a bit if the graphs are not in use. Currently, there's a huge gap between FPS, RAM and AUDIO displays in Text Only mode for any of the upper selected.
     
    Tayx likes this.
  43. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Hey tosiabunio! Thanks for making those suggestions!

    The ability to toggle from code is going to be implemented next version, don't worry. Regarding the compacting of the modules, I'm afraid that right now due to how the layout is set manually, it would take some time to convert it to a dynamic layout that can adapt. It's something that I considered in the past, and if more people ask for it I'll probably introduce it :)
     
  44. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Huge news! Graphy is now available on Github as well! You will find the latest and greatest versions there, and it will also make it easier for people to contribute to the project. Let's make Graphy the go-to for performance monitoring in Unity!

    Github Repo: https://github.com/Tayx94/graphy

    With this news, version 1.3 has been submitted for approval, which includes the following changes:

    - Added a second graph to the Audio module that shows the highest spectrum value.
    - Added option to Toggle Active and Mode, as well as setting a specific Preset from the API.
    - Fixed a bug that occured when Time.timeScale = 0 (thanks @xDavidLeon!).

    As always, if you have any questions, don't hesitate to contact me! ;)

    2018-07-15_15-10-05.gif
     
    Last edited: Jul 17, 2018
    glenneroo, Mauri, tosiabunio and 2 others like this.
  45. Eldurin

    Eldurin

    Joined:
    Dec 10, 2017
    Posts:
    19
    Hey Tayx,

    I tried to use an earlier version and got a lot of errors, so I installed the GitHub latest, and still have problems when loading Graphy. My latest attempt was into an Oculus VR project under 2018.2.0f2 and resulted in 28 errors:

    Assets/Tayx/Graphy - Ultimate Stats Monitor/Scripts/GraphyManager.cs(284,105): error CS1061: Type `AudioManager' does not contain a definition for `UpdateParameters' and no extension method `UpdateParameters' of type `AudioManager' could be found. Are you missing an assembly reference?

    As an experiment, I loaded Graphy into a completely new project with no other assets installed, and received a different error:

    NullReferenceException: Object reference not set to an instance of an object
    Tayx.Graphy.Audio.AudioMonitor.FindAudioListener () (at Assets/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Audio/AudioMonitor.cs:169)
    Tayx.Graphy.Audio.AudioMonitor.UpdateParameters () (at Assets/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Audio/AudioMonitor.cs:133)
    Tayx.Graphy.Audio.AudioMonitor.Init () (at Assets/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Audio/AudioMonitor.cs:176)
    Tayx.Graphy.Audio.AudioMonitor.Awake () (at Assets/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Audio/AudioMonitor.cs:68)


    I assume I am missing a prerequisite or something simple with audio set up on my part, but the instructions say to just drop in the prefab, so I thought I'd pop on here and ask about it. Can you point me in the right direction? Thanks!
     
  46. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Hello Eldurin! And thanks for taking the time to write up a detailed post.
    The first error seems like something imported incorrectly, but we can work on the second one :)

    Graphy by default tries to get a reference to the AudioListener attached to the main camera, but if your setup is different and you have the AudioListener elsewhere, you should manually attach it to Graphy so that it doesn't have that null reference exception.

    Set the Find Audio Listener to NEVER, and attach your Audio Listener Game Object to the "Audio Listener" parameter.

    upload_2018-7-24_13-11-16.png

    Seeing as this is an error that can happen to anyone, I'll try to clarify this in the documentation so that people don't get confused.

    If this still doesn't work, let me know and I'll try my best to help. You can also join the Discord server, where we have an active community and we can discuss problems much faster in real time: https://discord.gg/2KgNEHK
     
  47. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Patch v1.4 has been submitted for review in the Asset Store.

    - Updated the header comments in all scripts.
    - Added option to toggle active on start up (thanks @DarkMio).
    - Removed a leftover raycast script in the Graphy UI.Canvas (thanks @DarkMio).
    - Updated the shaders to use UnityObjectToClipPos() (thanks @DarkMio).
    - Bug-Fix: NullRef for EditorStyles.boldlabel (thanks @Flavelius)
     
  48. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Patch v1.4.1 has been submitted for review in the Asset Store.

    - Introduced plenty of safety checks to avoid some null reference errors.
    - Possibly fixed the graphs bug when the Editor is defocused and focused back.
    - Code cleanup and refactoring.
     
    Alverik likes this.
  49. greengremline

    greengremline

    Joined:
    Sep 16, 2015
    Posts:
    183
    Hey, thanks a lot for making this asset free! I'm hooking it up inside my game, but can I make a recommendation about being able to toggle via code? Would you mind changing ToggleActive() to something similar to the following:

    Code (CSharp):
    1. public void ToggleActive()
    2.         {
    3.             if (!m_active)
    4.             {
    5.               Enable();
    6.             }
    7.             else
    8.             {
    9.               Disable();
    10.             }
    11.         }
    12.  
    13.         public void Enable() {
    14.           m_active = true;
    15.           m_fpsManager.RestorePreviousState();
    16.           m_ramManager.RestorePreviousState();
    17.           m_audioManager.RestorePreviousState();
    18.           m_advancedData.RestorePreviousState();
    19.         }
    20.  
    21.         public void Disable() {
    22.           m_active = false;
    23.           m_fpsManager.SetState(ModuleState.OFF);
    24.           m_ramManager.SetState(ModuleState.OFF);
    25.           m_audioManager.SetState(ModuleState.OFF);
    26.           m_advancedData.SetState(ModuleState.OFF);
    27.         }
    Thanks again for making this available (and for free!)
     
    Tayx likes this.
  50. Tayx

    Tayx

    Joined:
    Feb 4, 2015
    Posts:
    73
    Hello zornor90! I'm glad you're enjoying Graphy. Do you need specific access to the Enable/Disable methods? As I understand it, your implementation does the same thing as mine? I feel like I'm missing something.

    You can also make use of:

    public void SetModuleMode(ModuleType moduleType, ModuleState moduleState)
    public void SetPreset(ModulePreset modulePreset)

    Maybe those cover your needs? ;)