A thread for features that Unity should have.

Ok so pretty much everyone here agree that Unity is missing some features (obviously a perfect software is impossible so that would always be the case), but not everyone seem to agree on what is the most important thing to add to the engine (mainly because everyone use Unity for different project with different workflows and don’t struggle with the same things).
So I’ve made this thread to talk about that, both to better understand the needs of others developers and also to help Unity staff understand the features that we need, why we need them, and also to discuss about it.

So first I have to say this : Unity is a really good engine and you can make games with it. So no need to dramatize the situation by saying that Unity is unusable without this one feature that you want. These are just things that would be nice to have to make game development easier.

Also I prefer that we only talk about the features that we need. We are not talking about the Unity company (there are already enough threads for that).

Also also that I don’t know at all what I’m doing by creating this thread (I was just bored) and I don’t have a great experience with Unity I’m just a student. Also my English is meh, so sorry if i make mistakes.

And with that being said, here is my personal list of stuff I would like to see in Unity for 2023 LTS or 2024 LTS :

-Graph tool foundation : I’m putting this one first because I think that one of Unity’s greatest strengths is its flexibility. Being able to make your own tools is a great way to speed up game development, and nodes are cool. I hope the team behind it is progressing well and I can’t wait to start using it.

-UI Toolkit : Technically this one is already out but I put it here anyway because for me it is not yet fully usable in production. The old UI system is really not practical so I’m very happy to see that there’s a new one (especially since UI Toolkit has a lot of potential) but so far it’s missing too much stuff.
The biggest issues I noticed:
-No world space UI
-Can’t have gameobjects in UI
-No way to keep the aspect ratio of an element without programming it yourself.
-Text don’t change font size with %
I’m probably forgetting a lot, so feel free to add more below.

-Animation : The animation workflow is really frustrating and confusing. Even when doing the animations in another software, you must necessarily use the animator at one time or another. The graphs are a huge mess when it has more than a dozen animations, the connections to the code are meh, and the transition system is really clumsy. Really, make a new one soon please.

-Scene management : Communication between scenes is annoying. And scenes have to be referenced by name or id which is really not practical.

-Tags and layers : An object can only have one of each (which is not practical since we often want to be able to get a lot of information about an object (can we shoot it, can we interact with it, should it be attracted by magnets…)) and they have to be referenced by name which is not practical.

And it’s already a long post for me so I’ll stop there. That’s enough English for today.:smile:

Feel free to criticize my list and remember to be nice and don’t get upset for nothing, we’re just talking about features and workflows.

2 Likes

UI Toolkit lacks a way to have tweens and other behaviours affected by timescale.

1 Like

well none of that is going to change so maybe more productive is explain workarounds you used to overcome some problems?

that might help other people.

There isn’t a way around things like UI Toolkit’s lack of worldspace UI. The “workaround” in that case is “lol just use UGUI”

Addressables makes this easier, as you can just reference scenes by addressables references. Yes the package has many issues, but for just simple content loading it works fine.

At the end of the day if you wrap your scene references in objects… say, Scriptable Object, it becomes a lot easier to manage.

Sorry but Unity is a component based/OOP game engine. If you want more information on an object, put more components on it that hold this information. There’s no limit to the amount of components you can put on a game object.

3 Likes

I make 3D world based UI’s all the time. I use gameObjects, colliders and raycasts. Sounds like OP wants a CSS/html style sheet in 3D. OP needs to understand Unity is a component based, frame dependent architecture…not OOP and certainly not javacript or html/css.

I mean… Unity’s component architecture is just a layer built atop of traditional OOP inheritance. Monobehaviour is the great-great-great grandchild of UnityEngine.Object. And obviously standard OOP practices can still be incredibly powerful even in the context of Unity.

Any time you use scriptable objects as socketable behaviour, that’s OOP at it’s finest!

Tags are basically as bad as enums. They hold no information and you can only react to them.

1 Like

“Inheritance with composition”—I love this motto and this helps me building bigger projects. I also hate unity’s way of handling animation, collision and multiplayer. You have also mentioned tags and layers, yes this should also be problematic and unity should do something about them too. Does not have enough experience on UI toolkit, but for UI, lets talk a bit more later.

Animation: I wanted a UE like workflow and to control the animation, mixing them with scripts. There is nothing like in unity AFAIK except Animancer and the library I built: GitHub - kaiyumcg/Vortex: Play/blend animations, animator controllers in runtime. Uses playable API

Tags and layer: I wish unity had hierarchical multi tags for gameobjects and components separately(like UE has). My solution for that: GitHub - kaiyumcg/KTagSystem: Hierarchical Tags for unity game development.

