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 http://forum.unity3d.com/threads/51433-Small-efficiency-ideas?p=753469&viewfull=1#post753469 * March 2011 - Added ideas. See this post below http://forum.unity3d.com/threads/51433-Small-efficiency-ideas?p=532940&viewfull=1#post532940 * June 2010 - Added ideas * July 2010 - Added ideas Code (csharp): Console ******* - Word wrap button on log output window - 'Thin' option. Don't print stuff like "UnityEngine.Debug:Log(Object)" under message. Small icons like bottom status line Windows ******* - Window shortcuts could toggle window. eg When you pop up the console with ctrl+shift+c, the same combo would remove it. - Select different layouts for play/edit mode General ******* - 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 - Slow-mo button or slider next to transport controls. Basically a controlable timed 'next frame' function. - Infinite loop/Low framerate detection * Allow emergency stop dialog or automatic stop Project ******* - Sort by name/type Hierarchy ********* - Auto fold toggle button, for GO groups that were auto opened * 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 - When selecting with shift+up/down arrow, don't add to each end of the selection, use 'normal' shift+arrow behavior. - Make child GO/keyboard shortcut - Sort by name/type Inspector ********* - Reordering of components (plus sort by name/type) - Fold/unfold all Scene window ************ - 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 - Adjustable WASD move sensitivity. Maybe CTRL could also be super fine movement. - Auto-follow selected object. (Toggle, like holding F key) Folders ******* - Left/Right arrows should be closer to standard windows behaviour * If left is pressed while NOT the parent folder, move to parent. If it IS the parent, close folder Asset Server ************ - 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') Misc **** - Prefabs in prefabs. This is probably my biggest time waster. Big topic on features site Physics ******* - Have 'OnCollisionAABB' which uses internal physx bounding boxes to allow action before a perfect hit - 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 * This is different to a trigger in that you can selectively ignore certain collisions while maintaining others (and simpler than layers) eg for mud I want to detect the collision, but handle the forces myself, while still allowing other objects to collide with it. - Material pairs * Callbacks for special handling of 2 physics materials (See Newton physics engine implementation) - eg Barrel vs Rock. Seperate code to both objects Non-workflow issues/General whinging ************************************ Console - Why is it so super slow printing out lots of messages? Physics - 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. Networking - Allow changing of ownership. ie change who serialises the object - Allow different serialise rates per object Shadows - Allow controllable PSSM split distances Lipspm projection. Yes it's nasty in some situations, but in others it's great. - All settings could be per camera shadow options. eg rear vision mirror doesn't need shadows, or less detailed Misc - Force feedback. Just simple forces will do. - Don't have built in stuff like skyboxes. Make them more exposed and generic - True threaded Physics update (optional) * Obviously this would be tricky to run callbacks etc but would help smooth gameplay and use cores * Added June/2010 Code (csharp): Inspector ************************************ - Dragging values should lock/hide the mouse cursor to allow infinite dragging not limited by screen edges. Console ************************************ - Filter option to only show messages from selected GO's - (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) Scene ************************************ - '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. * 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' Asset Server ************************************ - 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 Non-workflow issues/General whinging ************************************ Animation - Allow more than 1 parameter in function call events - 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 - Usage 1. Record physics enabling massive displays of physics without the cpu (like crysis) - Usage 2. With the slowmo idea you could manually record elaborate sequences with just your mouse dragging parameters General - 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): Hierarchy ************************************ - when dragging and hovering over GO, open GO group (like standard windows drag-drop) - This allows dragging references to closed GO groups Inspector ************************************ - When dragging numbers, hold ctrl/alt to 'snap' the values to whole or single decimal that make sense. - Component presets! - 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) Web player ************************************ - Build option to set window to webpage size - On fullscreen use desktop resolution, or at least a compatible aspect ratio if not manually set Scene ************************************ - LoadLevel, allow level to be parented to an existing game object. Enables easier management of streaming assets and easier deletion of LoadAdditive level chunks - Also load asset bundles into existing GO (eg rightclick GO/import asset bundle here) Gizmos ************************************ - 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) General ************************************ - 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): Project ******* - When creating new C# script, set it to rename mode BEFORE creating script. Avoiding the tedious naming of the class too. Hierarchy window ************************************ - Automatically make a prefab if you drag a GO into the project window (use the GO name) - 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. - Search for components. Just like the normal search but will display any GO with a matching component. - Multiple select * have tick boxes effect them all (eg GO enable) * Filter/gray out parameters not present in all Sound - Expose FMOD's buffer callback * This would instantly and easily make Unity a fully capable audio system. Misc ************************************ ForceFeedback - I made a C++ plugin, search the forum, there's one crash bug I need help with to release it properly! Web player ************************************ - Script ability to toggle fullscreen - AUTO UPDATE! Very important I think! Sound ************************************ - 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! Animation ************************************ - 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) Gizmos (they're out of hand!) ************************************ - Zoom/fade gizmos slightly based on distance (ie min/max size) - Set gizmo draw/fade distance/ To remove too many gizmos when far away - General gizmo transparency (eg Audio ones get in the way a lot) Asset Server ************************************ - 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.
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
Thanks, frankly I'm surprised anyone bothers to read my giant lists ps I'm adding stuff as I think of it
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!
* Added March/2011 Code (csharp): Inspector ********* - '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. - 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)) - The circle 'pop up big selector window' button should place those windows much closer to where you clicked, reducing mouse movement - Rearrange elements in an array * Drag drop * Right click 'remove' etc - Sliders in custom inspectors. Allow dragging on name to change values like normal Scene window ************ - Paste WITHOUT relative transform adjustment. Shift+Ctrl+V - Show network pings in the stats window - Open source/expose stats window parameters - 'Static geometry visualiser' as a view option (the pulldown where 'RGB/OverDraw' etc is) * Colour different discrete groups differently to visualise unforeseen batching problems Project ******* - Sort folders first (optional using os style 'click tab to change sort mode') Hierarchy ********* - Highlight prefabs better in non-proskin. Bold? Slight background colour highlight? At the moment the colours are very close together Console ******* - Toggle warnings - Remove bottom status line if console window is open. (Optional) - When in collapse mode flash the collapsed message when a new one comes in Windows ******* - 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. * Perhaps one universal window and/or separate windows for different types? - 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 - Allow wildcards in search boxes - When searching allow toggle to show parent go's (faded) - 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) - Flash objects on asset auto-reload to show what was updated and who is using it. * Perhaps this could optionally toggle the 'show assets using a resource' search on the new asset General ******* - Option to allow asset auto-reloading when unity ISN'T focused. Better flow for coding and art changes without clicking back and forth. - 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. - Touch input emulation * 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. Non-workflow issues/General whinging ************************************ - 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. Sound - Expose FMOD's MOD functionality more. Especially the individual tracks volume allowing simple procedural music on mobiles and web! Animation - 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 Terrain - Separate out the tree and grass drawing code into their own component for use on non-terrain stuff. - Option to prerender X number of views into an atlas to allow per tree rotations. - Make billboarding tree thing generic for LOD use on anything.
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
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. -CommunistKenCat
* Added Nov/2011 Code (csharp): [B]Scene view[/B] ● 'Batching visualiser' as a view option (the pulldown where 'RGB/OverDraw' etc is) ● Colour different batches to visualise unforeseen runtime batching problems ● Allow selected objects to NOT show wireframe. Sometimes it really gets in the way when you’re trying to visualise changes in context ● Just add another icon next to ‘lighting, skybox, audio’ toggle buttons ● Might need an alternative way to show selections in this mode. Maybe a temporary flash pulse. ● Visualise selected objects slightly, even if they are occluded (subtle wireframe/solid poly perhaps) ● In wireframe mode gradiate the colour depending on distance (clip plane range). This would make a usually unusable iso view visualise distance much better. ● 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 ● Ctrl+click could traverse the other way allowing you to quickly hone in on an object regardless of the mess in the way ● 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) ● 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) [B]Hierarchy[/B] ● Drag component onto hierarchy blank space to create an empty GameObject with the same name and auto-attach the component ● ‘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 ● 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) ● Auto-detect identical GO’s and give option to create a prefab and replace them all with instances. ● Also detect acceptable changes and maintain them per instance ● ‘Group as children’. Multiple GO selected, rightclick ‘create parent GO’, makes an empty parent GO and places them all as children. ● GO prefab dragging/creation ● Allow multiple GO’s to be dragged to project window for bulk prefab creating ● Doesn’t let you to undo action ● 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) [B]Game view[/B] ● ‘Show actual size’ ● 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. [B]Profiler[/B] ● Record camera positions and replay as you scrub through the timeline ● 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 [B]Asset server[/B] ● 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. [B]MonoDevelop[/B] ● Have a button (or automatically) attach to Unity process instead of run/attach dialogue [B]Inspector[/B] ● Open in new inspector ● Right clicking on a GO or prefab should NOT actually select it ● 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’) ● Set to lock (or have 2 options for both normal and locked) [B]Misc[/B] ● 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) ● 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. ● FBXImporter scale doesn’t scale the relative transforms of child GO’s, only the meshes ● ‘Run physics on selected objects’ option in edit mode. Helps settle particular groups of physics objects without any copy/paste runmode hacks ● 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) ● (!) 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? [B]Unity Team[/B] ● QA ● Drop bug object in scene (This can be a normal GO allowing any custom info/functionality) ● On crash server drops crash object where they were (and where they were looking), highlighting the gameobject that they had open if applicable ● Record buffer of input/locations [B]Misc non-workflow related[/B] [B]Code[/B] ● Object Pool ● 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. ● Maybe like void Awake() { PreparePrefabPool(prefab, numberInPool); } ● 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. ● Same idea with Destroy. Internally just disable pool object and tag it as avaliable ● Perhaps it needs to be explicitly requested like Instantiate(prefab, true); // with true being whether to grab from a pool if it exists. ● This would really help make mobile spawning problems transparent and help beginners make glitch free games [B]Misc[/B] ● Multitouch in Windows (7 and 8 fully support it. Look at the Samsung Slate 7) [B]Scene view[/B] ● Mipmap view ● Option to display number of mipmap as well as colourisation effect [B]AssetStore[/B] ● For sounds files allow playback of 1/4 of it as a preview [B]MonoDevelop[/B] ● Allow different IDE’s to be associated for different script languages ● Swap between languages (see SharpDevelops ability to magically convert between IL languages! Imagine.. no more language wars :)