Search Unity

최근 유니티는 2021년 Unity 로드맵 계획을 소개한 바 있습니다. 이와 더불어 계획을 실현하기 위해 함께 작업 중인 유니티 팀의 일부를 차례로 소개할 예정으로, 이번 포스팅에서는 2D 팀을 소개합니다.

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

이번 포스팅은 이 과정을 소개하는 시리즈의 세 번째 글로, 2D 및 툴을 담당하는 팀의 리더인 폴 탐과 2D 프로덕트 매니저인 루스 스카멜을 만나 이야기를 나누었습니다.

다양한 분야의 전문가로 구성된 팀

2D 전담 팀에서는 개발자가 2D 환경을 제작할 때 기초 작업, 월드 구축, 애니메이션, 그래픽, 물리 등을 구현할 수 있는 Sprite Renderer, 2D Tilemap Editor, 2D Lights 등의 기능을 제공합니다. 현재 2D 팀은 소프트웨어 엔지니어, 소프트웨어 품질 엔지니어, 디자이너, 테크니컬 라이터, 프로덕트 매니저 등 15명으로 이루어져 있으며 다른 여러 전문가들도 2D 개선에 힘을 보태고 있습니다.

루스는 2D 팀을 “여러 분야의 전문가들이 협업하도록 만들어진 팀”이라고 소개합니다.

“또한 다양성이 돋보이는 팀이기도 합니다. 팀원들은 싱가포르, 미국, 스웨덴, 영국, 인도, 말레이시아, 중국 등 다양한 국적을 가지고 있습니다. 서로 문화를 공유하며, 점심 시간은 자주 활발한 대화의 장이 되곤 합니다”라고 폴은 덧붙입니다.

폴과 루스는 PlayStation 2 게임을 함께 개발하며 경력을 쌓기 시작했습니다. 이후, 폴은 Ubisoft에서 근무하며 다른 팀원 몇 명을 만나게 되었습니다. 2D 팀은 인디 게임과 대규모 프로젝트를 모두 지원하며, 게임 제작과 툴 개발 등 다양한 영역에 참여해 온 열정적인 게임 개발자로 이루어져 있습니다.

2D 사용자와의 소통

2D 팀은 2D 포럼과 베타 포럼을 통해 사용자와 소통하며, 트위터에서 공유되는 대화에도 주의를 기울입니다. 그 예로 Odd Bug Studio가 있습니다. 이 스튜디오에서는 곧 발매될 타이틀인 Tails of Iron에 2D Lights를 사용했습니다.

루스는 다음과 같이 말합니다. “출시를 앞둔 기능을 커뮤니티에 알려 이를 체험해 보게 하고 피드백을 받습니다. 또한 다양한 모바일 기기에서 성능을 테스트하기 위해 노력하고 있습니다. 전략적 측면에서 보면 Unity의 기능은 사용자 피드백을 토대로 개발되고 있는 셈이죠.”

팀원들은 개발사에서 2D 툴을 사용하는 방식을 면밀히 관찰하고 이들이 제공하는 피드백에 귀를 기울입니다. 이를 잘 보여주는 대표적인 사례는 B2tGame의 Lost Crypt 제작과 Glu Mobile의 아이소메트릭 타일맵(Isometric Tilemaps) 개발입니다.

사용자가 문제나 불만을 제기하거나 해결책 또는 아이디어를 제안하면 다양한 분야의 전문가로 구성된 2D 팀에서 사용자가 궁극적으로 만들고자 하는 것이 무엇인지 파악하기 위해 노력합니다. 사용자의 문제 영역을 살펴보면 해결책이 절실히 필요한지 여부를 파악할 수 있습니다. 예를 들어, 사용자가 ‘픽셀 아트’에 문제가 있다고 보고할 경우 2D 팀에서는 일반적인 워크플로와 원하는 결과를 평가하고 해결책(기능 및 리소스, 이 경우에는 2D Pixel Perfect 패키지)을 도출하여 사용자를 지원합니다.

“디자인 역시 기능을 제공하기 위한 중요 요소가 되었으며 전담 디자인 팀에서 이를 지원합니다”라고 루스는 말합니다. 2D 팀의 새 UX 디자이너는 사용자 경험을 평가하기 위해 포럼에서 커뮤니티와 자주 소통합니다.

