Search Unity

2021 年へのロードマップ:2D チームのいろいろな側面

, 12月 22, 2020

先日、2021 年へのロードマップを発表しました。これらの目標に向けて活動しているチームの一部を紹介していきます。シリーズ第 3 回目の今回は、2D チームをご紹介します。

Unity の 2021 年へのロードマップでは、来年の注力分野の一部を明らかにしています。私たちは、本制作に使える機能をアップデートし、皆様からの Unity に足りない機能のご指摘に基づいて、主要な新機能の追加を進めていくことに尽力しています。しかし、私たちは、ワークフローや、皆様が Unity を使った時の体験全体を向上させることにも力を注いでいます。

この記事は、Unity 開発の舞台裏を垣間見るシリーズの第 3 弾です。今日は 2D とツールのチームを率いる Paul Tham と、2D のプロダクトマネージャー Rus Scammell との対談形式でお届けします。

多様なバックグラウンドの持ち主が集うチーム

2D チームは、Unity で 2D 体験を作る人たちに向けて、基礎的な機能をはじめ、ワールド構築、アニメーション、グラフィックス、2D 物理(Sprite Renderer、2D Tilemap Editor、2D Lights などのツールを含む)をカバーする機能セットを提供することを使命とする専任のチームです。現在、コアとなっているチームは、ソフトウェアエンジニア、ソフトウェア品質エンジニア、デザイナー、テクニカルライター、プロダクトマネージャーを含む 15 人によって構成されている強力なチームで、この他にも数人が参加し、その専門知識をもって 2D の進化に貢献しています。

「このチームは、職能をまたいだコミュニケーションを行うために作られたチームなんです。」と Rus は言います。

「チームは多様性のあるチームでもあります。メンバーには、シンガポール人、アメリカ人、スウェーデン人、イギリス人、インド人、マレーシア人、それに中国人もいます。私たちはお互いの文化を共有しているので、ランチタイムのディスカッションはとても盛り上がります」と Paul は付け加えます。

Paul と Rus はともに、PlayStation 2 向けのゲーム開発からそのキャリアをスタートさせました。Paul はその後 Ubisoft で、現在のチームの他のメンバーと知り合いました。このチームは、インディーズから大規模プロジェクトまで、様々な分野のゲーム制作やツール開発に携わる情熱的なゲーム開発者で構成されています。

2D のユーザーとつながる

チームは(2D フォーラムベータ版フォーラムで)ユーザーと関わりを持つことを好み、また、Twitter 上での会話にも目を光らせています。例えば、近日発売予定のタイトル『Tails of Iron』で 2D ライトを使用している Odd Bug Studio 社とつながりを持ったのは、Twitter 上でのことでした。

「コミュニティレベルでは、プレリリース版の機能が利用可能になったときにアナウンスを行い、クリエイターがそれを試してフィードバックを得られるようにしています」と Rus は言います。「また、さまざまなモバイルデバイスでパフォーマンスのテストが行われるようにするために、一層の努力を重ねています。戦略的なレベルで、Unity の機能はまさにユーザー駆動で開発が進められているということです。」

チームはスタジオがどのように 2D ツールを使用しているかを注意深く観察し、そのフィードバックに耳を傾けています。こうした姿勢は、B2tGame 社との『Lost Crypt』の制作や、Glu Mobile 社との Isometric Tilemap の開発にも表れていました。

ユーザーが問題や不満を報告したり、解決策やアイデアを提案したりすると、この部門横断的なチームは、ユーザーが最終的に何を作ろうとしているのかを理解しようと努力します。ユーザーの問題の領域を調べることで、チームは解決策に対するより大きなニーズがあるかどうかを判断することができます。例えば、ユーザーが問題の領域を「ピクセルアート」だと報告した場合、チームは一般的なワークフローと望まれる結果を評価し、結果として得られるソリューション(機能とリソース。この場合は 2D Pixel Perfect パッケージ)がそれらの結果をサポートできることを確認します。

