Search Unity

최근 유니티에서는 2021년 Unity 로드맵을 소개한 바 있습니다. 이번에는 로드맵 목표 달성을 위해 작업 중인 유니티 팀을 소개하고자 합니다. 새 블로그 시리즈 중 첫 번째 게시물인 이번 포스팅에서는 코드명 “Quality of Life”로 운영되고 있는 이 팀에 대해 살펴봅니다.

Unity 2021 로드맵에서 유니티의 2021년 우선 순위를 확인할 수 있습니다. 정식으로 제작에 사용 가능한 기능을 업데이트하고, Unity에 있었으면 하는 새로운 주요 기능을 제공하는 데 중점을 둘 예정입니다. 동시에, 에디터로 작업할 때의 워크플로를 개선하고 전반적인 편의성을 높여 궁극적으로 삶의 질이 향상되는 결과를 도모하고자 합니다.

이번 포스팅 시리즈에서는 Unity 툴 제작 과정을 간략하게 소개합니다. 관련 작업을 진행 중인 팀을 만나보고, 이 팀의 동기와 성과를 확인해볼 수 있습니다. 새 블로그 시리즈의 첫 번째 게시물인 이번 포스팅에서는 코드명 “Quality of Life”로 운영되고 있는 이 팀에 대해 소개하기 위해 팀 리더 아라스 프란츠케비치우스와 제품 팀의 마틴 그램을 만나보았습니다.

Quality of Life란?

우리는 모두 삶의 질을 향상시켜 더욱 편리하고 쾌적한 삶을 꿈꿉니다. 유니티는 사용자의 삶의 질을 향상시키려는 노력에 전념하고 있습니다. 그 노력은 안정성, 버그 수정, 회귀 방지에만 국한되지 않습니다. 유니티가 말하는 삶의 질(Quality of Life, QoL)이란 사용자 경험을 구성하는 모든 세부 사항을 포괄하는 개념입니다. 즉, 생산성을 높이고 창의적인 작업에 집중하도록 하는 총체적인 워크플로와 직관적인 인터페이스를 의미합니다.

유니티의 프로덕트 디렉터 마틴 그램은 “반복 작업 시간을 단축하고 작업 중단을 최소화하며 전반적인 효율성을 개선하는 것”이 삶의 질을 향상할 수 있다고 설명했습니다.

최근 몇 년간 Unity 사용자 수는 폭발적으로 늘어났고, 여러 업계에서 다양한 직업에 종사하는 사용자에게 서비스를 제공하기 위해 유니티는 혁신에 박차를 가했습니다. 하지만 이전보다 훨씬 많은 툴을 제공한 결과, 복잡성이 증가했으며, 기능에 따라 사용자 경험이 일관되지 않다는 문제도 발생했습니다. “QoL 이니셔티브를 통해 유니티는 일관성을 되찾고 전체적인 에디터 사용 경험을 개선하고자 합니다. 최근 로드맵 블로그 포스팅에서 말한 바와 같이 업무 방식에 변화를 주어 더 적은 일에 집중하되 더 잘 해내는 데 초점을 맞추려 합니다.”

새로운 기준 제시

유니티의 모든 팀이 Unity 편의성을 개선하여 사용자의 삶의 질을 높이기 위해 노력하고 있지만, QoL 팀은 다양한 팀과 기능 영역에 적용되는 소소한 개선점을 찾는 데 특히 더 집중하고 있습니다. 아라스는 1년 반 전에 이 특별 전담팀을 만들었습니다. 최적화 팀이 성능에 주력하는 것과 마찬가지로, 아라스는 QoL 자체를 하나의 독립적인 기능으로 여기고 이를 개선하는 데 집중했습니다.

현재 팀원은 7명이며 리투아니아의 카우나스에 있습니다. QoL 팀은 유니티의 R&D 팀과 주로 작업하지만, 최적화 팀, 씬 툴링 팀, 품질 보증 팀, 제품 팀, 그리고 내부 제작팀과 가장 긴밀히 협업합니다. QoL 팀의 팀원 중 5명은 당연하게도 고객 QA 팀 출신입니다.

