【日本語解説】Unity 技術ロードマップ 2020 (第1回) ~「信頼性とパフォーマンス」について~
本日より、2020年3月26日に公開された動画「Unity Roadmap 2020: Core Engine & Creator Tools」の内容を翻訳し、Unityが「過去」「現在」「未来」に向けてどのような開発をしているか、その理由なども含めを日本語解説していきます。
第1回の本記事では、動画内の4項目のうち「信頼性とパフォーマンス(Reliability & performance)」について説明しています。残りの項目は別の記事で紹介します。
なお、プレゼンテーションスライドが英語なので、見にくく感じる部分もあるかもしれませんが、その場合は各セクションの「要約」だけを追いかけても把握できるように努めます。
それではどうぞ。
「信頼性とパフォーマンス」の指針(指導原則)
まず、私たちの「信頼性とパフォーマンス」における指針(指導原則)について説明します。
それは「Unityが皆さんのクリエイティブな目標やビジネスの目標のために信頼性が高く、またパフォーマンスの高いプラットフォームであることを保証すること」です。
信頼性の高いプラットフォームの構築
要約
・安定(stable)した堅牢(robust)なUnityを提供するため、現在の年3回リリースを2回に変更します
・公開されているプレビューPackageの数も減らし、分かりやすいPackageリリースサイクルを目指します
「信頼性の高いプラットフォームの構築」について。
ここでの私たちのミッションは、安定(stable)した堅牢(robust)なUnityを提供することです。
これまでは、年3回のリリースを行い、最終リリースは長期サポート版の「LTS(long-term support)」となりました。
しかしこれとは別に、Packageは非常に早い時期にプレビューで出荷されていたため、たまに予期せぬ品質とロードマップが分かりにくくなることがありました。
一方でUnityは(技術的移行として)「SRP」「DOTS」「UI Elements」などの新しいテクノロジーにエンジニアリングの焦点を当ててきました。
そして現在行っているは、2020年に向けて(3回から)2回のリリースに切り替えることです。
最終的な2つ目のリリースは(将来の)LTSバージョンになります。2回のリリースはより長い安定化フェーズを意味し、αバージョンとβバージョンを通じて、より堅牢で安定したリリースになります。
また、公開されているプレビューPackageの数も削減されています。私たちはプレビューの新しい定義に移行しています。実験的な機能はFocus Groupの方を対象にしたままにしておきます。
私たちは常にユーザーのことを第一に考え、最新バージョンのUnityで皆さんが成功できるように、コアとなる製品の品質に焦点を当てています。
将来的には、この年に 2 回のペースを維持していくつもりです。私たちはコミュニティの皆さんと一緒に、Packageの新しいライフサイクルに取り組んでいきます。
私たちは、現在のテクノロジーとより良い未来のために開発中のテクノロジーとのバランスを重視しています。
製品開発の方向性
要約
・Unityの開発チームは、新しいテクノロジーをしっかり検証し、ユーザーの皆さんに確実な品質のUnityをお届けできるよう製品開発を進めています
・「FPS Sample」「Megacity」、そして3人称視点のネットワークゲームである「DOTSサンプルゲーム」、さらに現在開発中の”大規模なオープンワールドシューティングゲーム(a large open-world shooter)"などのデモプロジェクト開発を通じて、Unity上で大規模なオープンワールドを開発可能にすることに注力しています
次は「製品開発の方向性(Production orientation)」です。
ここでの私たちのミッションは、(Unityに実装する)新しいテクノロジーをしっかり検証し、ユーザーの皆さんに確実な品質のUnityをお届けできるよう製品開発をすることです。
これまで「FPS Sample」や「Megacity」のようなデモプロジェクトをリリースしてきたのは、大規模ネットワーク構築を検証するための手段としてでした。
現在はPre-releaseで「DOTSサンプルゲーム」を公開しており、Unityの開発チームは外部の大規模ゲームスタジオと協力して「DOTSサンプルゲーム」に実装されている多くの新機能のテストを行っています。
これまでに、大規模な世界をオーサリングしたりレンダリングしたりする性能を実行・検証する手段として、「FPS Sample」や「Megacity」をリリースしてまいりました。
Pre-releaseでは、3人称視点のネットワークゲームである「DOTSサンプルゲーム」にフォーカスしています。これは新機能であるDOTS、Netcode、アニメーション、Unityの物理(physics)システムがうまく調和して動作することを目指して取り組んでいます。
そして私たちは今、新しい環境(environment)システムと「DOTSサンプルゲーム」プロジェクトで検証した数多くのDOTS機能を組み合わせた、大規模なオープンワールドシューティングゲーム(a large open-world shooter)に注力しています。
このプロジェクトでは、大規模シーンでのスケーリングやストリーミング、反復処理のパフォーマンス、ネットワーキング、アニメーションと物理挙動=physicsを担うDOTSシステムとの連携に焦点を当てています。
これらを通じてUnityをどのように改良し、性能限界の問題を解決し、新しいテクノロジーの導入や新システムの開発を通して、Unityで大規模なオープンワールド開発を可能にするかに、Unityの開発チームがフォーカスしてきたことをご理解いただけると思います。
パッケージ(Package)
要約
・Package Managerの改良を通じて、Packageシステムをより使いやすいものにしていきます
・Package ManagerはUnity Asset StoreのMy Assetsも取り込めるようにしており、さらに検索性・更新のしやすさを高めています
・プロジェクトにカスタムパッケージをインストールできる機能もPre-releaseしており、名前空間を持ったnpmレジストリやGitパッケージの認証をサポートしています
・新しい依存関係ソルバーも実装中で、Packageを扱う際の問題点を解決できるよう徐々に開発作業を進めています
次の話題はパッケージ(Package)、"Packages and you"です。
ここでのミッションは、(Packageシステムを通じて)新しいソリューションを発見できることや、Packageのアップデートをより簡単に管理することです。
つまりそれは、ターゲットとするワークフローやプラットフォームに合わせて皆さん自身のプロジェクトを拡張し、カスタマイズできるようにする・・・ということです。
現在までに、Unity Asset Store(アセットストア)の「My Assets」をネイティブでサポートすることで、統一されたエディタ内のパッケージ管理機能の第一段階をリリースしています。
これは、アセットストアで購入したすべてのアセットをパッケージマネージャ(Package Manager)のUI内で直接管理できることを意味します。アセットをダウンロードしてプロジェクトに直接インポートしたり、パッケージマネージャーの「My Assets」検索フィルターでアップデートを直接チェックしたりすることができます。
Pre-release版では、エディタ内アセットストア「My Assets」の統合機能を改善し、より高速なパッケージ検索と一覧表示のパフォーマンスを実現し、新しいソートとフィルタリングのオプションでユーザーエクスペリエンスを向上させました。
並行して、プロジェクトにカスタムパッケージをインストールする機能も拡張され、名前空間を持ったnpmレジストリや、リポジトリサブフォルダ内のGitパッケージの認証をサポートしています。
今後は、こうしたUnityの機能群・ソリューションのモジュール化を進めていく中で、利用可能なパッケージの大規模化をサポートするために、ユーザーエクスペリエンスの向上に投資し、最新の開発状況をより明確にしていきます。
新しい検索フィルタグループによる一括インストールとアンインストール、カテゴリのサポートにより、適切なソリューションを発見しやすくなります。また、アップデート時のコンフリクトに対処するために、新しい依存関係ソルバーを実装中です。
これらのトピックスを通じて、Package Managerが単にリリースされただけではなく、アセットストア上のアセットの扱い方までもより洗練した形に発展させてきていることがご理解いただけたかと思います。
そしてそれらを上手く統合し、Packageを扱う際の問題点を解決できるよう、徐々に開発作業を進めています。
プロファイリングとパフォーマンスの最適化
要約
・デバッグやパフォーマンスチューニングなどのプロファイリング作業を効率的に行えるツール群を引き続き開発しており、直近1年はその分野に大きな開発投資をしてきました
・Pre-releaseのメモリプロファイラでは、キャプチャー時のオーバーヘッドなどを大きく減らして安定利用を可能にしています
・さらに開発中のプロファイラは、プロファイルデータをより柔軟かつアクセスしやすくするよう改良中です
「プロファイリングとパフォーマンスの最適化」について。
ここでの私たちのミッションは、皆さんがプロジェクトのプロファイリング作業を効率的に行えるパフォーマンスやメモリのプロファイリングツールを提供することで、最大のパフォーマンスを得られるようにすることです。
この1年間、Unityはこれまで以上にプロファイリングツールに対して開発投資してきました。これは2018年以降掲げている「Performance by Default(「デフォルトの状態でもきちんとパフォーマンス性能を発揮できる」という意)」というUnityの考えを推進する上で重要なポイントです。
Unityにはすでに包括的なパフォーマンス・ツール群があります。そこで直近は、そのツールが安定性とパフォーマンスの面で強固なものであるよう開発を注力してきました。
Pre-releaseでは、メモリプロファイラのアップデートにより、安定性とパフォーマンスに引き続き注力しています。
最新のアップデートでは、キャプチャメモリのオーバーヘッドやキャプチャしてその結果を得るまでの時間を大幅削減し、より高速で安定して利用できるようになりました。
また、プロファイラウィンドウをエディタの他の部分とは別のプロセスで実行できるようにすることで、プロファイリングのパフォーマンスオーバーヘッドを大幅に削減しました。
Unity2020.1では、プロファイルマーカーにメタデータを追加することもできるようになり、プロファイルデータのコントロールとコンテキストをより高めることができます。
Unity2020.1からJob Systemを使用している場合は、プロファイラウィンドウの新しいフローイベントの可視化を通じて、ジョブの実行で何が起こっているかを確認することができます。
また、プロジェクトのプロファイリング内容・結果をユーザーの皆さんが理解・把握できるよう、大規模なドキュメント修正も完了しました。
現在開発中のものについては、プロファイルデータをより柔軟に、よりアクセスしやすくしています。
すべてのデバイスでより信頼性の高いものにするために、Player connectionも再開発中です。
また、独自のランタイム カウンタを作成し、API を介して公開することも可能にしています。
このように、プロファイリングツールを安定的にご利用いただけるようにするため、時間をかけてより拡張性を高めること推進してきたことがお分かりいただけたかと思います。
・・・ということで「信頼性とパフォーマンス」の日本語解説は以上です。他の項目も順次翻訳しておりますので、もうしばらくお待ちください。