Better build times and iteration speed for Quest - Unity Weekly #060

Unity Weeklyは、@yucchiy_が読んだUnity関連の記事の中から、気になった記事を週報形式で紹介するコンテンツです。

記事に関するコメント等は、@yucchiy_までリプライいただけると幸いです。もし気に入っていただければRSSやブクマいただけると喜びます。

一覧はこちらから閲覧できます。

Unity Official

Quest 向けのビルドタイムとイテレーション速度の向上

Quest 向けのビルドタイムとイテレーション速度の向上 | Unity Blog

Questの開発において、実機アプリのビルド時間を短縮してイテレーション速度を向上するための方法として、「Unityバージョンごとのビルド速度の比較」や「Oculus Link」、「スクリプトのみパッチ」、「Addressables」を紹介しています。

Unityのバージョンを最新に保つことで、Unity 2019 から2020で33% ~ 42%、Unity 2020から2021で8% ~ 16%ほどビルド時間を短縮でき、さらにスクリプトのみパッチオプションを用いることでapkビルドをスクリプトのみの更新に留め、ビルド時間を45%ほど短縮できることを紹介しています。

Addressablesを用いることでプロジェクト内のコードとアセットを分離することを容易にし、アセットのリモート読み込みを可能にします。アセット更新のみの場合はアセットビルドのみに留めることでアプリビルドを省き、大幅なビルド時間の短縮を行えます。

また、複数シーンで同マテリアルを利用する際にビルド時間がかかるエッジケースやAddressablesの接続先をローカルとリモートで切り替える方法、OVR Quick Scene Previewについても言及しています。

Burst 1.7 でゲームの品質を向上させる

Burst 1.7 でゲームの品質を向上させる | Unity Blog

この記事では、Burst 1.7のアップデートについて紹介しています。

Burst 1.7では主にイテレーション時間の大幅な短縮とBurst Inspectorの改善(「Show Branch Flow」とインスペクター内の選択中コードのコピー)が行われました。イテレーション時間改善については具体的な取り組みとパフォーマンスの計測結果を、Burst Inspecrtorについてはコンパイル済みのBurstコードの分岐フローをわかりやすく可視化する「Show Branch Flow」をスクリーンショット付きで解説しています。

また直接呼び出しのパフォーマンス改善や、その他の改善項目として「Arm Neon vst1* API への 完全対応」や「Burst を使ったコード内で System.Span と System.ReadOnlySpanのサポート」などについても言及しています。

Experimental Entities 0.50 is Available

Unity - Experimental Entities 0.50 is Available - Unity Forum

ECS(Entity Component System)パッケージの 0.50の実験パッケージがリリースされました。このパッケージはUnity2020.3.30以降を利用する必要があります。インストールガイドはこちらから、Entitiesパッケージの0.17から0.50へのアップグレードはこちらのドキュメントで確認できます。

このリリースの一部として下記パッケージがUnity 2020 LTSで一緒にテストされています。Changelogは下記から確認できます。

このアップデートの主要な機能として、下記が追加されています。

  • Entity Authoring

    • Entity Debuggerウインドウの一部機能刷新
    • 2つのEntityプロファイラーモジュールの追加
    • Entities Journalingを用いたECSイベントの記録や調査、データのライフサイクルの把握
  • System and Entities API Inprovements

    • SystemBaseEntities.WithFilter(NativeArray<Entity> entities)IJobEntity
  • Improved Debugging

    • ECSが生成するC#コードの可視化、主要なエンティティにデバッガプロキシが追加されてIDEでのデバッグが容易に、スタンドアロンビルドでのデバッグ情報の追加
  • Netcode Updates、Rendering Updates、Unity Physics and Havok Updates

DOTS Development Status And Next Milestones - March 2022

Unity - DOTS Development Status And Next Milestones - March 2022 - Unity Forum

Entities パッケージ 0.50のリリースとあわせて、Entities 1.0に向けたマイルストーンが公開されました。

1.0のリリースに向けて、2020 LTSとの互換性の達成、2021 LTSとの互換性の実現、2022 Tech Streamとの互換性の到達を目標としている点を触れています。

またEntities 1.0では、既存のすべての機能を置き換えるのではなく、GameObjectsとの互換性を持ちつつことも言及しています。GameObjectシステムとECSベースのシステムを効率的にブリッジするためのAPIとオーサリングワークフローを提供することで、ゲーム構築に柔軟性をもたせるようにするようです。

マイルストーンの詳細についてはこちらのリンクから確認できます。

Hub 3.1.0 node-ipc incident

Unity - Hub 3.1.0 node-ipc incident - Unity Forum