“현장에서 일하면 사용자 리포트를 많이 접하게 됩니다. 어떤 부분을 간소화해야 할지에 대해 통찰력이 생깁니다. 고객 QA 팀은 고객의 버그 리포트를 재현하는 데 많은 시간을 보냅니다. 단지 툴을 제작하는 것이 아니라 Unity를 사용해 본 경험이 풍부하다는 의미죠.”

팀원 7명 중 5명: (왼쪽 상단에서 오른쪽 하단 순서로) 파울리우스, 아라스, 리나, 유스티나스와 이그나스.

QoL 팀의 활동은 수많은 UX 및 통합 측면에서 버전 관리 개선을 구현하면서 본격화되었습니다. 예를 들어 Perforce 통합 기능을 수정하여 Perforce 연결이 끊어지면 자동으로 재연결하도록 시도할 수 있게 했고, 인스펙터 창 상단의 새로운 버전 관리 바를 사용하여 추가, 잠금, 잠금 해제, 제출 등의 추가적인 동작을 수행할 수 있게 되었습니다. 이제 오른쪽 클릭하여 비활성화된 인스펙터 필드의 값을 복사할 수도 있습니다. “Unity 사용자들은 오래 전부터 이런 기능을 요청했습니다. QoL 팀은 빠른 속도로 범위를 확장해 다른 기능도 검토하기 시작했습니다. 더 많은 기능을 추가하는 것이 아니라 기존 워크플로를 다듬고 개선하는 방향으로요”라고 아라스는 설명합니다.

QoL 팀의 목표는 간단합니다. 제품을 계속해서 개선하여 사용하기 더 편리하게 만드는 겁니다. 다시 말해, 에디터의 워크플로를 더 직관적으로 만들고 최적화합니다. “Unity는 즐겁게 사용할 수 있는 툴이 되어야 합니다. 저희는 크리에이터가 시간을 절약하고 생산성을 높일 수 있도록 돕고 싶습니다.”

QoL 팀은 제품 팀과 긴밀히 협력하는 데 우선 순위를 두고 있으며, 포럼, 소셜 미디어, Megacity 및 DOTS 샘플과 같은 데모를 작업하는 유니티 내부 제작팀을 비롯해 모든 채널의 의견에 귀를 기울입니다.

Unity 2020.2로 QoL 향상

최신 테크 스트림 Unity 2020.2가 베타 버전으로 출시되면서 몇 가지 QoL 관련 개선이 추가되었습니다.

Unity 2020.2에서는 에디터 전반에서 섬세한 품질 개선이 많이 이루어졌습니다. 씬 이동, 회전, 확대/축소 핸들 라인이 더 두꺼워지고 설정 가능해졌으며, 이제 메시 인스펙터에서 블렌드 셰이프를 시각화할 수 있습니다. 또한 플레이어 설정의 스크립팅 정의(Scripting Defines)가 배열로 표시되며, 다수의 프리팹을 동시에 씬으로 드래그할 수 있습니다. 선택한 프레임(Frame Selected)을 사용하면 이미 프레임이 지정된 오브젝트의 피벗 포인트를 확대할 수도 있습니다.

아라스는 Unity 2020.2에서 개선된 기능 중 인스펙터에서 배열과 리스트의 순서를 다시 정할 수 있는 기능을 가장 높이 샀습니다. 속성 [NonReorderable]을 사용하면 이 기능을 비활성화할 수 있습니다. 사소해 보이지만 Unity 사용자들이 포럼과 소셜 미디어에서 오랫동안 요청해 왔던 기능입니다. 이제 몇 번의 클릭만으로 배열이나 리스트를 더 쉽게 관리할 수 있습니다.

현재 베타 버전에서 사용할 수 있는 기능에 대해 자세히 알아보려면 블로그 포스팅을 참조하거나 10월 8일에 열리는 웨비나에 참여하시기 바랍니다.

2021년 계획

