Search Unity

Small efficiency ideas

Discussion in 'Wish List' started by Vectrex, Jun 13, 2010.

  1. Vectrex


    Oct 31, 2009
    We all know Unity is about speed of development and workflow. Here's my list of time wasters which could be easily improved

    * Nov 2011 - Added ideas. See this post below

    * March 2011 - Added ideas. See this post below

    * June 2010 - Added ideas
    * July 2010 - Added ideas

    Code (csharp):
    2. Console
    3. *******
    4. - Word wrap button on log output window
    5. - 'Thin' option. Don't print stuff like "UnityEngine.Debug:Log(Object)" under message. Small icons like bottom status line
    7. Windows
    8. *******
    9. - Window shortcuts could toggle window. eg When you pop up the console with ctrl+shift+c, the same combo would remove it.
    10. - Select different layouts for play/edit mode
    12. General
    13. *******
    14. - Duplicate could spawn new object next to existing one. Then do an 'F' on the new object. Use bounding box to determine auto-spacing amount
    15. - Slow-mo button or slider next to transport controls. Basically a controlable timed 'next frame' function.
    16. - Infinite loop/Low framerate detection
    17.     * Allow emergency stop dialog or automatic stop
    19. Project
    20. *******
    21. - Sort by name/type
    23. Hierarchy
    24. *********
    25. - Auto fold toggle button, for GO groups that were auto opened
    26.     * eg when you click on an object, it opens the associated GO groups, but when you click on another object it will also open the GO group, but won't close the last one that automatically opened
    27. - When selecting with shift+up/down arrow, don't add to each end of the selection, use 'normal' shift+arrow behavior.
    28. - Make child GO/keyboard shortcut
    29. - Sort by name/type
    31. Inspector
    32. *********
    33. - Reordering of components (plus sort by name/type)
    34. - Fold/unfold all
    36. Scene window
    37. ************
    38. - Editor look needs to lock the mouse position so you can infinitely mouselook (Change to a look icon or just disappear). The screen warp is nearly there, but I think locking is better as you don't loose the mouse context you were in
    39. - Adjustable WASD move sensitivity. Maybe CTRL could also be super fine movement.
    40. - Auto-follow selected object. (Toggle, like holding F key)
    42. Folders
    43. *******
    44. - Left/Right arrows should be closer to standard windows behaviour
    45.     * If left is pressed while NOT the parent folder, move to parent. If it IS the parent, close folder
    47. Asset Server
    48. ************
    49. - Automated refresh with subtle notification of new commits. Warning of a commit that is conflicting to your local changes (It could even check with logged in people and before commit show a 'are you sure, so-and-so is also working on this file')
    51. Misc
    52. ****
    53. - Prefabs in prefabs. This is probably my biggest time waster. Big topic on features site
    55. Physics
    56. *******
    57. - Have 'OnCollisionAABB' which uses internal physx bounding boxes to allow action before a perfect hit
    58. - Have 'OnCollisionStarting' which allows the user to bail out or alter a collision. eg return false to ignore this collision and NOT call Enter/Stay/Exit
    59.     * This is different to a trigger in that you can selectively ignore certain collisions while maintaining others (and simpler than layers)
    60.         eg for mud I want to detect the collision, but handle the forces myself, while still allowing other objects to collide with it.
    61. - Material pairs
    62.     * Callbacks for special handling of 2 physics materials (See Newton physics engine implementation)
    63.         - eg Barrel vs Rock. Seperate code to both objects
    65. Non-workflow issues/General whinging
    66. ************************************
    67. Console
    68. - Why is it so super slow printing out lots of messages?
    69. Physics
    70. - Inter-penetration: PhysX does a horrible job of this. It should detect the artificial penetration and casually push the objects apart before continuing normal physics. Networking and warping is especially messy because of this and other physics engines handle this gracefully.
    71. Networking
    72. - Allow changing of ownership. ie change who serialises the object
    73. - Allow different serialise rates per object
    74. Shadows
    75. - Allow controllable PSSM split distances
    76. Lipspm projection. Yes it's nasty in some situations, but in others it's great.
    77. - All settings could be per camera shadow options. eg rear vision mirror doesn't need shadows, or less detailed
    78. Misc
    79. - Force feedback. Just simple forces will do.
    80. - Don't have built in stuff like skyboxes. Make them more exposed and generic
    81. - True threaded Physics update (optional)
    82.     * Obviously this would be tricky to run callbacks etc but would help smooth gameplay and use cores
    * Added June/2010
    Code (csharp):
    2. Inspector
    3. ************************************
    4. - Dragging values should lock/hide the mouse cursor to allow infinite dragging not limited by screen edges.
    6. Console
    7. ************************************
    8. - Filter option to only show messages from selected GO's
    9. - (Bit silly) Option to display debug messages in the scene floating above the GO which displayed it (possibly start with an icon indicating new messages and pop them up on mouseover to avoid clutter)
    11. Scene
    12. ************************************
    13. - 'Stamp' tool. This allows you to click on something in the project window which becomes a stamp. Then you can click multiple times in the scene and stamp the object without redragging from project. eg placing hundreds of trees. This could be used for both prefabs and other things like materials.
    14.     * While in stamp mode mouse wheel could rotate on Y, or a more generic 'Click to place. If click THEN HOLD it's in free rotate mode. Let go places'
    16. Asset Server
    17. ************************************
    18. - Allow multiple projects. Why? For shared code and resources used amongst multiple projects/people. You CAN do this now, but it's awkward since the files don't know who they belong to
    21. Non-workflow issues/General whinging
    22. ************************************
    23. Animation
    24. - Allow more than 1 parameter in function call events
    25. - Realtime record. While the whole game is running, realtime record any changes in the selected go's with animation components. Auto add curves as they change
    26.     - Usage 1. Record physics enabling massive displays of physics without the cpu (like crysis)
    27.     - Usage 2. With the slowmo idea you could manually record elaborate sequences with just your mouse dragging parameters
    28. General
    29. - Scene loading callbacks. eg For each object loading let us intercept it BEFORE it actually loads so we can skip certain objects (eg, server/client situations). So something like 'OnGameObjectLoading' 'OnGameObjectLoaded' etc
    * Added July/2010
    Code (csharp):
    2. Hierarchy
    3. ************************************
    4. - when dragging and hovering over GO, open GO group (like standard windows drag-drop)
    5.     - This allows dragging references to closed GO groups
    7. Inspector
    8. ************************************
    9. - When dragging numbers, hold ctrl/alt to 'snap' the values to whole or single decimal that make sense.
    10. - Component presets!
    11.     - I noticed in the reverb zone, presets, but it seems they are hardcode just for reverb zones! Please make this a unity wide feature (script access too would be sweet)
    13. Web player
    14. ************************************
    15. - Build option to set window to webpage size
    16. - On fullscreen use desktop resolution, or at least a compatible aspect ratio if not manually set
    18. Scene
    19. ************************************
    20. - LoadLevel, allow level to be parented to an existing game object. Enables easier management of streaming assets and easier deletion of LoadAdditive level chunks
    21. - Also load asset bundles into existing GO (eg rightclick GO/import asset bundle here)
    23. Gizmos
    24. ************************************
    25. - Fade gizmos when they are occluded by geometry. No need to test occlusion every frame, just round robin it. Option to choose transparency level (eg so you could turn it to zero)
    27. General
    28. ************************************
    29. - Show folder header always. eg If you have any large folder with many items (GO/File folder/Component with lots of parameters) show the title of it at the top always. This should act normally allowing folding of big folders without needing to find the header (iPhone GUI does this)

    Done/Confirmed to be included
    Code (csharp):
    2. Project
    3. *******
    4. - When creating new C# script, set it to rename mode BEFORE creating script. Avoiding the tedious naming of the class too.
    6. Hierarchy window
    7. ************************************
    8. - Automatically make a prefab if you drag a GO into the project window (use the GO name)
    9. - Show references. Toggle to graphically show references from a GO. eg if a component variable links to some other GO, show a dotted line going between both.
    11. - Search for components. Just like the normal search but will display any GO with a matching component.
    12. - Multiple select
    13.     * have tick boxes effect them all (eg GO enable)
    14.     * Filter/gray out parameters not present in all
    16. Sound
    17. - Expose FMOD's buffer callback
    18.     * This would instantly and easily make Unity a fully capable audio system.
    20. Misc
    21. ************************************
    22. ForceFeedback - I made a C++ plugin, search the forum, there's one crash bug I need help with to release it properly!
    24. Web player
    25. ************************************
    26. - Script ability to toggle fullscreen
    27. - AUTO UPDATE! Very important I think!
    29. Sound
    30. ************************************
    31. - Unity 3's mod player. Allow this to be piped through the 3d sound system. I want to use it for sound fx not music!   
    33. Animation
    34. ************************************
    35. - Animated movements don't effect other physics objects! ie they'll push others, but if something is sitting on top of them they won't be effected (think moving/rotating elevator)
    37. Gizmos (they're out of hand!)
    38. ************************************
    39. - Zoom/fade gizmos slightly based on distance (ie min/max size)
    40. - Set gizmo draw/fade distance/ To remove too many gizmos when far away
    41. - General gizmo transparency (eg Audio ones get in the way a lot)
    43. Asset Server
    44. ************************************
    45. - Allow checkout into new empty project. It's weird to have to create a new project, empty it manually, update (while discarding unity files) to get a fresh checkout. Plus it's painful for me in education as I have to checkout many students projects.
    Last edited: Nov 27, 2011
  2. gamesurgeon


    Oct 11, 2009
    Cool ideas and really well thought out. Doubt all of these will be implemented in Unity 3.0, as Unity has a lot on its plate, but it'd be nice to see some of these "time savers" developed.

    Can always be more efficient :D
  3. Vectrex


    Oct 31, 2009
    Thanks, frankly I'm surprised anyone bothers to read my giant lists ;)
    ps I'm adding stuff as I think of it
  4. Lucas Meijer_old

    Lucas Meijer_old

    Apr 5, 2008
    wow, I can't believe nobody here at the office thought of " Automatically make a prefab if you drag a GO into the project window (use the GO name)" before, and nobody asked us for it either :). I just implemented it. Thanks!
  5. Vectrex


    Oct 31, 2009
    Great job on that, thanks for reading. Latest ideas below :D
  6. Vectrex


    Oct 31, 2009
    * Added March/2011
    Code (csharp):
    2. Inspector
    3. *********
    4. - 'Missing mono behaviour' Show the old name of component to help re-attaching. A nice addition might be a 'best guess' chooser for similar named/laid out components.
    5. - New colour widget which is inlined into the inspector instead of a popout window (still allow the popout for high detail (make it bigger for that too))
    6. - The circle 'pop up big selector window' button should place those windows much closer to where you clicked, reducing mouse movement
    7. - Rearrange elements in an array
    8.     * Drag drop
    9.     * Right click 'remove' etc
    10. - Sliders in custom inspectors. Allow dragging on name to change values like normal
    12. Scene window
    13. ************
    14. - Paste WITHOUT relative transform adjustment. Shift+Ctrl+V
    15. - Show network pings in the stats window
    16. - Open source/expose stats window parameters
    17. - 'Static geometry visualiser' as a view option (the pulldown where 'RGB/OverDraw' etc is)
    18.     * Colour different discrete groups differently to visualise unforeseen batching problems
    20. Project
    21. *******
    22. - Sort folders first (optional using os style 'click tab to change sort mode')
    24. Hierarchy
    25. *********
    26. - Highlight prefabs better in non-proskin. Bold? Slight background colour highlight? At the moment the colours are very close together
    28. Console
    29. *******
    30. - Toggle warnings
    31. - Remove bottom status line if console window is open. (Optional)
    32. - When in collapse mode flash the collapsed message when a new one comes in
    34. Windows
    35. *******
    36. - Allow all search windows to be dockable. Contents get replaced when any search (circle icon) is clicked. Avoiding always popping up over content and allow multiple time use.
    37.     * Perhaps one universal window and/or separate windows for different types?
    38. - The top controls for play/move/layers etc could be made into a much smaller window (draggable/resizable?). As now there's lots of wasted real-estate up the top
    39. - Allow wildcards in search boxes
    40. - When searching allow toggle to show parent go's (faded)
    41. - Ctrl+Tab cycle focused window, especially while maximised. I see this exists but doesn't seem to actually highlight next window (eg using arrow keys to move around files/go's)
    42. - Flash objects on asset auto-reload to show what was updated and who is using it.
    43.     * Perhaps this could optionally toggle the 'show assets using a resource' search on the new asset
    45. General
    46. *******
    47. - Option to allow asset auto-reloading when unity ISN'T focused. Better flow for coding and art changes without clicking back and forth.
    48. - When clicking 'Control+B' to do a quick build, don't actually rebuild if no changes were made. Just for quick launch testing, especially for multiple client multiplayer game testing.
    49. - Touch input emulation
    50.     * A toggle to allow mouse clicks/drags. Also part of this could be to allow true multitouch in Windows 7. There are plenty of multitouch win7 tablets around.
    52. Non-workflow issues/General whinging
    53. ************************************
    54. - Open source the start-up resolution/key selector window (pro only?). Or better still, provide an in engine example window which does the same things. Seems like an unnecessary window when it could just appear in game and be customisable and much more useful.
    55. Sound
    56. - Expose FMOD's MOD functionality more. Especially the individual tracks volume allowing simple procedural music on mobiles and web!
    57. Animation
    58. - Make the event function call pass back the owning animation who called it. eg If I have 2 animations playing from the same animation component, I've got no idea who called an event. Just overload the functions so it stays compatible
    59. Terrain
    60. - Separate out the tree and grass drawing code into their own component for use on non-terrain stuff.
    61. - Option to prerender X number of views into an atlas to allow per tree rotations.
    62. - Make billboarding tree thing generic for LOD use on anything.
    Last edited: Nov 27, 2011
  7. 2dfxman1


    Oct 6, 2010
    tex2d selection window to display folders, not all textures in one huge mess. It's very hard to find the right texture when they all have the same name
  8. NinKenDo


    Jul 28, 2010
    Heh, these all sound quite familar. Reminds me of last year and all the little frustrations that drove me up the wall on the more difficult days.

    Last edited: Mar 30, 2011
  9. Vectrex


    Oct 31, 2009
    * Added Nov/2011

    Code (csharp):
    2. [B]Scene view[/B]
    3. 'Batching visualiser' as a view option (the pulldown where 'RGB/OverDraw' etc is)
    4.     ● Colour different batches to visualise unforeseen runtime batching problems
    5. ● Allow selected objects to NOT show wireframe. Sometimes it really gets in the way when you’re trying to visualise changes in context
    6.     ● Just add another icon next to ‘lighting, skybox, audio’ toggle buttons
    7.     ● Might need an alternative way to show selections in this mode. Maybe a temporary flash pulse.
    8. ● Visualise selected objects slightly, even if they are occluded (subtle wireframe/solid poly perhaps)
    9. In wireframe mode gradiate the colour depending on distance (clip plane range). This would make a usually unusable iso view visualise distance much better.
    10. If you click more than once on the same spot, select the object BEHIND the the first clicked object. Very handy in wireframe when a wall is in the way. This could be done x times to traverse through depth in a scene
    11.     ● Ctrl+click could traverse the other way allowing you to quickly hone in on an object regardless of the mess in the way
    12. ● Selectionless focus. Still using the F key, when nothing is selected focus on the object under the cursor. Raycast into the scene and back off a fixed amount (maybe altered by the mouse wheel)
    13. ● The snap combo (Ctrl+Shift) it should snap to the cursor all the time (not just when you click the middle of the transform gizmo)
    15. [B]Hierarchy[/B]
    16. ● Drag component onto hierarchy blank space to create an empty GameObject with the same name and auto-attach the component
    17. ● ‘Show visible’ hierarchy mode. This will only show GO’s visible to the scene/game camera (or just grey out non-visible ones). Would make visualising the scene GO’s much quicker
    18.     ● 2 extra icon buttons for using scene and game window camera (either could be on or off. When both are off it shows all GO’s like normal)
    19. ● Auto-detect identical GO’s and give option to create a prefab and replace them all with instances.
    20.     ● Also detect acceptable changes and maintain them per instance
    21. ● ‘Group as children’. Multiple GO selected, rightclick ‘create parent GO’, makes an empty parent GO and places them all as children.
    22. ● GO prefab dragging/creation
    23.     ● Allow multiple GO’s to be dragged to project window for bulk prefab creating
    24.     ● Doesn’t let you to undo action
    25. ● Clicking on a drag dropped variable only highlights the GO where it comes from. If it’s been dragged from the SAME GO it doesn’t highlight the other component in the same way (if it’s off the scroll area, flash an arrow)
    27. [B]Game view[/B]
    28. ● ‘Show actual size’
    29.     ● For mobiles mainly, enter your desktop screen size (eg 24) and your desired destination screen size to auto scale the game window to actual size.
    31. [B]Profiler[/B]
    32. ● Record camera positions and replay as you scrub through the timeline
    33. This could actually be a generic ‘record any component changes in timeline’ option, where recording the transform of the main camera is just one example. It’d be a simple history recorder that you could scrub through variable contents to hint at causes of problems
    35. [B]Asset server[/B]
    36. In the changes display, reuse the project windows file display with full folding. With folding this would be much easier to deal with and visualise.
    38. [B]MonoDevelop[/B]
    39. ● Have a button (or automatically) attach to Unity process instead of run/attach dialogue
    41. [B]Inspector[/B]
    42. ● Open in new inspector
    43.     ● Right clicking on a GO or prefab should NOT actually select it
    44.     ● It adds the option of opening it in a new inspector window to allow much easier multipane drag dropping (until ‘drag, hold, show inspector for GO under hover’)
    45.     ● Set to lock (or have 2 options for both normal and locked)
    47. [B]Misc[/B]
    48. ● Allow Unity remote to work on iOS devices from windows. There is no technical reason this part wouldn’t work and would come in very handy when you may not be able to work on a mac (especially in education where you use the computers you’re allocated)
    49. ● Package import dialogue 'Import into selected folder' tickbox. eg if you want a code package to go into your own code folder, just select it, tick the box and it goes there instead of the root.
    50. ● FBXImporter scale doesn’t scale the relative transforms of child GO’s, only the meshes
    51. ● ‘Run physics on selected objects’ option in edit mode. Helps settle particular groups of physics objects without any copy/paste runmode hacks
    52. ● Optional messages/events for end of animation/sound etc (Basically as if you manually put an event message in the Animation timeline at the end)
    53. (!) Alternate hierarchy view which shows a node style layout with arrows showing drag-dropped variable connections. Sounds nuts, but really, whats the difference between a node code editor and a node representation of connections between GO’s?
    55. [B]Unity Team[/B]
    56. ● QA
    57.     ● Drop bug object in scene (This can be a normal GO allowing any custom info/functionality)
    58.     ● On crash server drops crash object where they were (and where they were looking), highlighting the gameobject that they had open if applicable
    59.     ● Record buffer of input/locations
    62. [B]Misc non-workflow related[/B]
    64. [B]Code[/B]
    65. Object Pool
    66.     ● When using Instantiate and Destroy could Unity have an option to handle pre-instantiated pools of prefabs? So the utilisation would be transparent to the gameplay code and allow much more freedom for coding.
    67.     ● Maybe like
    69.     void Awake()
    70.     {
    71.         PreparePrefabPool(prefab, numberInPool);
    72.     }
    74.     ● Then when using Instantiate(prefab) with the same prefab Unity knows to grab one from the pool and reset it’s variables to default instead of actually spawning.
    75.     ● Same idea with Destroy. Internally just disable pool object and tag it as avaliable
    76.     ● Perhaps it needs to be explicitly requested like Instantiate(prefab, true); // with true being whether to grab from a pool if it exists.
    77.     ● This would really help make mobile spawning problems transparent and help beginners make glitch free games
    79. [B]Misc[/B]
    80. ● Multitouch in Windows (7 and 8 fully support it. Look at the Samsung Slate 7)
    82. [B]Scene view[/B]
    83. ● Mipmap view
    84.     ● Option to display number of mipmap as well as colourisation effect
    86. [B]AssetStore[/B]
    87. For sounds files allow playback of 1/4 of it as a preview
    89. [B]MonoDevelop[/B]
    90. ● Allow different IDE’s to be associated for different script languages
    91. ● Swap between languages (see SharpDevelops ability to magically convert between IL languages! Imagine.. no more language wars :)
    Last edited: Nov 27, 2011