Unity Hub 3.1.0のリリースに含まれていたnode-ipcライブラリの障害とその障害による影響のレポートと、Unity Hubが将来の問題を防ぐための内部QAプロセスの改善について説明しています。

Unity ゲーミングレポート 2022:ゲーム業界の今を知る 5 つの知見

Unity ゲーミングレポート 2022:ゲーム業界の今を知る 5 つの知見 | Unity Blog

この記事では2021年のトレンドを調査し、2022年以降のゲーム業界の変化についての予測を行った「Unity ゲーミングレポート 2022」について紹介しています。

このレポートでは、2021年にUnityで制作されたゲーム数やUnityを利用するクリエイターの増加数、ゲーム収益(ゲーム内課金・広告)の急増、カジュアルゲームの収益率、マルチプラットフォームの普及などを取り扱っています。

全文はこちらで確認できます。

モバイルマルチプレイヤー入門:理想的な技術スタック

モバイルマルチプレイヤー入門:理想的な技術スタック | Unity Blog

この記事では、この数十年間のマルチプレイヤーゲームのニーズの変化と、Unityが考えるモバイル向けのマルチプレイヤーゲームに技術スタックの3つの柱である「Creation」・「Connection」・「Communication」とそれぞれのソリューションとしてNetcodeやゲーム性にあったマッチメイクの仕組みなどを紹介しています。

また、「2021年末のマルチプレイヤーゲームについて必要な機能に関する調査」から、マルチプレイヤーゲームのプレイヤー体験を向上させるために検討すべき項目や、マルチプレイヤーゲームを制作する上で開発を手助けするUnity Gaming Serviceのソリューションについても言及しています。

Game Backend を詳しく見てみよう

Game Backend を詳しく見てみよう | Unity Blog

この記事では、Unity Gaming Serviceの提供するサービスのうちゲームのバックエンドにカテゴリされるサービスを紹介しています。

アカウント認証サービスAuthenticationやプレイヤーデータ保存サービスCloud Save、ゲーム内の決済サービスEconomy、サーバレスなゲームロジックサービスCloud Codeについて、それぞれの概要やこのサービスが解決する課題、仕組みについてそれぞれ解説しています。

Unity の Game Backend ツールの 9 つのユースケース

Unity の Game Backend ツールの 9 つのユースケース | Unity Blog

この記事では、AuthenticationCloud SaveEconomyCloud Codeのユースケースをゲーム内でよくある事例を9つとりあげて、これらのサービスをどのように組み合わせることで解決できるかを解説しています。

Articles

Verlet Rope in Games

Verlet Rope in Games

位置ベースのベルレ法を用いて2D空間上でのロープの物理挙動を実装する方法を紹介しています。

ロープのノード表現と、位置ベースのベルレ法によるロープノード移動のシミュレーションとロープの長さを維持するためのコンストレイントの反復適用、衝突の実装、LineRendererを用いない独自のロープレンダリングについてそれぞれ解説しています。

VR でも利用できる URP Renderer Feature を用いたフェード処理の実装

VR でも利用できる URP Renderer Feature を用いたフェード処理の実装 - デニッキ!

Universal Render Pipeline(URP)のRenderer Featureをもちいて、画面全体のフェード処理を実装する方法について紹介しています。

ScriptableRenderPassScriptableRendererFeature を継承した独自のRender Featureの追加方法、実装したRender Featureの設定方法、ポストプロセス後の画面全体のバッファのハンドリング方法とフェードの実装方法などについて紹介しています。

How to Make Flappy Bird with Online Leaderboards

How to Make Flappy Bird with Online Leaderboards | LootLocker - build, ship & run your best games

Flappy Birdをフルスクラッチで実装し、lootlockerというBackend as a Service(BaaS)を用いてリーダーボードを実装する方法について紹介しています。

Creating Reusable Characters With Blender and Unity

Creating Reusable Characters With Blender and Unity | raywenderlich.com

この記事では、Blenderを用いてUnityのHumanoid Avatarと互換性のあるモデルを作成することでアニメーションを共有する方法について紹介しています。

Blenderを用いてUnityのHumanoidと互換性のあるリギングを行う方法と、fbxとしてエクスポートしたモデルをUnityに取り込み、Humanoid Avatarとして設定する方法を紹介しています。

そろそろShaderをやるパート62 アウトラインの表現

そろそろShaderをやるパート62 アウトラインの表現

モデルを2パス目で頂点を押し出して描画することでアウトラインを表現する方法についてその実装方法を紹介しています。

押し出しの方法についても、「法線方向」と「各頂点のローカル座標方向」の2つの方法で比較しています。


Yuichiro MUKAI
Yuichiro MUKAIGame & Web Programmer

シブヤで働くゲームプログラマー。C#をメインに書きます。

Twitter / Facebook