[igf2018]...
TRANSCRIPT
#igf2018
UE4でAndroidアプリを開発する際に知っておきたいパフォーマンス改善テクニック
Epic Games Japan 岡田和也
Indie Games Festival 2018 – Unrealゲーム開発ワークショップ
INDIE GAMES FESTIVAL 2018について
公式サイトhttps://events.withgoogle.com/indie-games-festival-2018-1/
Google様主催のインディーゲーム開発者向けのゲームコンテスト
本資料はその一環のUnrealゲーム開発ワークショップで使用したものです
本日のお品書き
パフォーマンス改善の話• 何故パフォーマンスを改善しないといけないの?
• じゃあ何をすればいいの?
突然ですが、
INDIE GAMES FESTIVAL 2018の上位作品を
プレイしましたか?
ヨーロッパにおける上位作品
https://play.google.com/store/apps/collection/promotion_300276c_indie_games_contest_ctp
サンフランシスコにおける上位作品
https://developers-jp.googleblog.com/2017/10/announcing-winners-from-indie-games.html
全部プレイしてみました!(自腹
めちゃめちゃ
おもしろい!!!
ペイパーウイング (Paper Wings)
Flipping Legend
これは負けていられない…!
#igf2018
UE4でAndroidアプリを開発する際に知っておきたいパフォーマンス改善テクニック
INDIE GAMES FESTIVAL 2018
受賞に向けて作品のクオリティをあげるために!
Epic Games Japan 岡田和也
の豪華(?)2本立て!
Indie Games Festival 2018 – Unrealゲーム開発ワークショップ
本日のお品書き
•パフォーマンス改善の話• 何故パフォーマンスを改善しないといけないの?
• じゃあ何をすればいいの?
•コンテストを勝ち抜くためには…!
UE4でAndroidアプリを開発する際に知っておきたいパフォーマンス改善テクニック
UE4をこれから触り始める人へ
この内容を全て今覚える必要はありません!頭の片隅に置いておいて、負荷が気になってきたら見直して下さい!
まずは各機能を色々触ったり、何か作ったりしてUE4の使い方を学ぶことを優先しましょう!
はなすこと
•何故パフォーマンスを改善しないといけないの?
•じゃあ何をすればいいの?
何故パフォーマンスを改善しないといけないの?
最適化している時間があったら、もっと面白くしたい調整したい、その方がいいし、ユーザが喜ぶ
大きな間違え!!!
パフォーマンスを改善する理由
• より多くのユーザに、より楽しんでもらうためのパフォーマンス改善
• ゲームのクオリティ・ユーザの満足度に直結
じゃあ何をすればいいの?
1. どこが問題になっているのかを調査
2. 調査して問題になっている箇所に対して重点的に対応いれる
例え話
あれ?体重が増えた!?
→ じゃあ、断食ダイエットだ!
→ 不健康、リバウンドなどの問題
実は…• 野菜の量を増やすだけで改善したかも?
• 昨日食べすぎただけかも?
• そもそも体重計が壊れていただけかも?
ゲーム開発の場合
なんか処理が重い!fpsが出てない!!!→ オブジェクト数を1/10に!半透明なし!テクスチャのサイズも全部64x64に!…など
→ 思ってたより改善しないし、絵がしょぼく…
実は• とあるオブジェクトだけが極端に重かっただけかも?
• コードの一部がバグってただけかも?
• そもそも計測ミスだったかも?
じゃあ何をすればいいの?
1. どこが問題になっているのかを調査
2. 調査して問題になっている所にたいして重点的に対応いれる
UE4におけるプロファイリング機能
プロファイリング機能の種類
UE4エディタ上• Viewmode
• Show
• Statistics
• Stat コマンド(Console Command)
実機上• Statコマンド(Console Command)
Viewmode
Optimization Viewmode
Light Complexity
動的ライティング度合いの視覚化
Shader Complexity
各ピクセルにおける命令の合計
(詳細はCEDEC2017の資料で!)
Show
カテゴリ毎に機能をON・OFF• 処理負荷にどの程度影響を与えているかを確認
Statistics
Console Command & Variables( CVar )
コマンドによってゲーム内の挙動を変えたり情報を出力する方法
Statコマンド
プロファイリング用のConsole Command
ゲームをプレイしながらリアルタイムで情報を確認可能(ログ・キャプチャ出力系は除く)
実機上でも使用可能!• Mobile Previewはエミュレートなので、ちゃんとした計測は必ず実機で!
stat scenerenderingstat startfile / stopfile
UE4 プロファイリングツール総おさらい(グラフィクス編)
• スライド• https://www.slideshare.net/EpicGamesJapan/cedec2017-ue4
•動画• https://www.youtube.com/watch?v=EtnXVj8D25M
Androidに特化した補足
Android実機上でConsole Commandを使うには
4本の指でタップすると表示されるConsole Command / CVar用ウィンドウから入力・選択可能!
実機とCPUプロファイラ(Session Frontend)の接続
USBで直接接続
実機とCPUプロファイラ(Session Frontend)の接続
Console Commandをエディタから直接送信
リアルタイムでCPUプロファイル
(プロファイル分の処理負荷が発生)
実機とCPUプロファイラ(Session Frontend)の接続
apkでも接続可能• “-messaging“をパラメータとして追加する必要あり
Project Launcher公式ドキュメントhttps://docs.unrealengine.com/latest/JPN/Engine/Deployment/Releasing/index.html
実機とCPUプロファイラ(Session Frontend)の接続
adb connectでWi-FI接続済みなら、USB接続と同じように扱われる!• Wi-Fi越しにadb接続する
• USB接続時に比べると、各処理が遅くなるので注意!
モバイルではGPU処理用のプロファイリング機能は使えません
ProfileGPU Stat GPU
モバイル開発でGPU処理用のプロファイリングをするには
•実機ではなくエディタ上で計測• 計測値をそのまま使うのではなく、極端に大きな負荷の検出や、割合レベルでの情報として扱う
•各ハードウェア会社が提供しているプロファイリングツールを使って計測(中・上級者向け)
各ハードウェア会社が提供しているツール
GPUプロファイリング• Qualcomm : Snapdragon Profiler
• 配布サイト
• NVIDIA : Tegra Graphics Debugger• 配布サイト, Answerhub関連スレッド
• ImgTec : PVRTune, PVRTrace• 公式解説動画
• ARM : Mali Graphics Debugger • UE4公式ブログにおける解説記事
よく使うパフォーマンス改善テクニックの紹介
PCでも、コンソールでも、VRでも、モバイルでも基本的なテクニックは共通!
過去スライド
• モバイル• 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介!
• モバイルゲームにもっとクオリティを!UE4を使ったハイクオリティなモバイルゲーム制作について
• UE4を使ったクロスシミュレーションと、ハイエンド・モバイルゲーム制作の奥義を伝授!
• VR• Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集
特に紹介したい機能とAndroidに特化した機能の紹介
LOD(Level of Detail)の自動生成機能
モデルのポリゴン数削減してLODを自動生成
近<--------カメラとの距離----------->遠
LOD(Level of Detail)の自動生成機能
StaticMeshのLOG Groupを変更するだけ!プレビューも簡単!
デバイスプロファイル
GPU, SoC, デバイスモデル別のプリセット毎に各種パラメータ・設定を調整可能
• CVar( Console Variables )
• Texture LOD Group
端末のスペックに応じた調整が可能!• 各設定は端末のスペックから起動時に自動的に反映される!
Texture LOD Group
テクスチャのLOD( MipMap )の設定をグループ毎に一括変更
Feature/Quality Level に応じたマテリアル最適化
Feature / Quality Level 毎に異なるマテリアルを組むことが可能
• Feature Level• ES2 :幅広い端末に対応
• ES3.1 :ハイエンド端末専用
• Quality Level• Low, Medium, Highの 3段階
Feature Level 3.1を使うには
•公式ドキュメント• Android OpenGL ES 3.1 モバイルレンダラー
• Android Vulkan モバイルレンダラー
Quality Levelを変えるには
ここまでのまとめ
•遊んでくれるユーザのためにもプロファイリング・パフォーマンス改善はしましょう!
• UE4は↑ を支援する機能を沢山用意してます!是非ご活用ください!
#igf2018
UE4でAndroidアプリを開発する際に知っておきたいパフォーマンス改善テクニック
INDIE GAMES FESTIVAL 2018
受賞に向けて作品のクオリティをあげるために!
Epic Games Japan 岡田和也
の豪華(?)2本立て!
Indie Games Festival 2018 – Unrealゲーム開発ワークショップ
何事もまずはプロファイリング!
上位作品の傾向
•比較的シンプルで、中心となる遊びがしっかりしている!
• グラフィックも高水準!• AAA的な意味ではなく、独自性・バランスなどなど広い範囲で
• ローポリ・ボクセルを使った作品が大半!
• GooglePlayのサービスを活用している!
• SNSにシェア・拡散する仕組みを用意している!
•本日 : 2017/11/13
•参加受付〆切 : 2018/3/25
〆切まで、あと132日!
やばい!
必要な戦略! (個人的感想です)
•早い段階で遊びの核になる部分を確立させる!
•既存のアセット・サンプルをガンガン活用する!
• Google Playの機能は早めに導入しておく!
• ユーザの数を増やす仕組み・活動を入れる!• 各SNSに投稿する仕組みを早めに導入しておく!
• 宣伝・告知は忘れずに!
早い段階で遊びの核になる部分を確立させる!
UE4と相性のいいワークフロー
Epicの開発スタイル• 面白さを早く見つける
• “Fail early, Fail often, Fail better” <早くたくさん上手に失敗せよ >
Epicのワークフロー• 短時間でプレイ可能なプロトタイプを作る
• 無駄な作業とアセットの作り直しを抑える
• 見た目ではなく、楽しさに集中する
Epicのレベルデザインワークフロー
ホワイトボックス メッシング ライティング ファイナルポリッシュ
ホワイトボックス
1. 大まかなレイアウトを作る• BSP / シンプルなメッシュを使用
2. ゲームプレイの骨組みを作る• Blueprintによるスクリプティング
短期間で大まかなレベルを作り、楽しさ・面白さを検証
Unreal Tournament
ホワイトボックスをするメリット
•変更が容易
• チーム内のコミュニケーション・ロードマップの共有
• フィードバックや新しいアイデアを誘発
重要コア部分が出来上がるまではアートの実装はしない!
Unreal Engine 4を利用した先進的なゲーム制作手法The Unreal Way 2016https://youtu.be/tRSa7IarsgU
テンプレート
代表的なゲームジャンルのものは用意済み!
既存のアセット・サンプルをガンガン活用する!
ラーニング
EpicGamesが提供しているサンプル集
• 無料!
• 商用利用OK!
• アセットの外部公開は一部を除いてNGなので注意!
機能別サンプル
各機能のサンプル集• 学習用途にピッタリ!
• 結構いい感じのアセットが沢山!
アンリアルマッチ3
モバイルゲーム開発用サンプル• モバイル特有の実装方法の学習に
• 実際にストアで配信されているコンテンツなので、リリースするための実装の勉強にも!ストアページヘのリンク
アンリアルマッチ3の開発ドキュメント・動画
https://docs.unrealengine.com/latest/JPN/Resources/SampleGames/UnrealMatch3/index.html
サンテンプル
ハイエンドモバイル向けデモ• モバイル向けの絵作り・最適化の参考に!
マーケットプレイス
様々なアセットを購入可能!• クオリティ高いものばかり!
• お手頃な価格のものも多数!
12月後半にあるホリデーセールは要チェック!(昨年:12/22~1/3)
モバイル用のUE4標準キャラクタ(Mannequin)
マーケットプレイスのアセットの利用規約について
• すべて商用利用・改変可能
•利用・共有範囲について• 購入者(個人・会社)が所属する全プロジェクトで利用可能
• 購入者の所属プロジェクトに関わる開発者・会社間で共有可能
• その他• 著作権に関する問題はEpicGames内でレビュー済み
• 記載がない限り、権利表記は不要 (表記すると製作者は嬉しいので是非!)
•公式サイトマーケットプレイス FAQページ
Google Playの機能は早めに導入しておく!
アンリアルマッチ3で実装している機能
• ログイン・ログアウト
• リーダーボード
• アチーブメント
• アプリ内課金
BPのみで実装可能!
ログイン・ログアウト
GlobalGameInstance
リーダーボードへの書き込み (公式ドキュメント)
VictoryScreen
リーダーボードの表示 (公式ドキュメント)
• GameOverButtons
• MainMenu
アチーブメント (公式ドキュメント)
• GameLevel_GM
• GlobalGameInsatnce
• GameOverButtons
• Grid_BP
• Title_BP
• MainMenu
• MenuScroll
Blueprintのノード検索機能
• EventGraphで Ctrl + F
• Find in Blueprints• UE4.18からの新機能
全Blueprintを検索対象に
アプリ内課金 (公式ドキュメント)
• StoreScreen
• GlobalGameInsatance
• LevelSelect
• MainMenu
• MenuScroll
ユーザの数を増やす仕組み・活動
「インディー開発者のためのプレスリリースの書き方講座」より
ユーザの数を増やす仕組み・活動
せっかくクオリティ高い作品を作っても周知されないと勿体無い…!
• 「いいものを作れば勝手に広まる」のは正直な所難しい…
ユーザに知ってもらう仕組み・活動をする必要がある!
SNSに投稿する仕組みを早めに導入しておく!
残念ながら標準のUE4ではこの仕組みを実現するための機能はありません
なので、現在作成中です!
開発中のSNS投稿用プラグイン for Android
できること• 端末にインストールされている各クライアントを経由した投稿
• ゲーム側から投稿文のデフォルトを設定可能
• スクリーンショットを添付(実装予定)
近日中にプラグイン形式で配布予定
Android スコシデキル 人向け
UE4からAndroid APIを直で呼び出すことで、intent機能を使っています
Unreal Plugin Language機能を使うことでXML内に書いたJavaコードをC++から呼び出すことが可能
(そのC++コードをBPノード化することで、より扱いを簡単に)
後日解説記事を作成予定です
<gameActivityClassAdditions><insert>public boolean AndroidThunkJava_Intent(){Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_TEXT,"test");intent.setType("text/plain");this.startActivity(intent);return true;}
</insert></gameActivityClassAdditions>
</root>
追記
プラグイン配布開始次第、Slideshareの説明文にリンクを追記します
Unreal Plugin Languageの記事に関しても投稿次第、同じく追記します
宣伝・告知は忘れずに!
TwitterなどのSNS上でアピールしよう!
定期的に作業進捗や活動内容を出す事は重要!• 自分の作品のファンを増やしていきましょう!
Twitterの場合• #UE4 をつけてツイート!
• 毎週金曜日はエピックフライデー#EpicFridayをつけて、作品の画像・動画をシェア!
是非エピックフライデーをご活用ください!
公式ランチャーでピックアップ作品を紹介• 全UE4ユーザにアピール!
公式ツイッターアカウントでも紹介!
リリース・展示する際はニュースリリースを!
各ニュースサイトに取り上げて貰うために• 見てくれる数が段違い!
• 検索にも引っかかりやすくなる!
• おすすめ情報サイト• http://indiegamedevjapan.info/
UNREAL DEV GRANTSにも是非!
UE4を使っているコンテンツ開発者に対して開発資金を支援する EpicGameの活動
• https://www.unrealengine.com/ja/unrealdevgrants
日本のインディデベロッパーからも受賞者が!• 2017年8月での受賞者リストの記事
• TINE METAL
• ジラフとアンニカ
UE4公式ブログのインディー開発者向け記事
• インディーのためのマーケティング• https://www.unrealengine.com/ja/blog/marketing-for-indies?lang=ja
• インディーのための展示会出展のコツ• https://www.unrealengine.com/ja/blog/expos-for-indies?lang=ja
• インディーのためのプレゼンのコツ• https://www.unrealengine.com/ja/blog/public-speaking-for-indies
UE4学習用リンク集
公式ドキュメント・動画
•公式ドキュメント• https://docs.unrealengine.com/latest/JPN/index.html
• ほぼ全てのページが日本語対応済み
• YouTube• https://www.youtube.com/user/UnrealDevelopmentKit
• 初心者向けのライブトレーニングからGDC講演までなど多岐にわたる内容に対応
• チュートリアル動画の日本語解説http://manabibeya.com/
Android クイックスタート
UE4でAndroid開発をはじめるための手順を紹介• https://docs.unrealengine.com/latest/JPN/Platforms/Android/GettingStarted/
index.html
• SDKの入れ方、設定手順
• 実機に転送するやり方
公式ドキュメントには他にもAndroid開発に関するページが沢山!https://docs.unrealengine.com/latest/JPN/Platforms/Mobile/index.html
AnswerHub, 公式フォーラム
• AnswerHub• https://answers.unrealengine.com/index.html
• コミュニティー用のQ&Aサイト
•公式フォーラム• https://forums.unrealengine.com/
• コミュニティー用の交流サイト
• 最新バージョンのリリースなど公式からの案内
Twitter, FaceBook
• Twitter• ハッシュタグ: #UE4, #UE4Study
• 各自の知見・作品が投稿されている。質問もOK!
• Facebook - Unreal Engine助け合い所 -• https://www.facebook.com/groups/unrealuserj/
• 質問やUE4に関するイベント告知など
書籍
• Unreal Engine 4で極めるゲーム開発• https://www.borndigital.co.jp/book/5190.html
• Unreal Engine 4 マテリアルデザイン入門[第2版]• http://www.shuwasystem.co.jp/products/7980html/5055.html
国内における講演の動画・スライド
• YouTube• https://www.youtube.com/channel/UCUI8jWalKaZ3HsT_-0qTqWg
• SlideShare• https://www.slideshare.net/EpicGamesJapan/presentations
是非UE4を使って素晴らしいゲームを作って受賞しましょう!!!