The unofficial "Unity's most wanted missing features" thread

What features do you need the most that are currently missing from Unity but present in other freely available or affordable engines?

For me it’s the following…

  • A built in Shader Editor, we had Strumpy’s in 3.x but in 4 it’s buggy and parts of it don’t work, we are currently missing an artist friendly way to create shaders from within Unity.

  • A ‘proper’ Client/Server Multiplayer architecture, we have Photon which I consider to be a professional and stable solution, but I believe Unity should have this as standard without needing to find a plugin. It is standard in almost all other engines.

  • A modern GUI/HUD editor, Unity’s current implementation is outdated, not resolution independent and is slow. It is argued that this isn’t really a required feature of a game engine as it can be made according to the specific project requirements but it would be a really nice feature to have

  • ‘Default’ import settings on meshes, having to manually set the scale to 1.0 from 0.1 on EVERY mesh is a bit of a pain in the butt. It would be nice if there was a way to set a default, or go one step further and set defaults for differently named meshes, for example a mesh with CHARACTER at the beginning of the name would have different default import settings than one with PROP.

  • Editor camera FOV and other settings; I would love for the editor’s default camera to be able to adjust the field of view, currently it’s set to something stupid like 60 and it’s a bit of a pain to work in tight spaces. In 3ds Max I have it set to 90, and would like to do the same in Unity.

What are yours?

The resolution independence can be easily achieved by using relative sizes only. A bit of a pain to stay consistent but it works (and is fast) :wink: GUILayout is a bit slower indeed.

Not arguing against a new GUI (hopefully soont TM), but your points had some flaws.

http://answers.unity3d.com/questions/14919/how-not-to-create-redundant-materials-with-new-nam.html
Pretty sure this works fine for scale as well.

I personally miss support for multiple UV layouts and meshes in the editor…

Fixes for bugs that were already present in Unity 2.6. Like the Obj import that mixes up materials when more than one material is applied at the mesh.

  • 64 bit editor with support for large everything (i want to import 30M+ poly meshes, i don’t care if it’s slow, but i do care if it crashes)
  • Support higher precision position (so that things don’t break past 200K)
  • Support high resolution textures (at least 16K which DX supports)
  • Support large meshes (without splitting them) , don’t limit the index size like that!

Pretty sure you can address the first issue with a simple pre/post processor editor script, though the Unity scripting help isn’t great for explaining it.

However when added to the second point I would argue there is a good case to have Unity expose all these hard-coded value numbers in a simple ini type file. A quick and easy way to set up the defaults for all objects and components. After all they must be coded somewhere, so just open them up. Will be far easier for users to change the values and avoid having to import your pre/post processor editor script for every new project.

As for other features improved media support, such as video, audio, text, web, would be my main priority, core features that are sadly lacking and under-developed.

Video:
Current state of video is shocking and requires 3rd party plugins to be of any use at all, often needing several to cover all platforms. Video is so important these days (just look at how useful youTube has become) that it should be natively supported, with complete range of features such as transport controls, seeking, masks, etc, which would give the added benefit of being able to use video in webplayers which you can’t with plugins.

Audio:
Its definitely improving, but still needs more work.

WebKit:
Support for web pages has many uses, from displaying actual web-pages to using html for basic layout and easy GUI’s

Expose more low level features:
Stuff such as allowing full control over texture filtering, nearest, linear, bi-linear, tri-linear etc
Support for get/set pixel on all major formats, e.g. 1 bit, 8 bit and 16 bit.

Code Snippet Library
This would just be a nice feature to have, some method of easily incorporating specific scripts for projects.

32bit Mesh Indice Support
Would be great to have the option of using 32 bit indice’s for meshes instead of being limited to just 16bit as it is now.

