Unity problems... fed up...

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

I can’t comment on most of your post because I do not have the requisite technical knowledge to provide an informed and useful opinion but I have this to say about your point Number 3 (Shaders).

I have long felt that along with a “Showcase” section. there should be a “Demand” Section aimed at the asset store. The Showcase sections is for already finished projects or tools.

Wouldn’t it be nice if there was a “Demand” section where Unity users could express their desire for a certain shader/tool and up to how much they are willing to pay for it? This would help potential Asset Store producers to then try and cater to this demand and would help better co-ordinate the Demand-Supply Link.

So, in your case, if you needed a certain type of shader for example, you could specify a requirement and post in this hypothetical “Demand” section. Enterprising asset store developers could then try and fill this demand.

I am by no means saying that Unity should leave everything to asset store producers, and sit idle. but I’m saying something like this could alleviate some of the problems a little bit

There’s a Wishlist section :wink:

I’m sure you could turn them off and activate them when the player gets close. you can also hit a button in the editor that allows you to turn all lights off while in the scene view.

Seriously? what do you expect with 20,000 objects? It is also probably your machine this cant fall strictly on unity. You could again disable the objects in the scene view if you wont need to use them at the current time so unity doesn’t have to render them.

called make your own material folder and be organized. Why should they make such a feature.

I dont believe I ever had this problem.

This isn’t 3ds max. however such an option wouldn’t be a bad idea.

Yes we all can agree the GUI needs work… However with enough patience the GUI is just fine.

@Mr T.

What do you think the wish list is for? you cannot “Demand” someone make anything you want regardless if you want to or not.

Doubt it would produce any results. People know what they want or need for their own projects and if they wanted to make a Shader add-on they would have by now. Maybe someone is developing one who knows but a “Demand” section wouldn’t work. At least not in my opinion…

Correct me if I’m wrong but I think wishlist is for changes users would like to see made in unity. The idea I am talking about would be a section where a potential Buyer could make a post and offer up a dollar amount he is willing to pay for the asset he requires.

There are no guarantees to buy of course but it could give an easy idea of what kind of assets are in demand

By “Demand” I am talking in the economics sense of the usage of the word not the other meaning

Let me clear that up

http://www.elook.org/dictionary/demand.html
First Meaning - [noun] the ability and desire to purchase goods and services; “the automobile reduced the demand for buggywhips”; “the demand exceeded the supply”
Second Meaning - [noun] the act of demanding; “the kidnapper’s exorbitant demands for money”

I’m talking in terms of the first meaning

Why not contact a user privately for this?

Yes it is its primary purpose, but nothing prevents user to use it as a global wishlist (= including asset store wishlist).

edit : yes sorry for the slightly derailed discussion, just wanted to briefly give this hint (got nothing more to add though).

To both you guys, I think the thread risks getting derailed. IF you guys are up to it I will create another thread? We can talk about it there?

The performance problem is not the scene view, but the rendering here… And no… this kind of things (turning them off/on) is part of the game engine…

Seriously?!?

Intel(R) Core™ i7-3930K CPU @ 3.20GHz
P9X79 WS
G.Skill 16 Gb Ram
Amd HD7950
Only SSD harddisks

The editor slowdown occurs objects enabled or not… it doesn’t matter… it’s the scene hierarchy what we’re talking about. It’s not about the rendering, but the management.

The material folder is structured. The problem is that objects that had initially been imported into the project with Unity 3.4 originally only had the option to name the material after the object material or the texture name (I think). And it could not replace a material from different objects to use only 1 material representing exactly the same.

The new import options allow to manage this better than before (especially when searching after a texture with the same name), but doesn’t allow to better manage materials.

Well… my graphic artist and me have this problem…

While they could post there, if nobody looks there for that stuff, it won’t do any good.

I think it would be better if they just posted in the forum for that kind of thing (Assets, if it’s an asset) and made it clear they wanted such a thing, not that they were providing it. Then, it’s in front of the eyes of those that could make it happen, and it’s on topic.

Ermm…I’m not sure, but isn’t 20k objects in a scene a bit too much? :-0

Can you post a pic of your scene? Because I just can’t believe you truly need 20k separated objects on a single scene… I use less than 20k particles when I’m simulating fluids, it was for a mustard tv ad. And it’s took a while to process the physics!

I’m sure there’s a solution for most of your issues, you just have to tackle them one by one! You’ll get plenty of help around here, but you’ll need to focus on one thing at a time!

Remember it takes big teams of all-pro guys working together to make big games. Unity will make it at least possible for you to achieve greater things, but wont solve everything for you, not for a super big game. If you want things to be easy, try doing something simpler, with less than 20k objects per scene! I’ve been lowering my bar for ages, and I still haven’t made a full game! Right now? I feel like making puzzle games, haha!

But I truly wish you don’t give up on your project, you must control your frustration, it’s part of game making! Try feeling the adrenaline of problem solving! You’ll run against obstacles in every great thing you do (like this game) there’s no way it’s going to be a smooth ride, if it was easy, everybody would have done it already, and there would be no reward.

Honestly…for the most part, I agree with several of your points, and feel your frustration. I’m sure you will get a lot of responses that ignore that you have valid points, and instead question your system specs, or where you live, or whether you are right or left handed, or other nonsense.

