Ingress: Dev Diary: Scanner Rendering Update
2024年12月11日近辺にリリースされたスキャナのバージョン2.156で、レンダリング(描画)まわりに大きな変更が加えられました。
それに伴い、IngressのTechnical ArtistのAlex Stamm氏による解説記事が掲載されました。
以下がソースです。
もし、存在したら以下のリンクが日本語版になりますが、執筆時にはありませんでした。
そこで、以下に私家訳をしておきます。
事後報告でしたが、訳したことを報告しておきました。
どうもありがとうございます!🙇
— Alex Stamm (@alexstamm) December 13, 2024
個人的にTechnical Artistという役職名を聞いたときに期待した職務内容と成果だと感じました。
不満もあるかと思いますが、まず改善されたところを褒めましょう。
そのうえで、文句ではなく、言い捨てるのではなく、建設的な提案をしていきましょう。
(以下、日本語訳)
開発日記: スキャナにおけるレンダリングのアップデート
筆者: アレックス
2024年12月11日
最新のスキャナのアップグレード内容
エージェントのみなさん。
私の名前はアレックスです。Ingress のテクニカルアーティストとして、エンジニアリング、アート、デザインのスキルを組み合わせる役割を担っています。私の専門分野はグラフィック関連ですが、美しいビジュアルを作ることだけではなく、スキャナの速度とパフォーマンスを最適化することに重点を置いています。
Ingress は Unity エンジン上で動作します。Unity を使用しているゲーム開発者であれば、ゲームエンジンの最新のグラフィック変更についてご存知かもしれません。この変更により、ゲームを Universal Render Pipeline (URP) を使うようにアップグレードする必要があります。スキャナバージョン 2.156.1 の最新アップデートでは、今後の Unity の要件に備えてグラフィックシステムをアップグレードすることになりましたが、このグラフィックまわりを変える機会を利用し、次のことに重点を置いて変更しました。
エージェントがスキャナを使う際のレスポンスを最適化
スキャナのパフォーマンスと安定性を向上
新しめのデバイスでの全体的なバッテリー使用量を削減
これらを実現するために、チームはスキャナ上のオブジェクトへの照明の当て方を更新してオーバーヘッドを削減しました。ドローンやエアロダインなどのエージェントアバターを含む、いくつかのアイテムを書き直す必要がありました。一部のアイテムは以前とは若干見た目が異なりますが、より多くのエージェントの、より多くのデバイスで、スピードアップできるように、意図的にこのような最適化を選択しました。
照明モデルに頼る代わりに、同様の外観を実現するために新しいシェーダーを作成しました。同様のレンダリング技術を異なる方法で使用した、別のゲームに関する、グラフィック愛好家にとって、おもしろいスレッドもあります。
グラフィックスのバグを修正すると内部的にはどのようになるのでしょうか?
「ピンクグレス」。ピンクがいっぱい。ピクセルに関して言えば、マテリアル、シェーダー、テクスチャ、アニメーションなどが画面上のピクセルの動作を制御します。参照が壊れると、すべてがピンクに変わります。
(画像は公式サイトを参照してください)
(URP アップグレード中のピンクグレスの写真 (非常におかしい))
さらに、グラフィックのラグは、グラフィック・プロセッシング・ユニット (GPU) がデバイスのフレームレートで受信フレームを処理できない場合に発生します。このタイプのラグは、Ingress アノマリ時など、エージェントのアクティビティが急増したときに発生する可能性があります。
グラフィックスのパフォーマンスを向上させるために実行できるテクニックはたくさんあります。以下はスキャナに取り入れられたいくつかの例です。
Machinaポータルでオブジェクトプールを使用してマップのパフォーマンスを向上させました。
上記のように照明モデルを削除しました。
レンダリングアセットを更新して、Ingress には必要ないものの Unity ではデフォルトで有効になっていることがある、影などを無効にしました。
後処理を大幅に削減しました。
後処理はオーバークロックから完全に削除しました。見た目への影響は最小限です。
これにより、一部の Android デバイスで発生している細いグリフラインの問題が修正されると良いのですが、もしスキャナをバージョン 2.156.1 に更新した後もこの問題が引き続き発生する場合は、スキャナ内でバグレポート (設定 > GO > チャット > ゲームプレイヘルプ > バグの報告) を作成し、スクリーンショットを添付してください。
また、スキャナの起動時間と多くのスキャナのアクションを高速化するために、特定のアニメーションを最適化、削減、削除しました。たとえば、Android および iOS デバイスの一部で 2.156.1 と以前のベンチマークとを比較すると、次のような改善が見られます。
スキャナアプリのコールドスタートからの平均起動時間は2.3秒短縮されました
ドローンの平均移動時間は1.0秒短縮されました
エージェントプロファイルの平均オープン時間は0.5秒短縮されました
ネイティブリフレッシュレート
ネイティブリフレッシュレートは、URP のデフォルトの標準です。フレームレートは 30 fps に固定されるのではなく、デバイスの自然なレートになります。これは良いことでしょうか、悪いことでしょうか?それは場合によります。
デバイスのネイティブリフレッシュレートでレンダリングすると、一般的にバッテリー寿命が延びます。たとえば、iPhone では、Unity と Metal (Apple の Graphics API) 間のグラフィックス呼び出しのオーバーヘッドを減らすために、ネイティブフレームレートをデフォルトに設定する方がよいでしょう。基本的に、Unity でフレームレートを 30fps に制限する余分な作業を行うのではなく、Metal でフレームレートをネイティブに処理できるようにして、Unity 呼び出しのオーバーヘッドを減らす必要があります。
これは一体何を意味するのでしょうか?
グラフィックエンジンをアップグレードしました。これは通常、ゲーム製品のライフサイクルの途中ではなく、最初に行われます。これは決して小さな取り組みではありません。これは、Ingress の将来に投資しているということであり、Ingress を長期的に存続させることになります。
バグはなくなるでしょうか?完璧を約束することはできません。実情を言うと、私たちは大規模な開発チームではなく、おそらく皆さんが思っているよりも小さいでしょう。しかし、このアップグレードによりスキャナがよりスムーズに動作し、みなさんの Ingress プレイがより良くなることを願っています。
それでは。
— アレックス