QoL 팀은 2021년에도 지속적으로 개선 사항을 추가해 나갈 예정입니다. 아라스는 이 여정이 끝나지 않을 것이라는 사실을 강조합니다. QoL 팀은 Unity의 지속적인 개선을 위해 베타 프로그램과의 협업을 강화하고 커뮤니티의 의견에 귀를 기울일 것입니다.

다음은 Unity 2021에 추가될 세 가지 개선 사항입니다.

LOD Group 인스펙터 개선: 표 형식 보기(레이블, 값)로 LOD별 화면 크기 비율을 나타내어 정확한 값을 입력할 수 있습니다. LOD Group 인스펙터는 다중 선택 편집을 지원하며 LOD 수준에 따른 삼각형 개수와 LOD 수준 간에 변화하는 삼각형 개수를 표시합니다. 또한 로컬 공간에서의 오브젝트 크기 설정 기능도 제공합니다.

여러 LOD 그룹을 선택한 상태에서 LOD 전환을 편집하는 모습

다른 LOD 수준 간의 메시 복잡도 개요

플레이 모드 진입 시간 단축: 플레이 모드에 진입할 때 발생하는 메시의 정적 배칭 프로세스가 최적화되었습니다. 테스트 결과 30,000개의 정적 오브젝트가 있는 씬의 경우 플레이 모드 진입이 약 2초 더 빨라졌습니다.

또한 텍스처 임포트 시간 최적화도 진행 중이며 일부 개선 사항이 2021.1 버전에 적용되었습니다. 따라서 에셋 임포트 시 가장 오래 걸리던 텍스처 임포트가 한층 빨라질 예정입니다.

이러한 개선 사항은 QoL 팀의 작업을 단적으로 보여주는 예시입니다. 아라스는 다음과 같이 덧붙이며 말을 마쳤습니다. “사소해 보이지만 사용자 워크플로에는 큰 변화를 가져오는 기능들입니다. 수백만 명의 사용자가 하루에도 같은 작업을 몇 번씩 반복하는데, 단 1 초의 차이와 단 한 번의 마우스 클릭이 쌓여 큰 차이가 되거든요.”

개선 사항 요청

에디터에서 개선되었으면 하는 부분이 있거나 편의성을 향상시킬 수 있는 기능에 대한 아이디어가 있다면 댓글 또는 포럼을 통해 의견을 주시기 바랍니다. 

제작 과정을 더 알아보고 싶으신가요?

이번 포스팅에서는 앞으로 출시될 Unity의 개발과 개선에 집중하고 있는 사람들을 소개하고 그들의 아이디어와 동기를 살펴보는 시간을 가졌습니다. 향후 포스팅에서 다루었으면 하는 팀과 기능 영역이 있다면 아래에 댓글로 알려주시기 바랍니다.

43 replies on “2021년 Unity 로드맵: “Quality of Life” 팀”

– Better play/pause/step buttons in the top middle. Example: combined ‘Play/Pause’ button, new ‘Stop’ button
– To prevent accidental deletion of items: confirmation messages for deleting items in the scene view or hierarchy window (these should also be options that users can switch off if they don’t like/want them)
– Visibility and/or Lock toggles for items in the Hierarchy window (I currently get this functionality in a paid add-on but would prefer it to be native / free).
– Folders in the Hierarchy window instead of using empty game objects.
– Undo option to bring back a deleted item in the Project window
– Clickable icons for Save / Save Project, perhaps next to the icons for Move/Scale/Rotate/etc

-Separate render layers and physics layers.
-ability to “lock” prefabs so the hierarchy cannot be expanded. Important for large teams. don’t want X prefab to have sub objects moved etc…
-make focus work in scene view. 99% of the time it zooms you somewhere completely non-sensical
-Make Start() deterministic. Right now under heavy load Start() is often skipped. (Awake and Enabled are always called)
-Callback for when something leaves a trigger due to destruction.
-allow deletion of objects from nested prefabs. I inherit from cup with handle and can’t delete the handle.

the majority of the time when using imported fbx animations, I set the rig to Humanoid. but then animations look pretty messed up and have no choice but to individually set..