2021년 우선 순위: UX 및 성능

2D 기능은 현재 워크플로에 활용 중인 개발자들이 계속 사용할 수 있도록 동일하게 제공되며, 2D 툴은 기반 기술의 발전에 맞춰 전반적으로 개선될 예정입니다.

Unity 2020.2에서 2D 팀은 새로운 사용자에게 더욱 직관적인 경험을 제공했습니다. 메뉴가 간소화되고 기본 에셋이 개선되어 2D 프로젝트를 더 빠르게 진행할 수 있습니다. 2D 팀에서는 향후 Unity 릴리스를 통해 2D 메뉴와 설정을 에디터 전반에 지속적으로 통합해 나갈 계획입니다.

2020년에 유니티는 성능에 주로 집중했으며 그 성과는 Unity 2021에서 공개될 예정입니다. 루스는 2D 팀에서 “Unity로 제작된 2D 프로젝트의 성능을 개선하고 2D 게임 개발자의 워크플로를 간소화”하기 위해 최선을 다하고 있다고 말합니다.

현재 2D 팀에서는 Sprite Swap 워크플로를 활용한 2D Animation과 2D 그래픽스에 주력하고 있습니다.

최근에 공개된 Unite Now 세션에서 루스와 에두아르도(2D 프로덕트 마케팅 담당)가 생산성과 성능을 높이기 위한 몇 가지 팁을 소개했습니다.

대규모 프로젝트를 위한 2D Animation

Unity 2020.1에서는 2D Animation에 Burst 호환성이 개선되었으며 Unity 2020.2에서는 2D Inverse Kinematics(IK)가 통합되었습니다.

Unity 2021에서는 2D Animation에 집중하여 Sprite Swap 워크플로가 정교해지고 여러 캐릭터에서 애니메이션 클립을 공유하기가 더 쉬워질 전망입니다.

2D 팀은 궁극적으로 대규모 프로젝트를 위한 워크플로를 지원하고자 합니다. 폴은 “캐릭터에 파트가 많거나 게임에 다운로드 가능한 콘텐츠(DLC)가 많을 경우 캐릭터의 릭, 애니메이션, 파트를 공유할 수 있어야 한다”고 말했습니다.

새로운 기능을 미리 사용해 본 스튜디오에서 제공한 피드백 덕분에 2D 팀에서는 사용자 경험(UX)을 한층 개선해 나가고 있습니다. 이러한 개선을 통해 테크니컬 애니메이터는 마네킹 또는 레퍼런스가 되는 릭을 설정하여 팀 내에 표준 에셋을 공유할 수 있게 됩니다. 이제 아티스트는 레퍼런스 골격을 다양하게 변형하고 애니메이터는 이를 애니메이션화할 수 있습니다.

골격을 상속하면 파트가 누락되었거나 꼬리나 날개와 같이 파트가 추가된 세부 모델도 아무런 문제 없이 즉시 활용할 수 있습니다. 사용자는 다양한 모델을 만들 때 일반적으로 사용하는 워크플로에 따라 불필요한 스프라이트를 제거하거나 새로운 스프라이트 또는 애니메이션화된 파트를 뼈대의 자식 게임 오브젝트로 추가할 수 있으며, 애니메이션화된 파트에는 2D Animation 워크플로를 계속 유지할 수 있습니다.

목표는 Sprite Swap 워크플로가 스프라이트 에디터 내에서 2D 애니메이션에 스키닝(skinning)을 하는 데 그치지 않고 일반적인 스프라이트 워크플로의 일부가 되도록 하는 것입니다. 또한 에디터의 다양한 영역 전반에 3D와 2D가 공존하기를 원합니다. 따라서 2D 개발자를 비롯한 모든 사용자에게 더 나은 편의성을 제공하고자 합니다.

2D 팀은 이와 같은 변경 사항과 기타 업데이트를 Unity 2021 릴리스에서 공개할 계획입니다.

새로운 UX에서는 스프라이트 스와핑 툴이 인스펙터 뷰로 이동됩니다.

다양한 팀의 지속적인 협업