Embed Scaleform into Unity
For a good range of projects this is one of the best means of supporting fully featured GUI’s, especially due to ease of scaling. I haven’t tested it for a while, but did hear that it was improving all the time. Make it like an add-on, that we can buy, the price was very reasonable from Autodesk so that again it can be deployed in the web player.

  • Terrain procedural mesh planting clutter (display procedurally what’s needed using layer textures instead of culling through millions and millions of meshes). It should work for detail meshes too (not just vegetation). Unigine have such implementation (can be seen in their valley demo) and works really awesome.
  • New Terrain culling system (or improve the current one). Eating 75% of what Unity uses from the system resources only to cull threes/grass is unacceptable (again a procedural planting system will alleviate this).
  • Automatic asset streaming on demand as seen in GTA. Grit Engine have an awesome automatic asset streaming and it’s free.
  • Anything else that involve dynamic (Navmesh, navigation, culling, lighting, procedural techniques, etc) is also highly requested and welcome.

Those and Unity would be perfect for me.

Another vote for a visual texture editor.
Better terrain/vegetation system. The current one is pretty much useless for anything beyond static terrains.

And honestly…something really, really needs to improve by leaps and bounds:
Communication and interaction with the community
Documentation

I definitely need a tighter integrated material editor that is node based because the built in Unity shaders are horrible, hair shaders that use the full range of the alpha channel… better physics like APEX. And better terrain tools so I don’t have to use Vue to sculpt my terrain…

  • The new GUI
  • A texture atlas tool
  • Less drastic changes to a scene file with each save - easier for teams to collaborate

Gigi.

These are the ones that came to mind:

  • Full controll over graphics settings though script while in-game like shadow quality and anisotropic filtering;

  • Lens flares having a field of view setting;

  • Improve terrain performance, allow to change the terrain detail and terrain resolution without losing all information.

  • Improve Occlusion Culling’s PVS and dynamic objects baking time;

  • Editor rendering options like UDK, like lighting only, etc.

Easily the new GUI stuff. With the game I’m working on right now, most other stuff would be superfluous.

+1 for this one. No one should have to script something like this… or use a replacement shader. Gotta make sure Unity is artist friendly

+Expose the Input Manager already!
+New GUI
+Voxel Terrain
+Built-in run-time mesh functions such as merging vertices and extruding
+Allow us to design/run our own Standalone Setup window.

This. And it sucks that I have to dig into my PC’s control panel to find out what button does what! Give us a wizard…

It’s coming.

Could actually be useful, but then again, is it necessary?

1- Control stencil buffer state from ShaderLab instead of create new Plugins which handles all Draw function that use stencil buffer state.
2- Allow Plugins to get PxScene and PxActor object to customize engine and make it more flexible.
3- Ablites to create emoty bounding volume of the renderer (not contain mesh) which handles draw events for procedural mesh that use geometry-shader.
4- Support the best Plugins from native source code of engine. I suggest for this year “Strumpy Shader Editor”.

This:

And this:

Seriously, Unity needs some better systems for performance. It works alright if you keep everything static, but as soon as you try to make a dynamic world, Unity just laughs in your face. It is increadibly hard to make dynamic content and it is annoying to set everything up by hand. An integrated occlusion and streaming system that works with both static and dynamic objects would be awesome. It should be so that everything is culled and streamed automatically, and if you do NOT want to stream or cull something, you just disable it. I mean… who does not want to stream and cull most of his content?..
Also, being able to properly change terrain settings afterwards would be great.

Procedural and automatic systems sound great and they are great. They take a lot of work off your shoulders and an integrated system is always better than a plugin.

The speed of uploading new texture data/changes in Unity is terrible. It’s several TIMES slower than many other languages using OpenGL. Plus having to store your texture data in main memory AND then keep another hidden copy of the texture data in main memory within the Unity API AND then keep another copy in video ram makes for 3 copies required which is a big memory waste. It helped a bit when they implemented Color32 format for SetPixels etc but the whole SetPixels system is dog slow, having to upload the entire texture just to make a small change is not only unnecessary in the DirectX and OpenGL API’s but a huge waste of time that significantly impact what kind of engines you can build with reasonable performance. I’m worried about being able to upload a single modified 512x512 texture per frame and still maintain 60hz with nothing else going on, when it should be able to do several of those per frame. The flow from main memory to texture memory is cumbersome and needs some TLC. Not to mention that in order to use an Alpha8 texture you have to store it in floating point format which actually makes it often slower to upload than an RGBA texture.

Cryengine 3 style cubemapping.