Ok… first of all, I apologize if the following hurts someones feelings, views, kills his hopes or does anything else harmful to him…
This is going to be a ranting post… feel free to ignore…
Here we go:
I’m totally fed up with the Unity Engine. Is there anything that is working as expected in this piece of software?!? Does Unity give any sh*t about people posting here in this forum?
Why I am fed up? Because of all the problems I encounter using this engine.
Lights
I use deferred pipe. Means I should be able to use a high number of lights in my scene. Unfortunately, this isn’t really the case. Lights aren’t activated/deactivated dependent on the camera position and their illumination range. At least, this how it seems to be.
In my game (2.5D jump run) I use a fair amount of lights to illuminate the rooms. There are at least 15 lights in each room and the scene has about 60 rooms. Using standard units, the light range never is greater than 10-12 units. One would suppose that the lights on the other side of the world would not influence the current room… but they seem to stay active even though they’re outside the view frustum.
Occlusion culling
To counter the above mentioned problem with the high number of lights (and the high number of objects I have), I tried to use occlusion culling. While it works better in 3.5 than in 3.4 (especially for GameObjects), it still doesn’t help me with my lights. They don’t get culled. They can be 3 rooms away with no possibility to be viewed, they are not culled.
Shaders
This is a huge topic that has already been discussed in so many other threads: Creating new shaders in/for Unity is much to complicated. Strumpy Editor helps but is not as good as could be an integrated shader editor (where you could see the effect of your shader in real-time in your game scene).
Also, being an indie game developer, I don’t want to spend weeks and weeks working on shaders.
Editor slow down with high object numbers
What is the usual number of objects in a typical Unity scene? 1.000? 10.000? 20.000? 50.000?
My scene currently contains about 20.000 objects. Walls, crates, decoration, dynamic objects, lights, …
In 3.4 it was a pain in the a** to change the object hierarchy: Putting a game object into a hierarchical tree would freeze Unity for some seconds.
In 3.5 the hierarchy change doesn’t take that much time anymore. Instead it takes up to 20 seconds to delete an object from the scene when you have a high number of objects. I mean: WTF… my graphic artist started to complain about this. He’s doing the level design and loses quite some time with this.
Why not create small parts and stream them? Because you first have to design the frickin’ level in first place. Then you can cut it into smaller pieces to be streamed. Also, the next point requires the entire level to be “available” in one scene.
AI Navmeshes and huge scenes
If I would like to split my scene into several sub-scenes which are then streamed, it’s not possible to use the a nav-mesh per scene. So, I first have to create a scene with my complete level in it in order to create the nav-mesh. This is a huge draw-back combined with the above mentioned problem.
While I can pass via greyboxing to create the rough level layouts, I cannot use greyboxed levels to generate the nav-meshes. The objects that are added to the scene create obstacles that have to be taken into account (not every obstacle can be described as a box).
Material Editor/Management
The material management is a great pita, also. While Unity 3.5 allows to select where to look for the required textures of an object upon import, this is too much work to do when you switch an 3.4 project to 3.5 and you already have several hundreds if not more than 1.000 assets.
Why isn’t there an option to quickly check which materials are exactly the same (and apply a unique material to all objects using those double materials)? Why isn’t there an option to show all materials that are used in the current scene (or not used in the current scene)?
An enhanced material editor/manager would help creating a more streamlined work-flow. Using “find references in scene” using the right mouse button on a material/asset is not what I call a good option.
Scene Management
Scene management in Unity is at least chaotic and counter intuitive. I’m not going into details about the prefabs problems (i.e. prefabs in prefabs). Other things such as object duplication, object grouping and selection are also problematic.
Object duplication keeps the object hierarchy by default. This means, if my graphic artist duplicates an object which is hierarchically attached to room 1 and translates the object into room 61 (on the other side of the scene; 100m away), the objects stays attached to room 1. Common 3D tools (like Max) ask you if you want to create a new instance, copy it, or whatever… Unity “silently” assumes that the duplicated object will not change the position in the hierarchy and attaches the duplicated object to the parent of the original. You manually have to pull it out of the hierarchy (which is a pita if you have to scroll up/down quite a bit to return to the scene “root”). Either ask what to do about the hierarchy OR give an editor option to select which behavior to use OR different key strokes for different “copy types”.
Object grouping is a pain. You have selected 30 objects (either via the scene hierarchy or the scene view) and want to attach it to another object… you have to dig through the scene hierarchy and hope to find the right parent object… why not have a right mouse button popup menu in the scene view with some common operations (such as “attach to…”, “detach”, “hide”, …)?
Object selection could be enhanced. Selecting the right objects (especially if your scene has quite a lot of them), is difficult. If you select them in the scene view, you only have the choice to do a “2D” selection (rectangle in the view). Every so often I would like to simply make a box selection (create a 3D AA selection box in the scene) to select everything inside that box. Or select a parent object and then say “This parent object has bounds… select all objects/light/colliders in the scene that are within that bounds”…
GUI
The new GUI has been promised but yet to be seen. The current state is miserable and it’s necessary to do so much programming work. It’s not possible for a designer to just start up a GUI design tool and start work. Hopefully this doesn’t take up to V4.0 to be released to us.
There are many more problems with Unity… and if you wonder why I’m especially fed up NOW, it’s because yesterday evening Unity managed to f*** up a huge scene, won’t load it anymore and crashes every time. I tried 3 times to upload my 5GB project as a bug report which failed everytime at the end with a nice message box telling me to contact “bug@…” which I did… and I got a standard mail “we cannot guarantee that you will get a response”…
I f***** paid for this licenses and I want appropriate support for questions I have and had in the past. They tell you to go to the forum and check there…
Here’s a rough list of unanswered questions (there are many more):
Object delete in Editor takes long time
Shadow type setting impact on performance
Material links lost (Unity 3.4)
Depth of field 3.4 and particles
Random objects rotated after svn update
Occlusion culling and lights
Load Assetbundles in Editor (NOT EditorWindow)
Light and level creation best practices
ModelPrefab type asset loading and asset pathes
Using default asset display in custom editor
Perhaps Unity just isn’t fit for high number of objects/assets and is more a prototyping engine… (or is best at mobile stuff)…
Angry Metron