1: Root Transform Rotation bake into pose = true
2: based Upon = original
3: Root Transform Position bake into pose = true
4: based upon = original
5: Root Transform Position Xz Bake into pose = true (if not a walking, looping)
6: based upon = original

I have to do this for each animation, just so i can preview it before deciding to use it.
This is tedious and takes a lot of my time up.
Allowing us to access this would be helpful if you cant be bothered to do it.
or have it be a profile setting option.

I would really wish Unity had an out-of-the box set of basic creator features and assets like water, decals, rain, grass, state-of-the-art terrain etc. It is untenable to require creators writing or buing crapy assets for basic 3D features. I would also like there would be one Unity version and one type of assets usable everywhere. The current fragmentation of versions – URP/HDRP/Standard and non-working broken assets is a nightmare.

PLEASE make the window lock button turn red when it is in a locked state so it is better visible! It is super small and hard to see but a different color like red will make it much more apparent at a glance.

Being able to copy multiple lines from the console is fantastic, but it’s *really* frustrating that there’s no way to disable stack traces when copying. Most of the time I don’t need the full stacktrace — I just want the text of the log.

Right now I have to paste it into a text editor and manually delete the stack trace for each line. :(

@Aras Pranckevičius:
As part of “Quality of Life” improvements, can Unity add to MonoBehaviour initialization event for inactive GameObjects? There is a BIG HOLE in Unity’s script life cycle -> Start and Awake are called only for active objects. MonoBehaviour constructor is nasty can of worms, so we need safe initialization event for inactive objects.

@Aras Pranckevičius:

Plus, can Unity open source its Mesh.RecalculateNormals() implementation? It would be great help for anyone creating applications with procedurally generated graphics.

@Aras Pranckevičius:
Plus, we need ability to change dynamic batching size limit. Currently it is hardcoded as 900 vertex attributes and no more than 300 vertices and you need source code license to change these limits. We need a way to change these numbers from the editor.

Does ‘Quality of life’ mean extremely long app load times when using URP 9 or 10 in 2020.2 beta? I think not.. not impressed with regressions in 2020.1 and 2020.2

A bug report with details (URP package version, which platform, which graphics API, .load times before/after) would definitely help — I know nothing about URP.

In my opinion, a first great QoL improvement would be to allow the user to automatically import any asset from the Asset Store in the current project into a specific subfolder defined in the Project Settings, that folder could be called “_3rdParty” by default for instance. Same while importing custom packages, it could be into a different path also set in the project settings.

Second small improvement: add a horizontal scrollbar or lateral focus to Project/Hierachy tab while looking for an asset/GameObject while searching in the tree. This could avoid expanding the window…

A big yes for the first one. When you are using lots of assets from the asset store your project starts becoming a monster. And if you change the position of the asset, when you update it, it will install it at the initial location instead of the “changed one”

A huge QoL improvement for me would be to just stop refreshing the project when I hit the close button. If I’m working on a large project, I always turn off the auto-refresh as importing and compiling can take up to or over a minute… and I’m often switching between development branches, or there can be build scripts that only work when Unity is closed. It’s infuriating when I hit the close button and have to wait for Unity to do a bunch of work that I’m only going to revert.

1. Active “kill” button, to stop execution of a deadlock code in play mode.

2. Responsive UI, when Unity builds player. Right now you can’t kill WebGL compilation (sometimes it takes ages to click “Cancel” button).

3. Scene become “dirty” constantly, even without any changes (mostly because of UI resize). Especially annoying in unit testing and git version control.

Good but QOL must mean getting rid of bugs and too many are present in 2020.
Hard to use HDRP without getting red errors in the console – bugs reported when able to recreate

Please make it possible so we can navigate the editor with keyboard easier.

Allow for example to focus the project, inspector and hierarchy windows by pressing shortcut keys. Also when focused, please make it so we can navigate on objects using arrow keys in case of hierarchy and project and tab in the case of the inspector.

Have feedback for pressing play no matter if the editor is compiling. I can’t count the amount of times I’ve double pressed that button twice, meaning unity will first start entering playmode then immediate exit again. It sounds like a small complaint, but when you have done it several times a day in a project that takes a long time to enter playmode – you will understand my pain.

Agreed. The issue is also that everytime you’re in that “did I or did I not click” state of mind, you risk being momentarily distracted, which potentially leads to more time lost.

+1 This. Don’t lock up that button on assembly reload. Run it on a separate thread or something but it needs to be responsive.

+1 on this. It is also possible in some very rare occasions for the play button to appear as if the game is running even though it isn’t when accidentally clicking it during domain reload.

This is a big yes! Separate the SDKs into Unity Hub so we can upgrade to the latest LTS version without needed to redownload all the SDK components that we want

It would be great to extend this thinking to Unity Services. I imagine there are many at Unity who use the editor all the time but never or rarely use the dashboard, even during Hackweek.

My god – this!

I can’t even imagine how many simple UX problems I found in unity services dashboard. First that comes to my mind, is a “button” instead of a “link”. On 99% websites, you can click on menu/tab/card item with middle mouse button, to open it in a new card. In unity dashboard, you can only click these buttons with left button, and open them in the same card.

@LeonhardP I posted to that forum on Wednesday, no reply yet. Nobody from Unity responded to the other thread there either.

I understand this is not necessarily a QoL change, but while you’re at it changing the LOD Group component, how about adding a secondary mode where the LOD factor is based on distance from the camera, not screen size? For some projects (VR, mobile) this is a much more intuitive way of configuring performance. I have implemented this myself in the past but the overhead is very high when the scene contains a lot of objects, native support would be fantastic.

Did you try it with culling groups API? it has distance bands, but it is still a bad workaround for what should be a native everyday part of LOD management. Other engines offer distance and screen size options.

“Distance based” LOD mode is on a todo list, but I don’t quite know when it will get done.

Great and much needed initiative!

A few more common QoL grievances come to mind:
Adding multiple items to a list
It would be great to be able to add multiple items to a list (e.g. music track 01-05) without losing inspector focus. Right now, I either have to add them one by one or the old trick of 1) Lock Inspector 2) Select all objects and drag them onto list 3) Unlock inspector.