@dogzerx Thanks for the positive post, and I understand what you mean by having to lower the bar. But I’ve seen many cases where the reason I have to lower the bar is to deal with Unity’s undocumented limitations. If you’ve worked with the terrain engine, you know what I mean. It’s a glowing example.

Personally, I wish I saw more pressure put on Unity to address serious issues with its core systems, updating the documentation, and providing more feedback to the community. I understand that an overall negative attitude is not good. But saying “cmon guys, let’s just deal with it or work around it” without at the same time saying “UT, you need to improve/fix this stuff!” is unfair to customers.

If customers have a responsibility to work around Unity’s limitations and problems, then UT has a responsibility to address those in a reasonable/timely manner.

Hi dogzerx,

I’ve been in the games industry since 1996 with several published AAA titles. I’ve also been working on game engines for some years (“some” like “10 years”).

I’m considering cutting down the size of my level but 20.000 is about 1/4 of what is actually needed as game objects in the scene. I’m talking about game objects, not different assets.

Here are 2 screenshots with 2 rooms:


The first level should have ~60 of these. Once I get this back to working, we’ll cut this into smaller level chunks, but this means redesign of parts of the game concept…

A lot of those objects can be / are batched, not a lot needs physics processing. I’m not complaining about the FPS of the game (which is at least 60 fps on my machine on highest quality setting with manually activating/deactivating only the needed rooms).

But to achieve this, I have to develop techniques that should already be in the game engine (like a working occlusion culling, working light management and culling, better material management with material matching, etc). Those are tools I’m currently working on.

I have chosen to not develop game engines anymore because I wanted to concentrate on game development… but in the end, I spent more time writing tools to get a decent work flow instead of working on game features…

I’d say to get used to it. Unity is missing a lot of tools that should be in by default. Half of the asset store is filled with such tools.

Now that is GORGEOUS!!

My two cents dont mean much , but regarding your deferred lighting issue , i concur , in my experiences, it seems a pretty weak rendering mode atm. With just two lights and a handful of materials, on a a handful of objects , my FPS in deferred was unmanageable. Seemed as if something was seriously wrong when i attempted to use that mode.

Most likely, i am half the cause of this , as i notice you claim to have a substantial amount of lights and achieving 60fps fine , i will have to dig more into the casue of this. Im also aware that two lights is not exactly worth using deferred , but i had planned on using more, until i seen the cripppling blow it delivered to my scene.

Oh… my… god…!

It’s beautiful!

We’ll needless to say you’re a super awesome veteran… It sucks unity isn’t helping a whole lot :frowning: I guess where unity helps newbs (like me) it might slow down well experienced gamedevs like you!

Hey, about that object count… isn’t there a way you can merge the static ones, or something? :-S

@dogzerx: Well… thanks for the compliments… but I’m surely not super awesome… if I would be, I wouldn’t have the problems with Unity I have :wink:

The object count can be reduced, yes. But only in the final stage when the scene is finished… and if the materials have been reduced to what is really needed in the scene. Batching static objects using atlases shouldn’t be that much of a problem (but then… the texture size might be one…).

@willc: 60 fps if I manually (I wrote a small tool for that to test this) switch on/off only the visible rooms + lights (something occlusion culling should handle for me) and with baked lightmaps (which only work for lights in the background; no way to make this currently work with objects very close to the camera, say only apply lights to objects in the range from +5 to -5 Z).

I certainly see nothing wrong with being fed up.

Unity is very much a “work in progress”, much like many of the projects people are working on and things in the asset store. It does a lot of things really well, there are things that could be improved, and there are things that desperately need to be added - and those changes and additions will come with time … hopefully. In the mean time, workarounds are hoops to jump through should be expected, and to a certain degree will always be necessary. Will it meet everyone’s needs now or in the future? For some yes, for others no.

It is what it is. Lots of people are producing good games with it. Either it meets your needs at present or it doesn’t. Either you can develop the game you want despite it’s limitations or you can’t - which doesn’t reflect negatively on you in any way. It’s that simple.

BTW… Your stuff does look awesome.

My suggestion would be to take one of your issues (DoF particle render issue for example), create a small project that duplicates the issue and make it available to people to look at to provide proper help.

I’m not flaming or anything, by any means, but I am also a Pro user and when I made my purchase I did some research into Unity. Some of the things I noted are that the community is the main source of support here. I had no issues with this and when you learn the community a bit more, you’ll see there are professionals (in the sense that they know Unity pretty good from their experience) and then the freebie users who know nothing about any game creating mechanics and expect the engine to do everything for them automagically.

That being said, you DO have options for support. One of my first things after purchasing Pro was to find the sources of paid support. You should look into Unity Studios support, as they are a good resource and can give your the best assistance. If you break your project out, maybe you can get your help for free, if not try them (they have a pricing structure, $200/hr or blocks for cheaper).

When my game is almost complete, I have already contacted Studios about sending them the package to go over and tell me where I’ve gone wrong or should make changes. Right now I’m well into my game and have not needed help. I really am enjoying Unity. It took me a bit to learn the asset workflow as well as hierarchy. But things on my end are moving along nicely.

Hope this helps and good luck with your issues.

JS