Unity는 꾸준히 발전을 거듭하고 있으며 2D 툴은 새로운 기술을 활용하여 더욱 개선되고 있습니다. 폴은 다른 팀과의 협업에 대해 다음과 같이 설명합니다.

“저희는 Burst나 SRP와 같은 내부 기술을 주로 활용합니다. 내부에서 어떤 기술이 출시되면 해당 기술에 맞추어 2D 기능 중 하나를 수정합니다. 한 가지 기능을 가지고 새로운 기술을 프로토타이핑해 보면 해당 기술이 2D에 적합한지를 비교적 확실하게 알 수 있습니다. 새로운 기술은 테스트와 프로토타이핑 과정을 몇 차례 거치고 난 후에 내부 로드맵에 포함됩니다.”

이와 같은 협업의 예로는 Unity 2020.1에서 다수의 스킨 적용 버텍스를 애니메이션하는 까다로운 시나리오를 바탕으로 이루어진 2D Animation의 Burst 성능 개선이 있습니다. 다른 사례로는 Sprite Shape 메시 계산의 향상이 있는데, 이는 특히 런타임에서 유용합니다. 또한 2D Pixel Perfect의 호환성을 위해 시네머신 팀과 협업하고, 그래픽스 팀과는 2D Renderer를 정교하게 다듬기도 했습니다.

이 세션에서 Burst 성능을 활용한 2D Animation에 대해 자세히 알아볼 수 있습니다.

새로운 그래픽스 파이프라인을 위한 2D 렌더러 개발

2021년 2D 팀의 목표는 유니버설 렌더 파이프라인(URP)에서 2D 그래픽스의 성능을 높이는 것입니다. 또한 2D의 광원 및 섀도우에 대한 사용자 경험을 개선하기 위해서도 최선을 다하고 있습니다.

유니버설 렌더 파이프라인은 Unity의 기본 렌더러가 될 예정이며, 2D 렌더러는 2D 프로젝트의 기본 렌더러가 될 예정입니다. 2D 팀은 광원 렌더 텍스처를 최적화하는 데도 많은 노력을 기울이고 있습니다. 특히 2D Lights의 프레임 속도, 메모리 대역폭, 드로우 콜, 일반 메모리 사용량을 면밀하게 살펴보고 있습니다.

폴에 따르면 이 작업은 로우레벨 최적화 코드로 이루어져 있습니다. “렌더러가 2D 프로젝트의 요구 사항에 부합할 수 있도록 URP 담당 팀과 긴밀하게 협력하면서 동일한 코드 베이스와 리뷰 프로세스를 사용하고 있습니다.”

여기에 더해 2D 팀에서는 보조 텍스처(2D Lights의 노멀 및 마스크맵)의 렌더링 파이프라인도 더욱 개선하고 있습니다.

Unity의 성능은 다양한 기기에서 꾸준히 벤치마킹되고 있습니다. 단일 씬에서 모든 2D 기능의 성능을 테스트하기 위해 2D 팀에서는 Lost Crypt를 활용했습니다.

전반적인 개선 사항으로는 사용자 경험(UX)의 강화, 기능의 접근성 향상 등이 있으며, 그 예로 2021 릴리스에서는 인스펙터 창에서 텍스처 크기를 관리할 수 있습니다.

루스는 보다 거시적 관점에서 원하는 성과를 실현하고 있다고 설명합니다. “저희는 스튜디오와 지속적으로 소통하면서 제작 단계에서 툴을 어떻게 사용하고 있는지 파악합니다.”

2D Renderer 개발에 벤치마크로 활용된 Lost Crypt 프로젝트.

Unity 2021 릴리스 준비

2D 팀은 2021년에 URP의 완성도를 높이기 위해 활발히 작업 중입니다. 2D Renderer는 차세대 2D 그래픽스뿐 아니라, 아티스트부터 게임 디자이너까지 모든 사용자가 에디터에서 멋진 비주얼을 직접 만들고, 캐릭터를 애니메이션화하고 레벨을 설계할 수 있도록 지원합니다. 2021년에도 모든 플랫폼에서 2D 프로젝트 개발에 Unity가 최고의 솔루션이 될 수 있도록 최신 개발 사항을 공유할 예정입니다.

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

