Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
Unity ネイティブプラグインの作成について
Tatsuhiko Yamamura
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
KLab Inc. / Tech
【Unity道場】VectorGraphicsで作る エモい表現
Unity Technologies Japan K.K.
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
GLSLによるシェーダーアートことはじめ
Yoichi Hirata
なぜなにリアルタイムレンダリング
Satoshi Kodaira
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
1
of
33
Top clipped slide
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Sep. 6, 2019
•
0 likes
3 likes
×
Be the first to like this
Show More
•
3,686 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Technology
CEDEC2019 CI/CDと連携したモバイル(Android)向けUnity製ゲームの自動プロファイリングシステムの構築方法
KLab Inc. / Tech
Follow
KLab Inc. / Tech
Advertisement
Advertisement
Advertisement
Recommended
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
Takehito Gondo
2.6K views
•
107 slides
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
33.6K views
•
79 slides
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
79.3K views
•
87 slides
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
Unity Technologies Japan K.K.
28K views
•
112 slides
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
SEGADevTech
17.3K views
•
81 slides
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
KLab Inc. / Tech
999 views
•
164 slides
More Related Content
Slideshows for you
(20)
Unity ネイティブプラグインの作成について
Tatsuhiko Yamamura
•
47.8K views
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
KLab Inc. / Tech
•
3.8K views
【Unity道場】VectorGraphicsで作る エモい表現
Unity Technologies Japan K.K.
•
12.1K views
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
•
23.4K views
GLSLによるシェーダーアートことはじめ
Yoichi Hirata
•
9.1K views
なぜなにリアルタイムレンダリング
Satoshi Kodaira
•
88.2K views
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
•
43.8K views
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
•
20.9K views
UE4でTranslucencyやUnlitに影を落としたい!
com044
•
20.6K views
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
エピック・ゲームズ・ジャパン Epic Games Japan
•
6.5K views
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
•
21.4K views
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
Takahito Tejima
•
35.2K views
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
•
58.8K views
猫でも分かるUE4のポストプロセスを使った演出・絵作り
エピック・ゲームズ・ジャパン Epic Games Japan
•
90.8K views
RENDERING 最適化「禍つヴァールハイト」
KLab Inc. / Tech
•
1.3K views
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
エピック・ゲームズ・ジャパン Epic Games Japan
•
25K views
60fpsアクションを実現する秘訣を伝授 基礎編
エピック・ゲームズ・ジャパン Epic Games Japan
•
26.6K views
UE4で実現できた理想のゲーム開発ワークフロー
historia_Inc
•
9.3K views
UE4 LODs for Optimization -Beginner-
com044
•
10.5K views
日本一詳しい人が教えるUE4
エピック・ゲームズ・ジャパン Epic Games Japan
•
37.2K views
Similar to Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
(20)
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
•
1.3K views
AbemaTV の課題と Demuxed 2019
Yusuke Goto
•
1.2K views
チーム開発の要はViewModelにある
Akira Hatsune
•
647 views
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
74th
•
186 views
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
Web Technology Corp.
•
7.8K views
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
SEGADevTech
•
4K views
DeNA流cocos2d xとの付き合い方
dena_study
•
18.1K views
ゲームエンジン導入セミナー【UDK編】
Junya "Jun" Shimoda
•
23.2K views
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
モノビット エンジン
•
5.9K views
Surface で 謎開発
インフラジスティックス・ジャパン株式会社
•
912 views
初心者向けデバイスドライバ講座 (2)
Study Group by SciencePark Corp.
•
460 views
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
Rakuten Group, Inc.
•
1.9K views
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
Yasuhiko Yamamoto
•
3.4K views
ケートリック製品ポートフォリオを一挙にご紹介
Mitsuru Katoh
•
985 views
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Toshiyuki Hirata
•
5K views
進化を続けるIBM Bluemix 最新情報(2015年3月)
Noriyuki Egi
•
723 views
ソニーのディープラーニングツールで簡単エッジコンピューティング
Ryohei Kamiya
•
2.4K views
FFRKを支えるWebアプリケーションフレームワークの技術
dena_study
•
12.2K views
LightSwitch で遊んでみた Rev. 2
Yoshitaka Seo
•
1.2K views
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
Kenji Fukumoto
•
7.1K views
Advertisement
More from KLab Inc. / Tech
(20)
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
KLab Inc. / Tech
•
48 views
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
KLab Inc. / Tech
•
57 views
他業界からゲーム業界へ転向したときの話
KLab Inc. / Tech
•
85 views
KLabのゲーム開発を支える開発環境
KLab Inc. / Tech
•
87 views
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
KLab Inc. / Tech
•
96 views
「リアルISUCON」としてのモバイルオンラインゲーム開発
KLab Inc. / Tech
•
55 views
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
•
1.7K views
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
KLab Inc. / Tech
•
185 views
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
KLab Inc. / Tech
•
229 views
KLabのチャットシステム インフラ変遷
KLab Inc. / Tech
•
194 views
Ganglia のUIにGrafanaを追加する話
KLab Inc. / Tech
•
281 views
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLab Inc. / Tech
•
251 views
属人化して詰まってた作業を自動化で楽しようとした話
KLab Inc. / Tech
•
347 views
見よう見まねでやってみる2D流体シミュレーション
KLab Inc. / Tech
•
656 views
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
KLab Inc. / Tech
•
208 views
VyOSで作るIPv4 Router/IPv6 Bridge
KLab Inc. / Tech
•
579 views
ワールド別のDBへの取得・更新に後から対応した話
KLab Inc. / Tech
•
127 views
運営型モバイルゲームの運用について
KLab Inc. / Tech
•
140 views
Adobe AIR で作る カジュアルゲーム開発
KLab Inc. / Tech
•
359 views
個人情報の保護となりすまし対策~KLabのゲーム内通貨の払戻のシステムの場合~
KLab Inc. / Tech
•
135 views
Recently uploaded
(20)
HTTPの仕組みについて
iPride Co., Ltd.
•
8 views
《杨百翰大学毕业证|学位证书校内仿真版本》
d520dasw12
•
2 views
統計学の攻略_統計的仮説検定の9パターン.pdf
akipii Oga
•
200 views
3Dプリンタって いいね
infinite_loop
•
56 views
JSTQB_テストマネジメントとレビュープロセス.pdf
akipii Oga
•
175 views
JSTQB_テストプロセスの概念モデル.pdf
akipii Oga
•
204 views
Wandb LLM Webinar May 30 2023 (配布用).pdf
Yuya Yamamoto
•
0 views
触感に関わる共感覚的表現と基本6感情の対応関係の検証
Matsushita Laboratory
•
14 views
社内ソフトスキルを考える
infinite_loop
•
84 views
Üslup ve tercüme.pdf
1Hmmtks
•
2 views
ネットワークパケットブローカー市場.pdf
HinaMiyazu
•
7 views
20230523_IoTLT_vol99_kitazaki_v1.pdf
Ayachika Kitazaki
•
110 views
OIDC(OpenID Connect)について解説③
iPride Co., Ltd.
•
0 views
Windows ChatGPT Bing AI.pptx
Atomu Hidaka
•
6 views
モバイル・クラウド・コンピューティング-データを如何に格納し、組み合わせ、情報として引き出すか
Masahiko Funaki
•
2 views
Forguncy製品概要.pptx
フォーガンシー
•
58 views
Kubernetes超入門
Takashi Suzuki
•
5 views
ChatGPT + LlamaIndex 0 .6 による チャットボット の実装
Takanari Tokuwa
•
46 views
【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
Deep Learning JP
•
34 views
【DL輪読会】大量API・ツールの扱いに特化したLLM
Deep Learning JP
•
53 views
Advertisement
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のための CI/CDと連携した 自動プロファイリングシステム KLab株式会社
発表者 塙 与志夫 上席執行役員 KLab株式会社 於保 俊 エンジニアリングマネージャー KLab株式会社 細田
翔 Unityエンジニア KLab株式会社
実機のプロファイリング 面倒じゃないですか?
課題:モバイルでの実機プロファイリングは大変 ● 端末ごとに性能も特徴もさまざま ● SoCごとに異なるプロファイラー ●
専門知識が必要 充分な量のプロファイリングができずに パフォーマンスの問題を見逃してしまう
解決策:継続的な自動プロファイリング ● CI/CDと連携した全自動の実機プロファイリング ● 非エンジニアでもダッシュボードから結果を見れる パフォーマンスの劣化を見逃さない! すぐにチューニングに着手できる!
本日のアジェンダ 1. 自動プロファイリングのための Unityアプリケーション側の実装 2. プロファイリングのAndroid実機での 自動実行システム 3.
ダッシュボードシステム
8 自動プロファイリングのための Unityアプリケーション側の実装
通常のプロファイリング方法 ● Unity標準のUnity Profilerを利用 ●
CPUの詳細な分析が可能(フレーム単位でのタイムライン表示など) Unity Profiler ウィンドウ
スクリプト経由でのプロファイリング開始と終了 ● Unity Profilerの通常の利用方法 ○
PCと端末をUSBケーブルで接続して、プロファイラからアタッチ ○ 手間がかかる & UI操作の自動化が難しい ● Unity ProfilerのAPIを利用 ○ スクリプト経由でバイナリログを端末内に保存できる ○ スタンドアローンで動作するので、PCとの接続も不要 Profiler.logFile = "mylog";// 保存ファイル名の指定 Profiler.SetAreaEnabled(ProfilerArea.Rendering, true);// プロファイリング項目の指定 Profiler.enableBinaryLog = true;// 詳細なバイナリログ形式で保存 Profiler.enabled = true;// プロファイリングを開始
プロファイリングデータの集計 ●Profiler Reader ○ バイナリログをCSVに変換・集計するツール ○
Unity Technologies Japanと開発 ○ https://github.com/unity3d-jp/ProfilerReader ○ 明日 9/5 (木) 13:30〜14:30『Unity2018/2019における最適化事情』 Profiler Reader バイナリログ CSV
Profiler Readerの活用方法 ● メインスレッドのメソッド単位の集計情報 ○
処理時間 ( avg / sum / min / max ) ○ 呼び出し回数 ○ コールスタック ●フレーム単位の情報 ○ Unityのメインスレッド全体 ms ○ Unityのレンダースレッド全体 ms ○ Unityの各Jobスレッド全体 ms ○ ドローコール数 ○ メモリ使用量 ● CPU負荷の高い メソッドの特定 ● 重たいフレームの特定 ● 原因のだいたいの把握
自動プレイ機能の実装 ● アプリを起動したら完全放置でゲームが進行 ○ プロファイリング対象のシーンに順番に遷移 ●
プロファイリングシステムへの成功・失敗の通知 ○ 成功:すべての計測シナリオが正常終了 ○ 失敗:例外が発生してアプリが進行不能 ○ 通知用のファイルを生成
14 プロファイリングの Android 実機での自動実行システム
● メインは Python
スクリプトで構成 ● 普通の Windows PC に端末を接続 ● Android 開発ツールなどを活用 ○ aapt (Android Asset Packaging Tool) ■ Bundle ID の apk パッケージからの抽出 ■ メインアクティビティ名の抽出 ○ adb (Android Debug Bridge) ■ apk の実端末へのインストール ■ ゲームアプリケーションの実行 ■ ファイル転送やクリーンアップ ○ Unity (Profiler Reader実行用) プロファイル自動実行システムの構成
プロファイル自動実行の流れ apk ダウンロード パッケージ名 などの抽出 実機インストール アプリ実行 終了ファイル ある? 結果抽出 変換 アップロード デバイス クリーンアップ Yes No
実機では頻繁に「エラー」が起きる 基本的には adb のエラー終了として起こる ●
「少し待ってリトライ」が一番有効 ○ エラー終了したらn回リトライして、それでだめならその回は失敗 ● 要所で adb サーバーを再起動 ○ 特に apk インストール失敗時に再起動すると「経験上」うまくいく率が高い ○ 逆に再起動しすぎても、うまくいかないこともある ● 機種・OS間の差異が大きく、厄介 ○ 進行ログもエラーメッセージも違う ○ 頑張ろうとせずに適当に あきらめが肝心 実機利用での難しさ(1) エラー処理
プロファイルをなるべく同じ環境でやりたい ● バックグラウンドプロセスなど ○ adb
shell am kill : プロセスの停止 ○ adb shell am kill-all : 全てのアプリケーションプロセスの停止 ● ストレージの管理 ○ adb shell pm clear : 特定パッケージのデータ削除 ● 冷却のために待ち時間をいれる ○ いれないと何もしてないのにどんどん結果が悪化する ○ さらにダメ押しでスマホクーラーを投入! 端末自体の再起動もやっていたが、 USB接続設定がリセットされたりするので、逆に不安定になる 実機利用での難しさ(2) 端末をクリーンに保つ
● 開発者モード ● スリープしない ○
USB接続中はスリープしない設定がある ● ファイル転送モード ○ 結果ファイルを転送できるように ● 音量 ○ すべてミュート ○ 夜中に謎の音が鳴り続けないように ● 画面輝度 ○ 最低に ○ 電力使わないように ○ 焼き付き防止? 実機利用での難しさ(3) 端末設定
21 ダッシュボードシステム
ダッシュボード画面
● マネージドサービスで構成すること ○ 管理者を立てるほどの規模ではないため ●
お値段そこそこであること ○ お財布の心配は少ない方がいい →GCPサービスと無料のBIツールの組み合わせで実現 ダッシュボードの要件
● Cloud Storage
+ Cloud Functions ○ ストレージ+サーバレスサービス ○ CSVをPythonスクリプトで処理、BigQueryに追記 ● BigQuery ○ 分析用途に向いたデータベース、非常に安価 ○ データを蓄積、ダッシュボード向けに整形 ● Googleデータポータル ○ 無料のBIツール(Googleさん太っ腹) ○ プロファイリング結果の可視化・情報共有 ダッシュボードの構成要素
● 直近のプロファイリン グ結果を表示 ● ドリルダウンリンクで 詳細ページに遷移 ダッシュボード画面
● カテゴリ別表示 ○ 実行時間上位 ○
予算超過率 ● メソッド別表示 ○ 実行時間上位 etc... 詳細画面
● 高負荷になるタイミングを可視化 ○ 性能改善の材料として 時系列グラフ
可視化の例
● カテゴリ分類をGoogleスプレッドシートで定義 ○ チームメンバーが自由に編集できる ○
ダッシュボードにすぐ反映される ● スプレッドシートはBigQueryテーブルとして扱える ○ 裏側の仕組みを知らなくても集計結果をカスタマイズできる BigQuery採用の意外なメリット
● 意図せずゲームが重くなることがあり、有用だった ○ Unityのマイナーバージョンアップ時 ○
性能と無関係なつもりの変更が実際は重かった場合 ● プロファイリング結果をメンバー内で共有できて便利 ○ 特に非エンジニアにデータを共有しやすい 運用してみてのエピソード
● Android実機による自動プロファイリングシステムを開発 ○ 実機プロファイリングのハードルを大幅に下げられた ○
チームメンバーと結果を共有しやすくなった ● 成果も得られた ○ ゲーム中のボトルネックの発見に役立った ○ 性能改善のイテレーションが速まった 結論
33 Thank you
Advertisement