Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

.Peek Build Inspector

Discussion in 'Assets and Asset Store' started by WellFiredDevelopment, Sep 9, 2018.

  1. WellFiredDevelopment

    WellFiredDevelopment

    Joined:
    Jun 16, 2012
    Posts:
    661
    Hello everyone!

    Today we're announcing the release of our latest Unity Application .Peek!

    Your project build size needs to stay under control ?
    You want your assets to remain optimized to ensure your game meets the performance expected ?
    .Peek is for you !

    .Peek is a tool that automatically creates a report of what goes in your build, and what does not.

    It is a must have for any development team that wants to react on time when undesirable assets are integrated to the project.

    We've built .Peek with usability in mind and it scales up to any project size without any issue! Running and supporting people working on projects from a couple of Mb up to 120gb! (Yes, 120Gb, that's not a typo!)

    .Peek asset store page!
    https://assetstore.unity.com/packages/tools/utilities/peek-build-inspector-119621

    .Peek Website!
    https://wellfired.com/dotpeek/dotpeek

    .Peek Documentation!
    https://dotpeek-documentation.readthedocs.io/en/stable/

    Checkout our product roadmap!
    https://wellfired.com/dotpeek/roadmap

     
    Last edited: Sep 9, 2018
  2. WellFiredDevelopment

    WellFiredDevelopment

    Joined:
    Jun 16, 2012
    Posts:
    661
    Hello all!

    We've just submitted a new update to .Peek to the asset store with some small changes, based on feedback from you guys!

    You can checkout our Release Notes on our public tracker

    For those of you who want a quick overview, The main fix was Type to search being displayed when editting an asset name, as well as click to select objects in your .Peek build report!
     
    ThibaultGouala likes this.
  3. WellFiredDevelopment

    WellFiredDevelopment

    Joined:
    Jun 16, 2012
    Posts:
    661
    Hello guys!

    I wanted to share this quick gif showing just how fast searching and sorting is in .Peek for a project of any size!

    If you guys are missing any tutorials or features feel free to give us a shout and we'll be sure to add them for you!

    Regards,
    Terry

     
    ThibaultGouala likes this.
  4. WellFiredDevelopment

    WellFiredDevelopment

    Joined:
    Jun 16, 2012
    Posts:
    661
    Find out how many textures from third party plugins are unknowingly being included in your build!
    1. Type plugin name
    2. Type texture filter
    3. profit!

     
    tgouala-wellfiredLtd likes this.
  5. tgouala-wellfiredLtd

    tgouala-wellfiredLtd

    Joined:
    Jun 8, 2013
    Posts:
    99
    Here a full demo of .Peek features in animated gifs, any question, please feel free to write on this thread.

    Overview of what changed between two builds, ideal to see where there is much space for optimization, or understand which kind of assets is added the most in your build recently :

    peek_comparison_small.gif

    See which changes since last builds impact the most your build size. You can also easily detect if a file was compressed in the project, and somebody replaced it without compressing it. It's also possible some plugin you use are added more than you wish to your build. Find them all ! :

    peek_comparison_assets.gif

    Browse your files with powerful and non UI blocking filtering :

    peek_comparison_filter.gif
     
    Last edited: Nov 27, 2018
    tigerleapgorge likes this.
  6. MD_Reptile

    MD_Reptile

    Joined:
    Jan 19, 2012
    Posts:
    2,626
    Is it pronounced "dot-peek"? as in... JetBrains DotPeek? Would seem to be a confusing name if so, because users might not find it during searches and stuff like that. Anyway, looks neat!
     
    tigerleapgorge likes this.
  7. tgouala-wellfiredLtd

    tgouala-wellfiredLtd

    Joined:
    Jun 8, 2013
    Posts:
    99
    Demo part 2 :

    Remove files that are not used anymore in your project to ensure your project open and switch to different platform quickly :

    peek_comparison_unused.gif

    See which build setting change could be the cause of unwanted assets, or bug in your game :

    peek_comparison_buildSettings.gif
     
  8. tgouala-wellfiredLtd

    tgouala-wellfiredLtd

    Joined:
    Jun 8, 2013
    Posts:
    99
    Indeed ! We realized that after we had a bunch of tool starting with dot in the pipeline. We are also very big fan of Jet Brain and Rider that are very inspiring to provide quality tools. We are too small to shadow Jet Brain on Google, and most user looking for our tool will do it from the asset store where no Jet Brain tools are. So no worries for the moment.

    We want to make this tool useful and most importantly a real time saver. Any ideas for its application or future features we should add are very welcome ;)
     
    Last edited: Nov 27, 2018
    tigerleapgorge and MD_Reptile like this.
  9. MD_Reptile

    MD_Reptile

    Joined:
    Jan 19, 2012
    Posts:
    2,626
    Makes sense. Well good luck! Looks like a useful tool from what I can tell.
     
  10. Aurelinator

    Aurelinator

    Joined:
    Feb 27, 2012
    Posts:
    11
    Hi there - I just purchased .Peek (was excited to see what it would generate for our project) but I'm not able to get it working. As soon as I finish importing the UnityPackage, I get 9 hits in the console of the following:

    Code (csharp):
    1.  
    2. System.InvalidOperationException: Operation is not valid due to the current state of the object.
    3.   at Mono.Cecil.ModuleDefinition.ReadSymbols (Mono.Cecil.Cil.ISymbolReader reader) [0x0002f] in <a3989f8c34e6476eaca56644d5639ee8>:0
    4.   at Mono.Cecil.ModuleReader.ReadSymbols (Mono.Cecil.ModuleDefinition module, Mono.Cecil.ReaderParameters parameters) [0x0004a] in <a3989f8c34e6476eaca56644d5639ee8>:0
    5.   at Mono.Cecil.ModuleReader.CreateModule (Mono.Cecil.PE.Image image, Mono.Cecil.ReaderParameters parameters) [0x00081] in <a3989f8c34e6476eaca56644d5639ee8>:0
    6.   at Mono.Cecil.ModuleDefinition.ReadModule (Mono.Disposable`1[T] stream, System.String fileName, Mono.Cecil.ReaderParameters parameters) [0x0000d] in <a3989f8c34e6476eaca56644d5639ee8>:0
    7.   at Mono.Cecil.ModuleDefinition.ReadModule (System.String fileName, Mono.Cecil.ReaderParameters parameters) [0x0006c] in <a3989f8c34e6476eaca56644d5639ee8>:0
    8.   at Mono.Cecil.AssemblyDefinition.ReadAssembly (System.String fileName, Mono.Cecil.ReaderParameters parameters) [0x00000] in <a3989f8c34e6476eaca56644d5639ee8>:0
    9.   at AssemblyUpdater.Core.AssemblyUpdaterContext.ReadAssembly (System.String assemblyPath, APIUpdater.Framework.Log.IAPIUpdaterListener listener, System.IO.FileAccess mode, System.String[] searchPaths) [0x00071] in <9b15f78862324bb78e7634166b702b09>:0
    10.   at AssemblyUpdater.Core.AssemblyUpdaterContext.From (System.String assemblyPath, APIUpdater.Framework.Configuration.IConfigurationProvider configuration, System.String[] assemblySearchPaths, AssemblyUpdater.Core.UpdaterMode mode, APIUpdater.Framework.Log.IAPIUpdaterListener listener) [0x0002b] in <9b15f78862324bb78e7634166b702b09>:0
    11.   at AssemblyUpdater.Core.AssemblyUpdaterContext.From (System.String assemblyPath, System.String[] assemblySearchPaths, AssemblyUpdater.Core.UpdaterMode mode, APIUpdater.Framework.Log.IAPIUpdaterListener listener) [0x00001] in <9b15f78862324bb78e7634166b702b09>:0
    12.   at AssemblyUpdater.Application.Program.CheckForObsoleteAPIUsage (AssemblyUpdater.Application.CommandLineSpec config) [0x00013] in <9b15f78862324bb78e7634166b702b09>:0
    13.   at AssemblyUpdater.Application.Program.Main (System.String[] args) [0x00057] in <9b15f78862324bb78e7634166b702b09>:0
    14. 0x0000000141535168 (Unity) StackWalker::GetCurrentCallstack
    15. 0x000000014153B6A6 (Unity) StackWalker::ShowCallstack
    16. 0x000000014140A88B (Unity) GetStacktrace
    17. 0x00000001408AF040 (Unity) DebugStringToFile
    18. 0x00000001418D6AF8 (Unity) DebugLogHandler_CUSTOM_Internal_Log
    19. 0x000000003E3DEDB0 (Mono JIT Code) (wrapper managed-to-native) UnityEngine.DebugLogHandler:Internal_Log (UnityEngine.LogType,string,UnityEngine.Object)
    20. 0x000000003E3DEC83 (Mono JIT Code) [DebugLogHandler.cs:10] UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
    21. 0x000000003E3DE5B5 (Mono JIT Code) [Logger.cs:48] UnityEngine.Logger:Log (UnityEngine.LogType,object)
    22. 0x000000003F5F4E39 (Mono JIT Code) [Debug.bindings.cs:117] UnityEngine.Debug:LogError (object)
    23. 0x000000003F5DA0EB (Mono JIT Code) [APIUpdaterHelper.cs:126] UnityEditor.Scripting.APIUpdaterHelper:DoesAssemblyRequireUpgrade (string)
    24. 0x0000000023D5316B (Mono JIT Code) (wrapper runtime-invoke) <Module>:runtime_invoke_bool_object (object,intptr,intptr,intptr)
    25. 0x00007FFC2F2BA4DB (mono-2.0-bdwgc) [mini-runtime.c:2809] mono_jit_runtime_invoke
    26. 0x00007FFC2F241AE2 (mono-2.0-bdwgc) [object.c:2915] do_runtime_invoke
    27. 0x00007FFC2F24AACF (mono-2.0-bdwgc) [object.c:2962] mono_runtime_invoke
    28. 0x0000000140C036EA (Unity) scripting_method_invoke
    29. 0x0000000140BFB920 (Unity) ScriptingInvocation::Invoke
    30. 0x0000000140BF69DA (Unity) ScriptingInvocation::Invoke<bool>
    31. 0x00000001413DEED7 (Unity) ScriptUpdatingManager::CheckObsoleteUnityEngineUsage
    32. 0x0000000140E72B97 (Unity) ScriptCompilationPipelinePostProcessAssets
    33. 0x0000000141FAFF5F (Unity) Postprocess
    34. 0x0000000141FD2004 (Unity) AssetInterface::ApplyDefaultPostprocess
    35. 0x0000000141FE278C (Unity) AssetInterface::ProcessAssetsImplementation
    36. 0x0000000141FEC2EA (Unity) AssetInterface::StopAssetEditing
    37. 0x0000000141FE79D3 (Unity) AssetInterface::Refresh
    38. 0x0000000141F9D690 (Unity) AssetDatabase::Refresh
    39. 0x00000001413CA746 (Unity) ImportPackageAssets
    40. 0x00000001413CFE82 (Unity) TickPackageImport
    41. 0x0000000141447D81 (Unity) Application::TickTimer
    42. 0x00000001415E66C5 (Unity) MainMessageLoop
    43. 0x00000001415E8AAC (Unity) WinMain
    44. 0x000000014242A9EA (Unity) __scrt_common_main_seh
    45. 0x00007FFC6E043034 (KERNEL32) BaseThreadInitThunk
    46. 0x00007FFC70A41471 (ntdll) RtlUserThreadStart
    47.  
    After that, it recompiles all of our assemblies, and when I try to open the window, it finally triggers the following error messages:

    Code (csharp):
    1. DirectoryNotFoundException: Could not find a part of the path 'C:\Users\{MYUSERNAMEREDACTED}\Documents\DotPeekReports\300a77c2-160e-4215-8e21-65d8eb6d0c31\300a77c2-160e-4215-8e21-65d8eb6d0c31'.
    2. System.IO.__Error.WinIOError (System.Int32 errorCode, System.String maybeFullPath) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    3. System.IO.FileSystemEnumerableIterator`1[TSource].HandleError (System.Int32 hr, System.String path) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    4. System.IO.FileSystemEnumerableIterator`1[TSource].CommonInit () (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    5. System.IO.FileSystemEnumerableIterator`1[TSource]..ctor (System.String path, System.String originalUserPath, System.String searchPattern, System.IO.SearchOption searchOption, System.IO.SearchResultHandler`1[TSource] resultHandler, System.Boolean checkHost) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    6. System.IO.FileSystemEnumerableFactory.CreateFileNameIterator (System.String path, System.String originalUserPath, System.String searchPattern, System.Boolean includeFiles, System.Boolean includeDirs, System.IO.SearchOption searchOption, System.Boolean checkHost) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    7. System.IO.Directory.InternalGetFileDirectoryNames (System.String path, System.String userPathOriginal, System.String searchPattern, System.Boolean includeFiles, System.Boolean includeDirs, System.IO.SearchOption searchOption, System.Boolean checkHost) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    8. System.IO.Directory.InternalGetFiles (System.String path, System.String searchPattern, System.IO.SearchOption searchOption) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    9. System.IO.Directory.GetFiles (System.String path, System.String searchPattern) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    10. WellFired.Peek.ViewModel.BuildReportsLister.get_Files () (at <287e1960d51142d988a02ce08046dec4>:0)
    11. WellFired.Peek.ViewModel.ReportListVM.InitializeReportsList () (at <287e1960d51142d988a02ce08046dec4>:0)
    12. WellFired.Peek.ViewModel.ReportListVM..ctor (WellFired.Peek.ViewModel.IBuildReportsLister buildReportsLister, WellFired.Peek.Generator.Storage.IBuildReportStorage buildReportStorage, WellFired.Peek.ViewModel.IBuildReportManager buildReportManager, WellFired.Peek.ViewModel.Toolbox toolbox) (at <287e1960d51142d988a02ce08046dec4>:0)
    13. WellFired.Peek.ViewModel.DotPeek.Inject (WellFired.Guacamole.Diagnostics.ILogger logger, System.ComponentModel.INotifyPropertyChanged persistentData, WellFired.Guacamole.Platforms.IPlatformProvider platformProvider) (at <287e1960d51142d988a02ce08046dec4>:0)
    14. WellFired.Guacamole.Unity.Editor.GuacamoleWindow.ResetForSomeReason () (at <bc0d00c1cc7142658dd5af8c8d263b8b>:0)
    15. WellFired.Guacamole.Unity.Editor.GuacamoleWindow.Launch (WellFired.Guacamole.InitializationContext.IInitializationContext initializationContext) (at <bc0d00c1cc7142658dd5af8c8d263b8b>:0)
    16. WellFired.Guacamole.Unity.Editor.Application.Launch (WellFired.Guacamole.Unity.Editor.InitializationContext initializationContext, System.Type persistantType) (at <bc0d00c1cc7142658dd5af8c8d263b8b>:0)
    17. WellFired.Guacamole.Unity.Editor.LaunchableApplication.Launch[TWindow,TViewModel] (WellFired.Guacamole.Data.UIRect uiRect, WellFired.Guacamole.Data.UISize minSize, System.String title, System.Boolean allowMultiple, System.String applicationName, System.String companyName, System.Type persistantType, System.Reflection.Assembly[] externalRenderersAssemblies) (at <bc0d00c1cc7142658dd5af8c8d263b8b>:0)
    18. WellFired.Peek.Application.Unity.Editor.WindowLauncher.Launch (System.String companyName, System.String applicationName, System.String applicationTitle) (at <8ed0852951bf426984a3f78045e6aae9>:0)
    19. WellFired.Peek.Application.Unity.Editor.DotPeek.OpenWindow () (at <8ed0852951bf426984a3f78045e6aae9>:0)
    20. WellFired.Peek.Application.Unity.Editor.Callbacks.OpenDotPeek.Launch () (at <8ed0852951bf426984a3f78045e6aae9>:0)
    and finally:

    Code (csharp):
    1. UnauthorizedAccessException: Access to the path 'C:\Users\{MYUSERNAMEREDACTED}\AppData\Local\Guacamole\Guacamole\Unity\Keys\' is denied.
    2. System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    3. System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.IO.FileOptions options, System.String msgPath, System.Boolean bFromProxy, System.Boolean useLongPath, System.Boolean checkHost) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    4. (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,System.IO.FileOptions,string,bool,bool,bool)
    5. System.IO.StreamWriter.CreateFile (System.String path, System.Boolean append, System.Boolean checkHost) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    6. System.IO.StreamWriter..ctor (System.String path, System.Boolean append, System.Text.Encoding encoding, System.Int32 bufferSize, System.Boolean checkHost) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    7. System.IO.StreamWriter..ctor (System.String path, System.Boolean append, System.Text.Encoding encoding, System.Int32 bufferSize) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    8. System.IO.StreamWriter..ctor (System.String path, System.Boolean append, System.Text.Encoding encoding) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    9. (wrapper remoting-invoke-with-check) System.IO.StreamWriter..ctor(string,bool,System.Text.Encoding)
    10. System.IO.File.WriteAllText (System.String path, System.String contents, System.Text.Encoding encoding) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    11. System.IO.File.WriteAllText (System.String path, System.String contents) (at <f826c2584fc94ec19a48a6576640bdc5>:0)
    12. WellFired.Guacamole.DataStorage.Storages.FileStorageService.Write (System.String data, System.String key) (at <9cbcd5d80abc45fa8d2c6e2c9c06a614>:0)
    13. WellFired.Guacamole.WindowContext.ContextStorage.Save (System.String windowID, WellFired.Guacamole.WindowContext.Context context) (at <9cbcd5d80abc45fa8d2c6e2c9c06a614>:0)
    14. WellFired.Guacamole.Unity.Editor.GuacamoleWindow.OnDisable () (at <bc0d00c1cc7142658dd5af8c8d263b8b>:0)
    15. UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
    I've tried reimporting- I've tried closing and reopening Unity - I've tried a number of other things, only to get nothing.

    I'm on 2018.2.1f, using the NET4.X runtime.

    Is there anything I can do to get unblocked here?
     
    tigerleapgorge likes this.
  11. tgouala-wellfiredLtd

    tgouala-wellfiredLtd

    Joined:
    Jun 8, 2013
    Posts:
    99
    Hi @Aurelinator ,

    So sorry to hear that. This is similar to another user issue so I added your bug report here :
    https://bitbucket.org/wellfired/wel...ng-on-both-win-mac-2018216f1#comment-49169470

    The 9 hits in the console are due to some mono recompilling and should not impact the usage of the tool. For the rest, it should not happen of course.

    Is it possible for you to follow this bitbucket thread ? And also meanwhile to reach us on support@wellfired.com so we can ask you more personal questions about development environment if necessary.

    We will try our best to fix it ASAP !
     
  12. tgouala-wellfiredLtd

    tgouala-wellfiredLtd

    Joined:
    Jun 8, 2013
    Posts:
    99
    Hi @Aurelinator ,

    It looks like we could reproduce the issue and fix it. Please send us your invoice on support@wellfired.com and you will receive a new package by mail as soon as we finish reviewing changes and running all our tests (1 or 2 days max).
     
  13. tgouala-wellfiredLtd

    tgouala-wellfiredLtd

    Joined:
    Jun 8, 2013
    Posts:
    99
    .Peek 2018.2.3 was released and should fix the issue @Aurelinator
    Let us know what you think of the tool.
     
  14. tgouala-wellfiredLtd

    tgouala-wellfiredLtd

    Joined:
    Jun 8, 2013
    Posts:
    99
  15. BNJMO

    BNJMO

    Joined:
    Dec 6, 2015
    Posts:
    8
    I really love working with peek. However, something I find very frustrating is the total absence of the inspector window. Sometimes I do need it instead of the smaller inspector like for example when you import a new texture and you want to change its type to a sprite. This limitation makes me exit the Peek full-screen mode very often and I find it very inconvenient.
     
unityunity