Submit Search
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
3 likes
4,108 views
K
KLab Inc. / Tech
CEDEC2019 CI/CDと連携したモバイル(Android)向けUnity製ゲームの自動プロファイリングシステムの構築方法
Technology
Read more
1 of 33
Download now
Downloaded 13 times
1
2
3
4
5
6
7
8
Most read
9
10
Most read
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
More Related Content
PPTX
Photonのサービス選択の勘どころ
GMO GlobalSign Holdings K.K.
PDF
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
Toshiyasu Miyabe
PPTX
なぜなにリアルタイムレンダリング
Satoshi Kodaira
PDF
60fpsアクションを実現する秘訣を伝授 解析編
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4でマルチプレイヤーゲームを作ろう
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
RENDERING 最適化「禍つヴァールハイト」
KLab Inc. / Tech
PDF
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
PDF
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
KLab Inc. / Tech
Photonのサービス選択の勘どころ
GMO GlobalSign Holdings K.K.
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
Toshiyasu Miyabe
なぜなにリアルタイムレンダリング
Satoshi Kodaira
60fpsアクションを実現する秘訣を伝授 解析編
エピック・ゲームズ・ジャパン Epic Games Japan
UE4でマルチプレイヤーゲームを作ろう
エピック・ゲームズ・ジャパン Epic Games Japan
RENDERING 最適化「禍つヴァールハイト」
KLab Inc. / Tech
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
KLab Inc. / Tech
What's hot
(20)
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
PDF
UniRx完全に理解した
torisoup
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
Naoya Kishimoto
PDF
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
PDF
[UE4]自動テストでもっと楽したい!
com044
PDF
ゲームの仕様書を書こうまとめ
Sugimoto Chizuru
PDF
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
PDF
インタフェース完全に理解した
torisoup
PPTX
大規模ゲーム開発における build 高速化と安定化
DeNA
PDF
【Unity】 Behavior TreeでAIを作る
torisoup
PDF
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
ゲーム開発者のための C++11/C++14
Ryo Suzuki
PDF
Unityと.NET
AimingStudy
PPTX
three.jsを「遅い」と思わせないデータの扱い方
jey en
PPTX
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
PDF
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
PDF
トリコの動かし方
株式会社ジェンデザイン
PDF
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
PDF
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
PDF
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
UniRx完全に理解した
torisoup
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
Naoya Kishimoto
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
[UE4]自動テストでもっと楽したい!
com044
ゲームの仕様書を書こうまとめ
Sugimoto Chizuru
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
インタフェース完全に理解した
torisoup
大規模ゲーム開発における build 高速化と安定化
DeNA
【Unity】 Behavior TreeでAIを作る
torisoup
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
エピック・ゲームズ・ジャパン Epic Games Japan
ゲーム開発者のための C++11/C++14
Ryo Suzuki
Unityと.NET
AimingStudy
three.jsを「遅い」と思わせないデータの扱い方
jey en
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
トリコの動かし方
株式会社ジェンデザイン
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
Ad
More from KLab Inc. / Tech
(20)
PDF
【公開用】モバイルオンラインゲーム開発を支える早く、安く、使いやすいサーバインフラ構築
KLab Inc. / Tech
PDF
モバイルオンラインゲームのアプリ外課金の導入と運用方法について
KLab Inc. / Tech
PDF
デバイスファーム 「AirLab」 による 自動QAテストの実績と機械学習が拓く次世代QAの可能性
KLab Inc. / Tech
PDF
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
KLab Inc. / Tech
PDF
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
KLab Inc. / Tech
PDF
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
KLab Inc. / Tech
PDF
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
KLab Inc. / Tech
PDF
生成AIが切り拓く新しいゲームの創り方・遊び方
KLab Inc. / Tech
PDF
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
KLab Inc. / Tech
PDF
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
KLab Inc. / Tech
PDF
他業界からゲーム業界へ転向したときの話
KLab Inc. / Tech
PDF
KLabのゲーム開発を支える開発環境
KLab Inc. / Tech
PDF
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
KLab Inc. / Tech
PDF
「リアルISUCON」としてのモバイルオンラインゲーム開発
KLab Inc. / Tech
PDF
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
KLab Inc. / Tech
PDF
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
KLab Inc. / Tech
PPTX
KLabのチャットシステム インフラ変遷
KLab Inc. / Tech
PPTX
Ganglia のUIにGrafanaを追加する話
KLab Inc. / Tech
PPTX
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLab Inc. / Tech
PPTX
属人化して詰まってた作業を自動化で楽しようとした話
KLab Inc. / Tech
【公開用】モバイルオンラインゲーム開発を支える早く、安く、使いやすいサーバインフラ構築
KLab Inc. / Tech
モバイルオンラインゲームのアプリ外課金の導入と運用方法について
KLab Inc. / Tech
デバイスファーム 「AirLab」 による 自動QAテストの実績と機械学習が拓く次世代QAの可能性
KLab Inc. / Tech
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
KLab Inc. / Tech
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
KLab Inc. / Tech
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
KLab Inc. / Tech
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
KLab Inc. / Tech
生成AIが切り拓く新しいゲームの創り方・遊び方
KLab Inc. / Tech
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
KLab Inc. / Tech
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
KLab Inc. / Tech
他業界からゲーム業界へ転向したときの話
KLab Inc. / Tech
KLabのゲーム開発を支える開発環境
KLab Inc. / Tech
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
KLab Inc. / Tech
「リアルISUCON」としてのモバイルオンラインゲーム開発
KLab Inc. / Tech
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
KLab Inc. / Tech
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
KLab Inc. / Tech
KLabのチャットシステム インフラ変遷
KLab Inc. / Tech
Ganglia のUIにGrafanaを追加する話
KLab Inc. / Tech
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLab Inc. / Tech
属人化して詰まってた作業を自動化で楽しようとした話
KLab Inc. / Tech
Ad
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
1.
Android向けUnity製ゲーム最適化のための CI/CDと連携した 自動プロファイリングシステム KLab株式会社
2.
発表者 塙 与志夫 上席執行役員 KLab株式会社 於保 俊 エンジニアリングマネージャー KLab株式会社 細田
翔 Unityエンジニア KLab株式会社
3.
実機のプロファイリング 面倒じゃないですか?
4.
課題:モバイルでの実機プロファイリングは大変 ● 端末ごとに性能も特徴もさまざま ● SoCごとに異なるプロファイラー ●
専門知識が必要 充分な量のプロファイリングができずに パフォーマンスの問題を見逃してしまう
5.
解決策:継続的な自動プロファイリング ● CI/CDと連携した全自動の実機プロファイリング ● 非エンジニアでもダッシュボードから結果を見れる パフォーマンスの劣化を見逃さない! すぐにチューニングに着手できる!
7.
本日のアジェンダ 1. 自動プロファイリングのための Unityアプリケーション側の実装 2. プロファイリングのAndroid実機での 自動実行システム 3.
ダッシュボードシステム
8.
8 自動プロファイリングのための Unityアプリケーション側の実装
9.
通常のプロファイリング方法 ● Unity標準のUnity Profilerを利用 ●
CPUの詳細な分析が可能(フレーム単位でのタイムライン表示など) Unity Profiler ウィンドウ
10.
スクリプト経由でのプロファイリング開始と終了 ● Unity Profilerの通常の利用方法 ○
PCと端末をUSBケーブルで接続して、プロファイラからアタッチ ○ 手間がかかる & UI操作の自動化が難しい ● Unity ProfilerのAPIを利用 ○ スクリプト経由でバイナリログを端末内に保存できる ○ スタンドアローンで動作するので、PCとの接続も不要 Profiler.logFile = "mylog";// 保存ファイル名の指定 Profiler.SetAreaEnabled(ProfilerArea.Rendering, true);// プロファイリング項目の指定 Profiler.enableBinaryLog = true;// 詳細なバイナリログ形式で保存 Profiler.enabled = true;// プロファイリングを開始
11.
プロファイリングデータの集計 ●Profiler Reader ○ バイナリログをCSVに変換・集計するツール ○
Unity Technologies Japanと開発 ○ https://github.com/unity3d-jp/ProfilerReader ○ 明日 9/5 (木) 13:30〜14:30『Unity2018/2019における最適化事情』 Profiler Reader バイナリログ CSV
12.
Profiler Readerの活用方法 ● メインスレッドのメソッド単位の集計情報 ○
処理時間 ( avg / sum / min / max ) ○ 呼び出し回数 ○ コールスタック ●フレーム単位の情報 ○ Unityのメインスレッド全体 ms ○ Unityのレンダースレッド全体 ms ○ Unityの各Jobスレッド全体 ms ○ ドローコール数 ○ メモリ使用量 ● CPU負荷の高い メソッドの特定 ● 重たいフレームの特定 ● 原因のだいたいの把握
13.
自動プレイ機能の実装 ● アプリを起動したら完全放置でゲームが進行 ○ プロファイリング対象のシーンに順番に遷移 ●
プロファイリングシステムへの成功・失敗の通知 ○ 成功:すべての計測シナリオが正常終了 ○ 失敗:例外が発生してアプリが進行不能 ○ 通知用のファイルを生成
14.
14 プロファイリングの Android 実機での自動実行システム
16.
● メインは Python
スクリプトで構成 ● 普通の Windows PC に端末を接続 ● Android 開発ツールなどを活用 ○ aapt (Android Asset Packaging Tool) ■ Bundle ID の apk パッケージからの抽出 ■ メインアクティビティ名の抽出 ○ adb (Android Debug Bridge) ■ apk の実端末へのインストール ■ ゲームアプリケーションの実行 ■ ファイル転送やクリーンアップ ○ Unity (Profiler Reader実行用) プロファイル自動実行システムの構成
17.
プロファイル自動実行の流れ apk ダウンロード パッケージ名 などの抽出 実機インストール アプリ実行 終了ファイル ある? 結果抽出 変換 アップロード デバイス クリーンアップ Yes No
18.
実機では頻繁に「エラー」が起きる 基本的には adb のエラー終了として起こる ●
「少し待ってリトライ」が一番有効 ○ エラー終了したらn回リトライして、それでだめならその回は失敗 ● 要所で adb サーバーを再起動 ○ 特に apk インストール失敗時に再起動すると「経験上」うまくいく率が高い ○ 逆に再起動しすぎても、うまくいかないこともある ● 機種・OS間の差異が大きく、厄介 ○ 進行ログもエラーメッセージも違う ○ 頑張ろうとせずに適当に あきらめが肝心 実機利用での難しさ(1) エラー処理
19.
プロファイルをなるべく同じ環境でやりたい ● バックグラウンドプロセスなど ○ adb
shell am kill : プロセスの停止 ○ adb shell am kill-all : 全てのアプリケーションプロセスの停止 ● ストレージの管理 ○ adb shell pm clear : 特定パッケージのデータ削除 ● 冷却のために待ち時間をいれる ○ いれないと何もしてないのにどんどん結果が悪化する ○ さらにダメ押しでスマホクーラーを投入! 端末自体の再起動もやっていたが、 USB接続設定がリセットされたりするので、逆に不安定になる 実機利用での難しさ(2) 端末をクリーンに保つ
20.
● 開発者モード ● スリープしない ○
USB接続中はスリープしない設定がある ● ファイル転送モード ○ 結果ファイルを転送できるように ● 音量 ○ すべてミュート ○ 夜中に謎の音が鳴り続けないように ● 画面輝度 ○ 最低に ○ 電力使わないように ○ 焼き付き防止? 実機利用での難しさ(3) 端末設定
21.
21 ダッシュボードシステム
23.
ダッシュボード画面
24.
● マネージドサービスで構成すること ○ 管理者を立てるほどの規模ではないため ●
お値段そこそこであること ○ お財布の心配は少ない方がいい →GCPサービスと無料のBIツールの組み合わせで実現 ダッシュボードの要件
25.
● Cloud Storage
+ Cloud Functions ○ ストレージ+サーバレスサービス ○ CSVをPythonスクリプトで処理、BigQueryに追記 ● BigQuery ○ 分析用途に向いたデータベース、非常に安価 ○ データを蓄積、ダッシュボード向けに整形 ● Googleデータポータル ○ 無料のBIツール(Googleさん太っ腹) ○ プロファイリング結果の可視化・情報共有 ダッシュボードの構成要素
26.
● 直近のプロファイリン グ結果を表示 ● ドリルダウンリンクで 詳細ページに遷移 ダッシュボード画面
27.
● カテゴリ別表示 ○ 実行時間上位 ○
予算超過率 ● メソッド別表示 ○ 実行時間上位 etc... 詳細画面
28.
● 高負荷になるタイミングを可視化 ○ 性能改善の材料として 時系列グラフ
29.
可視化の例
30.
● カテゴリ分類をGoogleスプレッドシートで定義 ○ チームメンバーが自由に編集できる ○
ダッシュボードにすぐ反映される ● スプレッドシートはBigQueryテーブルとして扱える ○ 裏側の仕組みを知らなくても集計結果をカスタマイズできる BigQuery採用の意外なメリット
31.
● 意図せずゲームが重くなることがあり、有用だった ○ Unityのマイナーバージョンアップ時 ○
性能と無関係なつもりの変更が実際は重かった場合 ● プロファイリング結果をメンバー内で共有できて便利 ○ 特に非エンジニアにデータを共有しやすい 運用してみてのエピソード
32.
● Android実機による自動プロファイリングシステムを開発 ○ 実機プロファイリングのハードルを大幅に下げられた ○
チームメンバーと結果を共有しやすくなった ● 成果も得られた ○ ゲーム中のボトルネックの発見に役立った ○ 性能改善のイテレーションが速まった 結論
33.
33 Thank you
Download