Unityで作ったゲームを最適化する前段階として、パフォーマンスを観測する流れや、どういった項目を見ればよいのかを紹介します。 【進行スケジュール】 ・ご挨拶とゲスト紹介 ・本編 ・終わり 担当:山村達彦(エバンジェリスト) ゲスト:黒河優介(ディベロッパーリレーションエンジニア)
![パフォーマンスの計測 再入門 〜Unity 2020版〜 | Unity Learning Materials](https://cdn-ak-scissors.b.st-hatena.com/image/square/1ca73c69ae34f3937bb065de2cbcdb2580a9aa73/height=288;version=1;width=512/https%3A%2F%2Fi.ytimg.com%2Fvi%2FUZ2sLiAM0oE%2Fsddefault.jpg)
UnityでUIを作ると言えば、まずはUnityEngine.UIです。 中身のことを考える必要もなく、ドカドカとImageやTextを置けば 動くので大変有り難いわけですが、不意に猛烈に処理が遅くなることがあります。 本記事では、たまたま見つけた現象と、そこから疑問を持って UnityEngine.UIの処理速度についていろいろ調べてみたことを、 技術部平山が書いてみます。 お急ぎの方のために結論を箇条書きにしておきましょう。 Graphic.color、RectTransform.sizeDelta、Text.textをいじると遅い 動かすだけでは大して遅くないが、動かさないよりは遅い リッチテキストは遅い 気になりましたら以下をどうぞ。 なお、Unityのバージョンは2017.4.8f1です。2018では改善している、 ということも多々ありそうですが、そのへんはご容赦ください。 UI
CTOの河合(@neuecc)です。常駐メモリは一ミリでも削りたい……!と思いつつも、それなりに富豪に使ってしまっていて削るのに四苦八苦な日々ですが、削れる箇所はテクスチャなどリソース系だけではない。C#側のマネージドなリソースもまた、それなりに確保しているので、削ることは可能なのだ……!というお話です。 ものすごいメモリプロファイラ(PA_ResourceTracker)を使う まぁ、なにはともあれプロファイリングです。メモリプロファイラで見てみましょう。実際の黒騎士と白の魔王の開発ビルドに流してみると うーん、なかなか立派なString確保量。そして大量の「通常攻撃」という同一文字列。スクリーンショットからは削ってしまってますが、右側には誰が参照しているかがわかる表示もついているので、犯人はひと目で分かり、これは、マスタデータに起因するものでした。独自開発のインメモリデータベース内にオ
スマホゲーム(Android版)を作成した時に行なった軽量化の方法です。 アプリサイズの軽量化(容量削減)と処理速度の軽量化(高速化)があるけど、ごっちゃに書いてます。とりあえず忘れないためのメモとして。 Unity5.3.xです。 指標●アプリサイズ確認方法(Windows) C:\Users\(username)\AppData\Local\Unity\Editor\Editor.log ビルドすると使用ファイル1つ1つのサイズまで記録される。使ってないアセットや画像が入ってないかもチェック。 ●実行速度など確認方法 デバッグ実行中にエディターのGameタブにあるStatsをクリック。ここに表示されるFPSなどで速度をチェック。あとSetPassを減らすのが高速化への道。マテリアルをまとめると減るらしい。 1.スカイボックスのサイズ縮小使用したスカイボックスがモバイル用ではなかったので
UniRx 5.3.0をリリースしました!今回のアップデートは、内部的な最適化、です。最適化は、もうそろそろあんまやるところ残ってないよね、なんて思ってたんですが、じっくり考えるとそんなことなく割とあったので埋めました。それが表題のコルーチンの省メモリと高速化です。使い方次第ではありますが、場合によっては今回のアップデートでものすごく恩恵に授かる人もいればそこそこの人もいるかもです。ともあれ基本的に内部的に変更してるだけなので、入れるだけでそれなりに高速化したりする可能性がそれなりにあります。 GitHub/UniRx AssetStore/UniRx 前回が2月だったので3ヶ月ぶりですね。あまりオペレータ追加がないので、次はオペレータ追加に集中したい気もする。なんか優先的に欲しいのあればリクエストもどうぞ(Observable.Windowとかいい加減そろそろ入れろよって話なんですが)
[CEDEC 2016]「デレステ」のグラフィックスは多種多様なスマホで60fpsの実現を目指した。開発陣のこだわりが見えた講演レポート ライター:米田 聡 CEDEC 2016では,アイドルマスターシリーズに関するセッションがいくつか行われた。ネット配信が行われたものなどは,多くのファンが試聴したそうで,人気シリーズらしい関心の高さが窺える。 本稿ではシリーズ関連セッションから,最終日の2016年8月26日に行われた「アイドルマスター シンデレラガールズ スターライトステージ」(iOS / Android,以下 デレステ)の技術に関するセッションである,「アイドルマスターシンデレラガールズ スターライトステージ 制作事例・テクニカル編 − 多種多様なスマートフォンで5人のアイドルが躍動するライブの舞台裏 (60fpsリズムゲームの開発手法) −」の概要をレポートしよう。 タイトルどおり,
はじめに 土日は久しぶりに一般参加者としてOcufesに参加してきました。そのため出展側で参加するいつものOcuFesよりも多く他の方のアプリを体験することができました。盛況だったので残念ながら全てのコンテンツを体験することはできませんでしたが、酔い対策もフレームレートも十分なコンテンツ、スマートフォンなので時々フレームレートが落ちるが許容範囲なコンテンツ、このご時世にOculus ReadyどころかGPUを搭載していないノートで展示しているコンテンツなど、色々体験しましたが、一つ気になったのがフレームレートは足りているのにカクカクするコンテンツです。「フレームレートが足りているのにカクカクするってどういうこっちゃ」と思われる方が多いと思いますので、以下で解説していきます。 描画のフレームレートと物理のフレームレート UnityのMonoBehaviourにはUpdate(LateUpda
CPUプロファイラに関する内容の後編です。 パフォーマンスの問題を解決する GCを減らす GCの発生要因を減らす コルーチンとGC GCの負荷を減らす オーバーヘッドとは何ぞや 実機で動作するアプリのパフォーマンス検証 出力したアプリを計測するメリット 実機で動作するアプリにプロファイラを繋ぐ 実機にてプロファイル結果を計測して取得する 参考 関連 パフォーマンスの問題を解決する パフォーマンスの問題はケースバイケースです。銀の弾丸が無い以上、実際にやってみて効果を確認する以外には無い感じであはあります。 また、一つの事柄に注目しすぎるのも問題です。例えばAnimatorはAnimationを比較するとAnimatorのほうが若干負荷が高いですが、SkinedMeshRendererの変形コストも加算するとAnimatorの方が負荷が低かったりします。 今回はそういった細々とした内容ではな
プロファイラに関する記事を書く過程で、パフォーマンスに関して良い感じの記述があったので、メモ。 support.unity3d.com Tips FPSはCPUとGPUの使用内容によって決まる CPU:物理演算・ゲームのコード・スキニング(GPU skiningでない場合。モバイルはNEONで最適化)、パーティクル、Raycasting(レンズフレア等に使用)等が問題となる GPU:フィルレート、シェーダー、ドローコール、イメージエフェクト等が問題となる 使用してないコールバック(StartやAwake)は削除しておく。 物理演算するオブジェクトの数や計算回数はできるだけ減らす。 fixedTimeStepの値を減らして、呼出回数を減らす。標準設定では50FPS想定なので50FPSが不要な場合。(60FPS想定なら上げないとガクガクになる) 静的なコライダー(rigidbodyの無い奴全般
ゲームを作っているうちに、何か重い的な事もあるかもしれません。そんな時、プロファイラを使用して重い部分を発見・改善する必要があります。 Unityの標準プロファイラはXcodeのInstrumentsよりも精度で劣りますが、サクっと確認する上では結構使い勝手の良い機能です。あとWindowsでも動きます。 今回はこのプロファイラを使用して、パフォーマンスのボトルネックを探す方法についてメモします。今回は「追う方法」についてです。 パフォーマンスの現状を知る CPU負荷の全体像を知る フレーム落ちするような処理の理由を知る 処理に時間がかかっている所を探す DeepProfileとProfiler.BeginSampleの使い分け Deep Profile Profile.BeginSample/EndSample 関連 パフォーマンスの現状を知る まずは現状のパフォーマンスを把握する所から
Oculus Rift用に開発した「DINOTOWN」というコンテンツがあります。 街中を恐竜が歩き回っており、ユーザーはOculus Riftを装着してその街中を歩き回る体験できるというコンテンツになっておりますが、Oculus Riftで開発したこのコンテンツを「スマホでも体験できるように」という無謀な遣り甲斐のある!企画があがりました。 Oculus RiftはもちろんデスクトップPCで動く事を想定してコンテンツを制作していたため、スマホ版へ移植するにあたってはいくつか問題点が浮上しましたが、その中でも「高速化」ということが一番の課題でした。 DrawCallを極力減らしスマホ版でもヌルヌル動くコンテンツを目指し色々試行錯誤しながら行った事をご紹介いたします。 まずはじめに… 何も考えずにAndroidやiOSにプラットフォームを切り替えてビルド メモリ不足で起動しないかも、と懸念し
追記:2015年11月27日 本記事の旧タイトルは「Unity 5 Proの新機能FrameDebuggerでグラフィックパフォーマンスを改善する」でしたが、これは本記事がUnity 5リリース前に書かれたためで、Unity 5正式版は無料版PersonalでCloud、Team Licenseなどのアドオンを除くエディタ上の全機能が使用可能になったため、本記事から「Unity 5 Pro」の記述を取り除きました。 Unityアプリのパフォーマンス最適化 UnityはMonoを採用しているため、C++やObjective-Cのようにネイティブのバイナリコードが出力されるわけではなくMono Virtual Machineで動作する中間言語が出力されそれを読み込んでアプリを実行しています。(iOSでは規約のためネイティブに事前コンパイルされています) と言っても現在ではCPUの性能が向上し、
最適化というか、改善する話です。 モバイル向けに作った時に妙に遅かった場合、この辺りの要因が絡んでいるケースが多い印象です。この辺りは作る際に確認しながら作ると、後々痛みが少なくて良いかなと思います。 目次 目次 プロファイラで確認する エディタ上で動かすプロファイラの注意点 メソッド毎の負荷について DrawMeshを抑える バッチングされない謎の理由 バッチングしやすくする為には フィルレートに気をつける よくあるフィルレートで死ぬパターン フィルレート対策 uGUIにおけるフィルレート対策 Unity 2Dにおけるフィルレート対策 解像度を下げる ゲーム画面は低解像度、UIは高解像度 バッチについて注意すべき事 フォントの扱いについて テクスチャ更新時のスパイク 2つの対策 UIを動かす(変形させる)コストについて 物理演算について その他… VSYNCについて Tweenとか Pi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く