이번 포스팅은 미래의 Unity를 위해 노력하는 사람들을 소개하는 개발 일지의 세 번째 에피소드입니다. 이전의 두 에피소드에서는 2021년에 대비하여 개발을 진행 중인 성능 최적화QoL 팀에 대한 소개를 확인할 수 있습니다.

향후 포스팅에서 다루었으면 하는 팀과 기능이 있다면 아래에 댓글로 알려주시기 바랍니다.

16 replies on “2021년 Unity 로드맵: 2D 팀”

Extraordinary that your improving 2d, however it’s still dreadfully hard to set up an essential 2d game contrasted with the opposition.

Hey all, don’t worry that your must-have feature isn’t implemented, or is too buggy to use. At least the team’s lunchtime discussions are very lively. What more could you want?

Thanks for your effort, although I think there are other basic features that should be already done, before worrying about those. I have posted them in the forums but I’m summarizing them here:

1-Emissive colors (https://forum.unity.com/threads/is-emissive-textures-planned-to-be-implemented-anytime-soon.1017436/)
2-Ability to choose which ShadowCasters are affected by which lights (https://forum.unity.com/threads/ability-to-choose-which-shadowcasters-are-affected-by-which-lights-by-layer.1029523/)
3-Blend mode in Sprite-Lit shaders in ShaderGraph (https://forum.unity.com/threads/blend-mode-in-sprite-lit-shaders-in-shadergraph.1028935/)
4-Read lights texture in ShaderGraph (https://forum.unity.com/threads/read-lights-texture-in-shadergraph.1028149/)
5-Target Sorting Layers as an asset (https://forum.unity.com/threads/2d-lights-proposal-target-sorting-layers-as-an-asset.1024630/)
6-Custom postprocesing
7-Tilemap shadow caster (https://forum.unity.com/threads/script-for-generating-shadowcaster2ds-for-tilemaps.906767/)

Regards.

Thanks for these threads. These are all great suggestions and we have them on our list. Except for #5, that’s a new concept for us. Happy to discuss more in the threads.

Constantly asked for the critical and core missing features in the forum :

https://forum.unity.com/threads/current-2d-renderers-missing-core-features.1023772/

1. Emissive Channel – This is MUST have for any 2D or 3D rendering pipeline. I am not sure why this was not implemented the first time, because no rendering pipeline is practically usable without one.

2. Opaque Texture ( GrabPass )

3. Soft Shadow

4. Renderer Features, is an another must have feature.

5. Updatable ShadowCaster2D runtime sprite silhouette and ShadowCaster2D Falloff Distance.

6. Tilemap ShadowCaster2D support.

Can we please get these sorted out? Emissive channel for lighting + opaque texture (grabpass) is MUST! for any rendering pipeline. Almost impossible to make proper look without these!

These are all great ideas. Thank you! We have them on our list. Let’s discuss in more detail in the thread.

Hi. Is there a some good place to make suggestions for fixing some issues for 2D packages? Cause it feels like nobody really read forums, and doing everything as bug report is somehow wrong. There were a lot of missing features or poorly-working ones I had to fix myself by editing the packages, but I want to suggest those changes to developers.

You’ve made a great point. We are working to improve how we engage with our users in a structured and persistent way. Until then, please make a thread on the forum and link it back in here. I really want to know what you had to fix to make the the 2D packages work. We’ll dive into the details in the thread…

Great that your improving 2d, but it’s still far too difficult to set up a basic 2d game compared to the competition.

Starting to agree. Modern workflows mean its much easier to make a 2D game in something like gamemaker or godot, and much easier to make a 3D game in something like Unreal. Starting to only find the reason to use unity is due to client preference / pre-existing tech stack. Less of my recent clients care about unity at all and are actively asking for alternative solutions.

This is good you’re improving them, but there are some serious problems with animation blending, especially with Blend Trees. Like some flags, that should be interpolated between 2 animations are getting kept on for whole transition duration because they are “bool”. Or sprites not swapping with Sprite Libraries unless you perfectly match position in blend tree.
I fixed both by editing packages, but it requires some really weird workarounds because Unity’s animation system itself is limited, and support says it’s “by design”.

Hi, are there any plans to enable passing custom per-vertex data with new 2D (Sprite?) Renderer?
When I need this for now, I am utilizing X,Y rotation and Z scale.

Comments are closed.