And I wrapping my head around to get the solution for collision and multiplayer. I really love UE’s multiplayer’s architecture. For collision, it seems I have to r&d more to get spot the problem(s) deeper.

And lastly, I do not like Unity’s gameobject-monobehaviour architecture. So I rolled out a thing of my own: GitHub - kaiyumcg/KAction: Gameplay framework for building games using Unity Engine. I took heavy inspiration from Unreal Engine's gameplay framework.
It works on top of gameobject-monobehaviour and an attempt to correct the architecture to employ “inheritance with composition” style.

In short about KAction: The game consists of multiple “GameService” and GameServiceManager manages them. The game also consists of a number of GameLevel. Each “GameLevel” has a number of “LevelModule”. There is at least one LevelModule called “ActorLevelModule”. ActorLevelModule manages execution of a bunch of Actors. ActorLevelModule handles pooling of actors and registering them and the execution flow of actors. There are a bunch of builtin Actors; ActorReactorActor(knows physics information)–>CharacterActorPlayerActorAIActor.

Inside Actor, there is a list of builtin components(Animation/Collision/AI related) and custom GameplayComponents. Actor handles execution of components. Only GameServiceManager and ActorLevelModule are sealed classes. Everything you can extend and customize yourself.

Anyway, I wish unity had something like this from day one.

2 Likes

@kaiyum

Did you just make… Unreal… in Unity?

2 Likes

well, I like many aspects of unity and I also love many stuffs about of UE. My certain projects have to be made in unity due to many reasons including C#, HR etc. So I tried and still trying to get the best out of UE to implement it inside unity. Obviously, many stuffs just can not be done due to each engine’s core principles. Also I had to think about performance. So ya, kind of :):wink:

Per scene or even per prefab occlusion culling.
Don’t force me to load multiple scenes to bake occlusion culling for them, so later they can be loaded additively.

Per prefab lightmapping.

6 Likes

This forum needs “love” button in addition to like.

Unity had a janky semi broken version of per-prefab lightmapping floating around the forums, but surprise surprise, it never became an official solution.

That was like back in 2016/2017, its crazy to think they still dont support this despite knowing the use cases that require it.

Its pretty much impossible to do baked lighting in procedural/dynamicly generated content based games right now without some seriously hacky workarounds as a result.

I haven’t tried addressables yet. I should probably give it a try.

You’re right that’s the workaround yet, but searching through every objects in the scene for this one component is really slow and I think that GameObject.FindGameObjectWithTag() is faster(?). If that’s the case then having multiple tags would be great.

I haven’t work with UE enough to exactly understand what you’re talking about, but it’s great that you made the tools for people who prefer this kind of workflows. Also, again : Flexibility ! I don’t think that you could do this kind of tool to have the Unity workflow in Unreal, so that’s a win for Unity !

YES PLEASE !!!
Occlusion culling and baking in general needs a lot more love.

You shouldn’t use Find or it’s sibling methods at all.

There’s infinitely better ways to architect your systems.

3 Likes

yeah i am wondering about this as well.

i know intent of the thread is just general griping and not actual problem solving, but maybe something useful could actually come of it now that cat is out the bag.

I wonder what sort of situation demands polling the entire scene? Is there no way to pre-filter or make a more accurate query to begin with?

I still need to improve my workflows so you’re probably right.

I don’t know. I created this thread to talk about Unity features not workflow preferences. Maybe someone should create a thread about that, or maybe Unity should share some workflow tips.

Unity tried to make a game recently but wouldn’t finish it. I’d look out for the developers who have found ways to finish work in unity. What is their strategy and workflows?

Seems like some people here could lend a few tips might be handy and using the tool in efficient ways versus non-efficient I think is beyond a word like “preference.”

anyway, i’m just repeating myself but a thread like that would be what i’m talking about in the first place: I have a problem here’s how I solved it; or I have a problem, who can help me solve it?

In case you don’t know, unity is not reading individual threads on forums and making an action plan from it. Just ask @Murgilod . So if you are trying to solve some problems, peer to peer help is pretty much only way.

(and no, its not just Unity. No huge game engine corporations are watching random threads on forums, usually posted by beginners, to figure out what features they should add next to the billion dollar software.)

Thanks for sharing quality, valuable content.

1 Like

Texture atlasing. I don’t understand how Unity could develop a lightmap UV packing and sprite atlasing, but no built-in Texture atlasing? It seems like everything they’d need is already there.

Also, non-humanoid animation re-targeting. Right now the only way to re-target generic animation is if both rigs have the exact same bone structure and names. There should be a way to create your own mapping and specify for each rig, which bone is analogous to which.

I feel like both of these things are basic features that would be pretty easy to add.

9 Likes