
「Unityモバイルゲームパフォーマンス最適化略譜」は、Unity モバイル ゲームの最適化に関するいくつかの基本的な議論から始まり、近年 Unity に基づいて開発されたモバイル ゲーム プロジェクトで最も一般的なパフォーマンスの問題のいくつかを例示および分析し、さらにUWA のパフォーマンステストツールを使用してこれらの問題を特定して解決する方法を示します。このコンテンツには、パフォーマンス最適化の基本的なロジック、UWA パフォーマンステストツール、および一般的なパフォーマンスの問題が含まれており、Unity 開発者により効率的な開発方法と実践的な経験を提供することを望んでいます。
本日は、5 つのサブセクションからなる第1部分を紹介したいと思います。
- プレイヤーから見たゲームのパフォーマンス
- 開発者が気にするゲームのパフォーマンス
- 問題の特定方法
- 問題を解決する方法
- パフォーマンスを継続的に監視する方法
序文
1.プレイヤーから見たゲームのパフォーマンス
ゲームをプレイしているときに、どのプレイヤーも同様の質問に遭遇します: しばらくプレイするとクラッシュするのはなぜですか?ゲームがとても遅いのはなぜですか?なぜ私のスマホは熱くなったのでしょうか?バッテリーの減りが早いのはなぜですか?
プレイヤーにとって、ゲーム自体のアートが優れているかどうか、ゲームプレイが面白いかどうかにもかかわらず、これらの質問が発生すると、ゲーム体験は自然に悪化し、必然的に粘着性の低下につながります。これは、すべてのゲーム開発者が見たくない結果と言えますね。
実を言うと、私たちが現在注力しているモバイルゲーム市場は、国内市場でのさまざまなハードウェア モデルのパフォーマンスに幅があり、プロジェクトが海外市場をサポートする場合、プロジェクトが負担しなければならないパフォーマンス プレッシャーは多くの場合、より大きくなります。そのため、さまざまなハードウェア デバイスを使用するプレイヤー、特にミッドエンドからローエンドのデバイスを介してゲーム プロジェクトにアクセスできるプレイヤーが、ゲーム コンテンツをスムーズに体験できるようにする方法が、私たちの主な目標の 1 つです。
2.開発者が気にするゲームのパフォーマンス
ゲーム プロジェクトの開発プロセスでは、小規模または経験の浅い開発チームの場合、新しいプロジェクトの中期および初期段階で、パフォーマンスの最適化を無視して機能の実装に全力を注ぐことがよくあるという現象がよく見られます。プロジェクトにはゲームの体験に影響を与える多数の深刻なパフォーマンスの問題がいっぱいであることが判明したのは、ゲームの中期および後期段階、またはテストの開始間際でさえありましたが、時間が迫っていて、どこから始めればいいのかわからなくなります。パフォーマンスの問題がゲーム プロジェクトの重要な生命線で、開発者は、プロジェクトが迂回を回避できるように、適切な最適化の意識を確立し、知識システムを最適化する必要があります。
プレイヤーの視点とは異なり、開発者の視点からは、主にメモリ、CPU、GPUの3つのカテゴリーに分けられるべきだとUWAは考えています。この記事の主な内容は、ために、これら 3 つのカテゴリの一般的で典型的な問題を例示して説明する形で、モバイル ゲームのパフォーマンス最適化の概要を形成することを目的としています。
次に、いくつかのパフォーマンスの問題が見つかったため、問題の特定と解決が最も重要な 2 つのステップになりました。
3.問題の特定
パフォーマンスの問題が特定された後の最初の主要な手順は、問題を特定することです。
たとえば、ゲーム プロジェクトが長時間実行されるとクラッシュしますが、これはキャッシュ戦略が適切に行われていないためか、または冗長性があり、メモリの継続的な増加によってクラッシュが発生するためでしょうか?それとも、アート リソースのメモリ制御が不十分なため、いくつかのより大きなリソースでメモリ全体を簡単に拡張したのでしょうか?
あるいは、ゲーム シーンが非常にスタックしており、フレーム レートが非常に低いことが判明したのは、同じ画面でレンダリングされたパッチと DrawCall の数が多すぎて、レンダリング モジュールに高い負荷がかかっているためでしょうか?それとも、ここの UI が複雑すぎて頻繁に変化されるため、更新に時間がかかるのでしょうか?
それとも、、スマホが驚くほど熱くなっているのは現在のシーンでの GPU の負荷が高すぎるためでしょうか?帯域幅、シェーダーの複雑さ、オーバードロー、後処理などは十分に制御されていませんか?現在のデバイスで行っているグレーディング戦略は適切ではありませんか?
これらは、際限なく発生する無数のパフォーマンスの問題のほんの一部です。より一般的な問題のいくつかについては、後で詳しく説明します。結論として、問題を特定する作業自体が課題です。
3.1 コンピュータ言語/グラフィックス/ゲームエンジンの知識
知識と経験は、プロジェクトのパフォーマンスを最適化する際に開発者にとって間違いなく最も価値のある武器であり、継続的な学習と更新は、すべてのプログラマーが自分自身を武装させるためのプロセスでもあります。完璧で完全な知識は、問題を特定するのに役立つだけでなく、それらを解決するのにも役立ちます。これらの知識は最適化を開始するための重要な前提条件ですよね。
さまざまなツールのソース コードとドキュメントの閲覧、ツールの更新の追跡、すごい人が執筆した書籍の閲覧、さまざまなテクニカル フォーラムやブログの閲覧などに加えて、UWA ブログでは多くの質の高いコンテンツを見つけることができます。
UWAアカデミー(中国語注意):一部開発ツールの紹介と使い方からエンジンモジュールの仕組みや原理の詳細解説、最新のモバイルゲーム技術の実践からブティックプロジェクトの事例解説まで、質の高いコースを随時更新中などまた、業界で長年の経験を持つ多くの業界リーダーや有名ゲーム会社のパートナーを招待し、幅広い範囲と高品質をカバーする記事を執筆しました。UWA Technology が毎年主催するUWA DAY ゲーム開発者コンファレンス(中国語注意)の優れたコンテンツもあります。
UWA Q&A(中国語注意): 開発者がより良い答えを見つけられるように支援します。ゲーム開発者が技術的な問題を日常的にやり取りするための優れたプラットフォームです。ここでは、ゲーム制作のあらゆる側面について話し合ったり、質問に答えたりできます。回り道を回避し、現場で実証済みの開発経験を得るために最も直接的な技術交換を通じて、問題の特定と解決のプロセスがはるかに簡単になります。
UWA オープン ソース ライブラリ(中国語注意): 開発者がより優れたソリューションを見つけるのを支援します。さまざまなソースからのオープン ソース プロジェクトが継続的に更新および統合され、翻訳が完了し、分類が明確になり、写真とテキストが豊富になり、開発者がオープン ソース リソースを検索、発見、取得するためのより便利なチャネルが提供されます。
UWA ブログ: UWA が選んださまざまな技術記事が含まれており、UWAアカデミーに質の高いコンテンツを更新するよう促し、Q&A の質の高い質問を統合し、UWA 製品とその更新、その他の UWA コミュニティのトレンドを紹介しています。
3.2 各種補助ツール
大工がよい仕事をしようとすれば、まず道具をよく整えておかなければならない。ツールを使用して直接的で正確なパフォーマンス データを取得すると、パフォーマンスのボトルネックをより直感的に反映できるため、半分の労力で乗数効果を達成できます。
業界の発展と成熟に伴い、主要なエンジン、IDE、およびハードウェア メーカーは独自のパフォーマンス分析ツールをリリースおよび更新しており、多くの開発者またはチームは、独自のプロジェクトに従って独自のパフォーマンス監視プラグインを開発することを好みます。
エンジンに関する限り、Unity Profiler は多くの開発者が使用しているツールであり、CPU/レンダリング/メモリなどのさまざまなモジュールのリアルタイムの消費パラメーターを記録および表示できます。 Unreal 4 では、同様の機能が既に利用可能です。
IDE に関しては、Windows、MAC OS/iOS、および Andriod プラットフォームのすべてに、Visual Studio のパフォーマンス プロファイラー、XCode の Instruments、Android Studio の Profiler などの適切なツールがあります。
ハードウェア的には、SnapDragon Profiler、XCode Metal Frame Capture、Mali Graphics Debugger など、他にも種類があるが、一々くどくど述べません。
まとめすると、開発者の習熟度、さまざまなハードウェア プラットフォームの互換性、ツール機能の適用範囲など様々な要素に応じて、適切なパフォーマンス最適化ツールの選択はめんどくさくなります。
3.3 UWA ツール
では、使いやすく、強力な互換性を持ち、包括的な機能を備えたパフォーマンス最適化ツールはありますか?
もちろんあります。
UWA GOT Online ツールは、UWA が提供する SDK を介してテスト プロジェクトにすばやく統合できます. 実機でのテスト プロセスが完了した後、データのアップロードと分析は非常に短い時間で完了し、ビジュアルチャートのシリーズを自動的に生成できます。同時に、UWA の豊富な最適化経験と評定用の巨大なデータベースにも基づいており、各パフォーマンス モジュールに応じてターゲットを絞った分析の提案とパフォーマンス パラメータの変化トレンドを提供します。
それだけでなく、UWA は GPM、GOT、実機テスト サービス、オンライン アセットバンドル検出、ローカル リソース検出、GPU 特別レポート、詳細な最適化などのツールやサービスも提供し、さまざまな次元から開発者の最適化ニーズに応えます。
4.問題の解決方法
パフォーマンスにおける 2 番目の大きなステップは、問題解決です。知識と経験、および上記のツールのサポートにより、プロジェクトがより複雑になり、後期になるほど、最適化の問題の長いリストに直面することになります。限られた時間の中でこのリストを適切に計画し、短縮することが次の課題です。
4.1 作業優先度の最適化
特定の最適化作業を始める前に、適切な計画を立てることは全体的な時間を大幅に節約できます。
計画作業の最初のポイントは、問題の主要な矛盾を把握することです。長い最適化リストでは、各項目を順番に最適化することは多くの場合非現実的です。この時点で、リストを再編成し、優先順位を付けて並べ替え、費用対効果の高い問題を最適化するためにより多くの投資を行う必要があります。
優先度の判断について、UWA は 2 つの主要な基準点があると考えています: 第一に、重要性です。現在のシーンのパフォーマンスへのプレッシャーが他の要因よりもはるかに大きな影響を与える問題は、明らかに主な矛盾です。問題を修正しない場合、正常のゲーム体験を維持することは困難です。それに対して、まずために、より多くの人力や時間を投資して集中して問題を解決する必要があります。第二に、操作の易さです。パフォーマンスへのプレッシャーがそんなに大きくないが、コストが低くて解決しやすい問題ならすぐに修正すべきです。例えば、エンジン設定でたった一つのスイッチをオフにするだけ済むのような問題の場合、すぐに直すべきだと思われます。
4.2 性能と効果のトレードオフ
2 つ目のポイントはトレードオフで、リソースとレンダリングの最適化はゲームのパフォーマンスに影響を与えることがよくあります。そのため、プログラマーは多くの場合、プランナーやアーティストの同僚とのコミュニケーションを強化して、2 つの間のバランスを見つける必要があります。このバランスは動的なバランスであり、実際の状況に合わせて運用する必要があります。例えば、『Game for Peace』ゲームは頻繁な画面切り替えとスムーズな戦闘操作が必要なため、パフォーマンス要件は低くてもかまいません。しかし、育成ゲームは精巧なキャラクターを売りにし、いくつかのパフォーマンスを犠牲にしてモデルやアニメーションは非常に繊細である必要があります。同じゲームでも、カットシーンやキャラクター表示インターフェースでは表現に集中し、戦闘シーンならパフォーマンスに集中すべきです。要するに、特定の問題に対して特定の分析が必要です。
一般に、ゲーム プロジェクトの最適化の最終的な目標は、プレーヤーのハードウェア上でスムーズに実行することであり、このためにパフォーマンスへの影響の大部分を放棄することは、ほとんどの開発チームの実際の選択でもあります。
4.3 格付け戦略と基準設定
第三に、各タイプのスマホで上記のバランスを達成することが、私たちのグレーディング戦略です。ハイエンド モデルやフラッグシップ モデルでは後処理をオンにして高解像度を使用できますが、ミッド・ローエンドのモデルでは異なる標準セットを使用します。
グレーディング戦略を策定するには、プロジェクトの種類に応じて調整する必要もあります。より詳細で正確なグレーディングについては、プロジェクトのターゲット市場のハードウェア モデルと類似ゲームの経験も参照する必要があります。詳細については、記事「モバイル デバイス コンピューティングに基づく UWA パフォーマンス標準システム」(中国語注意)を参照してください。
さらに、開発チームは、開発プロセス全体を管理および制約するための一連の詳細で合理的な基準を指定することもできれば望ましいです。最も一般的なのは、アート リソースの標準を指定することです。これにより、暴走するメモリの問題を大幅に回避できます。また、Unityにはコールバック関数のリソースインポート時の正規化設定も用意されており、詳しくはUWA Academyの関連講座「Unity Resources for Standardizationの自動化の実践」(中国語注意)も参照してください。
4.4 UWA からの提案
計画が完了した後、具体的な最適化作業が行われます。これは退屈な作業であり、忍耐が必要です。UWA はその過程で喜んでお手伝いします。
UWA コミュニティで方法を探すか、UWA ツールの自動レポートで解決策を見つけることができます。また、UWA サポートに連絡して、実機テスト レポートに関する 1 対 1 の説明サービスや、さらに詳細な最適化サービスを提供することもできます。 UWA のエンジン技術チームは、ゲーム プロジェクトのより詳細な診断と提案を行います。
5.パフォーマンスを継続的に監視する方法
パフォーマンス最適化の最初の 2 つのステップを実行した後、多くの開発チームは、パフォーマンスを継続的に監視するステップである 3 番目のステップを希望しています。この目的のために、一部のチームは専用のエンジン オプティマイザーを持ち、独自の DevOps ツールを開発しようとしています。これは、ゲーム開発の「工業化」の流れの表れであると考えています。
5.1 ゲーム研究開発の工業化
中国での高品質なゲームの需要が年々高まる中、プロジェクト開発の「工業化」に対するゲーム開発チームの要求も高まっています。 UWA の見解では、ゲーム開発の「工業化」は現在、標準化、正規化、専門化、自動化、およびカスタマイズの 5 つの次元に分けることができます。過去 2021 年に、UWA は上記の側面で多くの作業を行い、多くの経験を蓄積してきました。
2022年、UWA Technologyが主催するゲーム開発をテーマにした第6回UWA DAY Technology Conferenceで、UWAは「ゲーム開発の工業化を実践する」というテーマに固執し、業界の開発者を率いて優れた開発理念と実践的な経験をを味わいながら、業界パートナーと協力して、オープンでウィンウィンの技術交換エコシステムを構築します。
この背景に、UWA は UWA Pipeline 2.0 バージョンをリリースしました。これは、ゲーム開発チーム向けのローカル コラボレーション プラットフォームであり、ゲーム開発チーム専用の DevOps 開発 デリバリー パイプラインを構築することを目的としています。
5.2 UWA パイプライン
UWA パイプラインには主に次のものが含まれます。
専用の DevOps 開発 デリバリー パイプライン
プライベート クラウド実機リモート デバッグ
自動テストを視覚的に構成する
Pipeline で UWA サービスをすばやく作成する
リモートビルドのサポート
5 つの機能は、ゲーム専用に設計された DevOps 開発 および配信パイプラインを提供し、さまざまな UWA ツールとサービスを統合して、構築と操作を簡単にします。詳細については、以下をクリックしてください。
「UWAパイプラインの活用と自動化パイプラインの構築を詳しく解説」
この記事の内容はここで紹介されています. より多くのコンテンツについては、UWAアカデミーにアクセスして読むことができます。このコースでは、現在のゲーム プロジェクトでよく発生するパフォーマンスの問題について、メモリ、CPU、GPU の 3 つの側面から説明します。
UWA公式サイト:https://jp.uwa4d.com
UWA公式ブログ:https://blog.jp.uwa4d.com
UWA公式Q&Aコミュニティ(中国語注意):https://answer.uwa4d.com
これも興味あるかも
-
原理から応用まで ゲームでの動的解像度
January 4, 2023 -
Unityゲームの使用メモリを最適化しよう
December 21, 2022 -
ASTC テクスチャ圧縮形式の紹介
December 14, 2022