Dear Friends and Professionals working with Unity,
EDIT: I originally placed myself in a mine field here by letting this post have a rather immature and naive ‘Hey guys, should Unity not hire me to fix everything’ - approach.
That was probably stupid, in a forum like this, sorry. So I tried to delete the post and it was restored, ha, I’m stuck with my own actions!
OK, I had some points in my post - Even though I took on the wrong approach of communicating them, so here are my points for the next Googler etc:
1) Recent Scene / Open Scene
- Number of times we open a new Project: 1
Number of times we open a new Scene: 100
Which is in sharp contrast *) to:
- User Interface to open a new Project: Nice
User Interface to open a new Scene: … …! - ) - If you are making Games, and not Games Engine - which goes for all of the below as well:
I speak for Us, the Users, Unity seen from the outside.
Goals:
- Create a standard ‘Recent Scenes’ under File menu - like any other program have had since 1999
- Make sure ‘Open Scene’ lists relevant Scenes for me
- Also make a standard ‘Save project as’ to do quick local backups, forks etc.
2) Import FBX without Rotation issues
How many here have had to import an FBX from a leading 3D application, and found that there’s a build in issue with some x@270/zForward-different-standards?
Let’s get that fixed now: We are after all going to be importing more FBX’s in time to come!
Goals:
- Preferences should have a general setting with check boxes under Import, like Up: Z
No mysterious hacks of inserting with a non 0 rotation, but override/redo inside engine!
A drop down should let you chose premade settings for major 3D software packages
Size should also be set via this dropdown - Inspector / Model should let you override / Set individually for each / bulk select and change all to for example Z up.
In worst case: Do it behind the lines Unity, just as Quaternion is the actual rotation, but we see Vector3, do an internal wrapper that we will never need to know about.
3) Let us browse our already downloaded asset store packages without waiting for the browser to load
The title should be self explaining.
Goal: When entering the Asset store, all our already downloaded assets should appear as quickly as when we do any other standard file browsing. The browser can load in the background and update when ready.
4) Remove camera space Canvas from our Scenes, please.
First was Unity: A games engine that made everything easy, BUT doing the UI in your game (who needs UI in a game anyway?). That situation gave birth to nGUI - which was obviously a hack. A good hack, but a hack.
That hack became - in a new form - uGUI. But it’s still a hack. What on earth is going on with the UI in the middle of the game scene and something as specialized as UI to use the same tools as is made to do RigidBodies?
Goal: We need to provide a ‘Camera Space’ in the Editor: A closed and specialized window & interface to do UI - and do it nice. Like really nice, in a focused tool.
5) Let next generation Unity UI parse HTML on all levels
Unity’s variations of UI, across Editor and uGUI is done with such things as GUILayout.FlexibleSpace, GUILayout.BeginHorizontal, EditorGUILayout.BeginHorizontal and uGui… it’s a ton of mixed technologies with mixed levels of documentation, and basic things such as Unity’s interface that will not scale to larger screen sizes and the need to learn different layout systems is the result.
The interesting part here is that it all tries to do what HTML5 is already doing. So why not lay it in the roadmap: Get all things UI ported to be parsed HTML?
Unity’s interface will be able to scale with your screen resolution, and instead of training people to learn new tricks, you as a producer can get hold of skilled web artists to do your games UI. And you can port a simple website to UI instead of having to do it over.
There’s already multiple free HTML parsers ready to be used.
Goal: Get HTML parsing into the Unity long term roadmap.
6) Remove the Zoom function from default Game view.
- Number of times I want to play my Scene without Zooming: 1,000
- Number of times I want to Zoom into Game window to see Pixels: 0.01f
- Number of times I’m accidentally Zooming: Way too many
That prominent screen real estate can be used for so many useful functions instead!
Goal: Let Game Zoom be some far away hidden feature that can not be triggered by accident.
7) Add simple 1-click shortcuts for common tasks such as rotate 90 and simple array
It’s nice to have an uncluttered interface, but frankly: How many steps is needed to rotate that prefab 180 degrees from the current 37.98 on the Y axis? It should be just 2 clicks, right?
RRR ← That much space is all it would take to have instant access to probably the most common rotate modifier: Rotate 90 on Either X, Y or Z. Shift click to rotate 90 the other way.
Do you think you would use those more than you use the Zoom-slider in Game view? It’s smaller!
MMM ← Click those and you get instant Arrays: Each click on Blue M adds one more on the Blue axis, because rather often we do not just want to place one object, but many. Shift to make less.
… etc
I’m not going to go deeper into what buttons could be there or advertise my own assets here, but I have systems like this going in my sandbox tool called Mess Manager in the Asset store, and it’s really effective. Unreal Engine has similar shortcut buttons to common functions by the way: It’s nice for people who make games.
Goal: Get a couple of the most used functions as shortcuts into the free space at the top of the Editor window.
8) Enable instantiation placement based on boundaries as well as collider
If your Scene is not filled with colliders, yet you have a plane ground and want to place a tree on it?
With Unity you Drag-drop it into… mid air … If there’s no collider on where you drag-drop to.
It’s really easy to enable snap to bounding box, again something in my own tools in the asset store. However it too should be native and not a hack one can download from the asset store.
Goal: Enable all types of Snap and Auto drop on 9 bounding box corners & mids.
9) Enable (box / Sphere / etc) collider import from model
Again something Unreal has:
Why not just use your 3D app to place boxes and let Unity import them as Colliders instead of all the trouble of trying to use Unity’s Inspector to make boxes fit?
Goal: Enable ‘Use transforms with certain naming conventions as Colliders on Import’
10) Enable FBX to prefab on the fly
So, your 3D artist made 200 FBX’s and you want to use them as ‘Prefabs’ *) ?
Don’t think it’s effective that you have to instantiate each, then drag back to make Prefabs out of them?
*) Yes, I know, technically an FBX in Unity is a type of Prefab, but I mean ‘real prefab’ here
Goal: Bulk-select & turn into Prefabs from FBX files in Project view
11) Add ‘Solo’ button to particle systems
When working on Particle systems with child emitters over multiple GameObjects, how often would you not like to click Solo to Only see only this one Shuriken system that you edit right now?
It’s a feature known in all Music software: Solo - it simple just let’s you listen to one track. Click again and all is on as before.
Goal: Add Solo button to Particle systems
12) Embed material in Prefabs
That might take most people out of their comfort zone, but think about it:
Why are Materials not an intigrated non-removeable part of Prefabs like for example transforms?
How often would you wish back to when you could share a material over multiple GameObjects – if by default a Material was as closely embedded as for example a Prefab’s RigidBody or transform? Would you actually need to share materials on different Prefabs / GameObjects?
We are not talking Shaders or Textures, but Materials.
Why would you in fact ever want to have shared materials over multiple GameObjects as it stands now where you cannot even inherit a Material Class and do local variations?
Do you actually need a hundred unused materials files floating around in auto generated folders for each time you import a model?
Do you want all the wasted ones you have right now?
Do you like to have shared materials with the imported models from the Asset store in your project?
How many times have a shared material given you problems? And what has it given you?
If Materials where an embedded part of GameObjects you could access a GameObjects material and copy-paste it - from Script as well. Like when you copy a transform now. (Imagine if Transforms where free floating files like Materials, that would suck, right? But what’s the difference?)
If they where embedded you would get a trillion files less in your project, and no more problems with shared materials making one thing blue because another needed it, which would also make import form Asset store a much cleaner ting.
If Materials where bound to a GameObject the way I consider it done as Classes, you could even have a common ‘ShinyMetal’, and do Red, Blue And Green class children on other GameObjects.
Goal: Do a serious consideration on possibly eradicating free floating Materials files
13) Make a hard-coded folder for all asset store downloads and add clean checkout-to-my-project options
The asset store is a great thing, but it makes a mess. Let’s take that serious, and set up a system so all Asset store downloads by default lands in a hardcoded folder. In there you can test, but itsø not a part of your project yet.
Then, let’s add import system to the protected area functionality, a process where all FBX files imported are placed in one folder with a hardcoded name, all cubemaps in one folder with another hardcoded name, all… instead of the random and invasive mess it is today.
Then you can delete the Asset from the Import folder and keep what you actually needed instead of now where it’s up to you to clean up and a mess is made already after a couple of imported assets.
Goal: Set future asset store up to import to a closed area, and make a checkout & import system that keeps all imports in nice folders, so you can delete the Asset import once you have only imported the parts you need.
14) Make instant prefab in scene- browser
I Know there’s a new prefab preview system on the way, but it appears overly complex compared to just being able to browse prefabs right in the Scene.
Goal: Set up a scroll-able simple and fast prefab browser that let you scroll or ‘swipe’ to the prefab you need, and have it already instantiated where you are.
15) Add right click drop down in scene view
Instantiate as child, replace prefab, revert to prefab, reset scale, rotation… s simple context sensitive right click drop down menu is not too much to ask for a modern tool to set up scenes in 3D, right?
Goal: Implement common tools context sensitive right click drop down menu in Scene view
16) Native export Scene as FBX
This is something I really miss in Unity from working with unreal: Native dump scene or selection as FBX.
I think it’s hard to realize until it’s tried how effective it is and how much we need it in Unity:
When you build scenes and need to add more models, it’s tremendously helpful to be able to import your entire scene into your 3D package with a few clicks, and then right in the copy of the scene do any modeling. Also of new characters etc, to have things in scale and perspective.
Mind you, you can even save your new 3D art with transform already embedded, so all you have to do is save, and insert, then your Scene has that exact thing you modeled to fit exactly, and already placed exactly where it should be!!
Goal: Enable Native Export Scene as FBX
17) Include hard coded Game classes option
Unity is for making Games, right? Individual games of course, but they tend to have some ‘soft’ non-technical things in common:
Such as the fact that there is a Player, there is often a Score, a level, pain caused, player control, game control…
As it is now with Unity, only Technical Classes exists, so everyone are doing their own thing when it comes to constructing the basics of game handling.
The wheel are invented over and again and sometimes it’s not exactly wheels that are invented.
Goal: Let Unity embed native support a series of very open, very well thought through common Game classes to help us all get started faster, let projects be easier to understand and game-supportive functionality can better be developed in the future
18) Link all documentation pages with a user wiki
It’s so simple: On Any page in the already auto generated Unity Documentation, specially on the Scripting API, just add a link:
User Wiki and discussions on [this topic]
In other words: Why on earth do we have to have information scattered all over the place and use Google to try and make sense when we are looking on how to use a function?
Let’s make it possible to easily share all the good use cases we come up with, I’m sure that would quickly lift the value of the documentation, and not as now contribute to an ever growing number of forums and scattered tutorials.
Thank you!