The “static” checkbox
This checkbox effectively hides a bunch of important, but largely unrelated settings. Some have to do with batching, others with lightbaking and rendering, some with occlusion, some with navigation. In my experience, more often than not you don’t want all these off/on simultaneously, but the representation makes that seem like the obvious choice and invites team members to do so. Manually configuring these settings is a massive, time-consuming pain, because you can only do it by clicking the tiny, fiddly arrow next to the checkbox, then adjusting flags one by one, each of which raises a modal dialog (“Apply to children?”). I’ve had to reset to custom-made tools just to stay sane before.

I wonder why these have to be under this obscure header of “static”, since they’re disparate flags that would really make more sense of the actual components they affect. E.g. “why can I check Reflection Probe/Batching static if this object doesn’t even have a a Renderer?” or “My level designer clicked the static checkbox because they wanted this object to batch, but now it’s also a navigation obstacle…” Note that the Lightmap Static toggle already points towards this solution: it is (inconsistently) also exists on the MeshRenderer, from where it somehow sets the GameObject’s flags.

I understand the above suggestion might be a more invasive refactor than a QoL team might want to tackle. In that case, I would already consider it a big improvement if editing these flags was made less cumbersome and the whole thing was represented as the collection of settings that it is.

You can right click the target component/gameobject and choose properties at the bottom and it will pop out a separate window for that so you don’t have to do the lock/unlock dance.

I am not sure if that was your issue, but felt the need to share if so.

Speaking about QOL improvements, it would be great to get an official solution for prefab lightmaps, instead of a script that is floating around since 2015 sometime on the forums being the only official thing provided to take care of this.

That would make a lot of projects much more feasible, most time I spend on contactor projects is working out how to get around the prefab lightmap issue as large scenes on devices like HoloLens or WebGL projects often require high usage of prefabs to build up and unload parts of scenes. Sometimes having actual scenes is not an option too.

Comments are closed.