「設計はまた、機能がどのようにして組み合わされるかを決める重要な要素ともなります。また、その設計は、組織全体にまたがる専任の設計チームによって支持されたものが採用されます。」 と Rus は述べています。このチームは、フォーラムでコミュニティと頻繁につながり、ユーザーエクスペリエンスを評価してきた人物を、新しい UX デザイナーとして迎えました。

2021 年に引き継がれる優先事項:UX とパフォーマンス

2D 機能が、現在のワークフローでそれを使っているクリエイターにとっては馴染みのある機能である一方で、2D ツールはその基礎となる技術とともに進化しており、全体的な改善による恩恵が期待できる部分です。

Unity 2020.2 では、新規ユーザーのために、より直感的な体験を提供しました。2D プロジェクトでの作業は、合理化されたメニューより優れたデフォルトアセットにより、高速化を実現しました。チームは、Unity の将来のリリースに向けて、2D メニューと設定を、エディター全体へと一貫性を保ちつつ統合していくことを計画しています。

2020 年に、Unity はパフォーマンスを重点分野の 1 つとして確立させました。そしてその成果は Unity 2021 で明らかになります。2D チームはそれを推進しており、「Unity で作られた 2D プロジェクトのパフォーマンスを向上させ、2D ゲームのクリエイターのためのワークフローを合理化させます」と Rus は述べています。

2D チームが現在注力している分野は、Sprite Swap ワークフローを使った 2D アニメーションと 2D グラフィックスの 2 つです。

Rus と Eduardo(2D 部門、プロダクトマーケティング担当)は、最近の Unite Now のセッションで生産性とパフォーマンスに関するヒントを披露した。

2D アニメーションを使った大規模プロジェクトを可能にする

2D アニメーションには、Unity 2020.1 で Burst に対応し、Unity 2020.2 では 2D インバースキネマティクス(IK)を統合するなどの改善が盛り込まれました。

Unity 2021 に向けて、チームは 2D アニメーションに力を入れており、Sprite Swap ワークフローを洗練させ、複数のキャラクター間でアニメーションクリップを共有しやすくしています。

Paul によると、このチームの現在のミッションは、大規模プロジェクト向けのワークフローを可能にすることだと言います。「パーツ数の多いキャラクターや、ダウンロードコンテンツ(DLC)がたくさんあるゲームでは、キャラクターがリグやアニメーション、パーツを共有できるようにする必要があります。」

すでに新機能を使用しているスタジオからのフィードバックを元に、チームはユーザー体験(UX)にさらに磨きをかけています。これらの改善により、テクニカルアニメーターは、標準的なアセットをチーム全体で共有できるように、リグ、マネキン、または参照を設定することができます。そうすると、アーティストは参照スケルトンのバリエーションを作成し、アニメーターはそれらをアニメーション化することができます。

これらのスケルトンを継承することで、バリアントにパーツの一部が存在しない、あるいは追加のパーツ(尻尾や翼など)があっても問題なく動作するようになります。ユーザーは、亜種を作成するための典型的な Unity のワークフローに従って、不要なスプライトを削除したり、新しいスプライトやアニメーションパーツをボーンの子 GameObject として追加したりする必要がありますが、アニメーション化したパーツの 2D アニメーションのフローを維持することもできます。

これは、2D アニメーション用のスプライトエディター内でのスキニングだけでなく、Sprite Swap ワークフローが一般的なスプライトのワークフローの一部とすることを目的としています。また、エディターの様々な領域において、2D が 3D と併存するようにしたいとも考えています。これは、2D 開発者を含むすべてのユーザーの開発体験を向上させるという Unity のより視野を広げたビジョンと一致しています。

チームは、これらの変更点やその他のマイナーアップデートが Unity 2021 のサイクルで試せるようになると予想しています。

The new UX moves the sprite swapping tooling to the Inspector view.

部門横断的なコラボレーションが Unity には欠かせない

Unity は常に進化しており、2D ツールは新しく出てきたテクノロジーから恩恵を受けることができます。Paul は、他のチームとの連携の取り方を次のように説明します。

「私たちは Burst や SRP といった内部にある技術を積極的に使っていきます。何かが社内でリリースされるたびに、私たちはその技術を利用して、私たちの機能の 1 つをそれに適応させます。1 つの機能でプロトタイプを作成することで、その新しい技術が 2D に適しているかどうかを明確に把握することができます。数回のテストとプロトタイピングのラウンドの後、それを社内のロードマップに載せていきます。」

そのような連携の一例として、Unity 2020.1 の 2D アニメーションでは、多数のスキニングされた頂点をアニメーションさせるような難しいシナリオのために、Burst のパフォーマンスの向上を図ったものが挙げられます。別の例として、スプライトシェイプのメッシュ計算の性能の向上が挙げられます。また、Cinemachine チームと協力して 2D Pixel Perfect との互換性を確保したり、グラフィックスチームと連携して 2D Renderer の洗練を行ったりしました。

このセッションで、Burst でパフォーマンスの向上を図った 2D アニメーションについて詳細を確認できる。

新しいグラフィックパイプライン用 2D レンダラーの開発

チームの 2021 年の目標は、ユニバーサルレンダーパイプラインで 2D グラフィックスのパフォーマンスを高速化することです。また、2D のライトとシャドウのユーザー体験の向上にも取り組んでいます。

ユニバーサルレンダーパイプライン(URP)は最終的に Unity のデフォルトレンダラーとなる予定で、これには 2D プロジェクトのデフォルトレンダラーとなる 2D レンダラーも含まれています。チームは、ライトのレンダーテクスチャの最適化に懸命に取り組んでおり、特にフレームレート、メモリ帯域幅、ドローコール、2D のライトでの全体的なメモリ使用量に細心の注意を払っています。

Paul によると、この作業は低レベルの最適化コードで構成されているということです。「レンダラーが 2D プロジェクトのニーズを満たすことを保証するために、同じコードベースとレビュープロセスを使用して、URP を担当しているチームと密接に連携しています。」

また、2D レンダラーに関わる作業の一環として、セカンダリテクスチャ(2D ライト用の法線マップとマスクマップ)のレンダリングパイプラインをさらに改良しています。

Unity のパフォーマンスは、さまざまなデバイスで継続的にベンチマークが行われています。1 つのシーンに結合されたすべての 2D 機能のパフォーマンスをテストするための環境として、チームは、他のプロジェクトや測定方法の中から、特に『Lost Crypt』を選んで使いました。

全体的な改善点としては、ユーザー体験(UX)の強化や、2021 年のサイクルで計画されているインスペクターウィンドウからのテクスチャサイズの管理など、機能へのアクセスを容易にすることが挙げられます。

Rus は、期待される成果を包括的に見ていると説明します。「スタジオと話をして、制作中にツールをどのように使っているかを学ぶことで、これを実行しています。」

2D レンダラーの開発では、『Lost Crypt』プロジェクトをベンチマークとして使用した。

2021 年のサイクルの準備を始めよう

チームは 2021 年に URP を成熟させることを目標に、そのサポートとして懸命に仕事をしています。2D レンダラーは、次世代の 2D グラフィックスとワークフローの改善を後押しするものとして位置づけられており、アーティストからゲームデザイナーまで、誰もが、キャラクターにアニメーションを付けたり、ステージをデザインしたり、素晴らしいビジュアルを作成したりといった作業をエディターで直接行えるようになります。来年も最新の開発成果を皆様と共有していけることを楽しみに仕事を進め、Unity がどのようなプラットフォームに向けた開発においても、2D プロジェクトに最適なソリューションとしての地位を確固たるものにするべく、邁進してまいります。

舞台裏をさらに知りたい方へ

この記事は、将来バージョンの Unity に向けた開発に取り組んでいる人たちを紹介し、それらの人々のインスピレーションと開発の原動力に触れる、開発者ダイアリーのシリーズ第 3 回目となる記事です。これまでの 2 回の記事では、2021 年に向けて、パフォーマンス最適化および、開発時のユーザー体験の向上に取り組むチームをそれぞれ取り上げました。見逃した方は、ぜひこれらの記事もご覧ください。

今後のブログ記事で、特に取り上げてほしいチームや機能分野がある方は、この記事のコメント欄でお知らせください。

16 replies on “2021 年へのロードマップ: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.