5.4K Views
November 13, 17
スライド概要
2017年11月13日に行われた「Indie Games Festival 2018 ? Unrealゲーム開発ワークショップ」で登壇した際に使用した資料です。
https://events.withgoogle.com/indie-games-festival-2018-1/#content
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
Indie Games Festival 2018 – Unrealゲーム開発ワークショップ UE4でAndroidアプリを開発する際に 知っておきたいパフォーマンス改善テクニック Epic Games Japan 岡田和也 #igf2018
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_in die_games_contest_ctp
サンフランシスコにおける上位作品 https://developers-jp.googleblog.com/2017/10/announcing-winnersfrom-indie-games.html
全部プレイしてみました! (自腹
めちゃめちゃ おもしろい!!!
ペイパーウイング (Paper Wings)
Flipping Legend
これは負けていられない…!
Indie Games Festival 2018 – Unrealゲーム開発ワークショップ INDIE GAMES FESTIVAL 2018 受賞に向けて 作品のクオリティをあげるために! の豪華(?)2本立て! UE4でAndroidアプリを開発する際に 知っておきたいパフォーマンス改善テクニック Epic Games Japan 岡田和也 #igf2018
本日のお品書き • パフォーマンス改善の話 • 何故パフォーマンスを改善しないといけないの? • じゃあ何をすればいいの? • コンテストを勝ち抜くためには…!
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 scenerendering stat 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/Releasi ng/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は ↑ を支援する機能を沢山用意してます!是非ご活用ください!
Indie Games Festival 2018 – Unrealゲーム開発ワークショップ INDIE GAMES FESTIVAL 2018 受賞に向けて 作品のクオリティをあげるために! の豪華(?)2本立て! UE4でAndroidアプリを開発する際に 知っておきたいパフォーマンス改善テクニック Epic Games Japan 岡田和也 #igf2018
何事もまずはプロファイリング!
上位作品の傾向 • 比較的シンプルで、中心となる遊びがしっかりしている! • グラフィックも高水準! • 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 2016 https://youtu.be/tRSa7IarsgU
テンプレート 代表的なゲームジャンルのものは用意済み!
コミュニティの方によるサンプル集 UE4resources.com
既存のアセット・サンプルをガンガン活用する!
ラーニング EpicGamesが提供している サンプル集 • 無料! • 商用利用OK! • アセットの外部公開は 一部を除いてNGなので注意!
機能別サンプル 各機能のサンプル集 • 学習用途にピッタリ! • 結構いい感じのアセットが沢山!
アンリアルマッチ3 モバイルゲーム開発用サンプル • モバイル特有の実装方法の学習に • 実際にストアで配信されている コンテンツなので、 リリースするための実装の勉強にも! ストアページヘのリンク
アンリアルマッチ3の開発ドキュメント・動画 https://docs.unrealengine.com/late st/JPN/Resources/SampleGames/U nrealMatch3/index.html
サンテンプル ハイエンドモバイル向けデモ • モバイル向けの 絵作り・最適化の参考に!
マーケットプレイス 様々なアセットを購入可能! • クオリティ高いものばかり! • お手頃な価格のものも多数! 12月後半にある ホリデーセールは要チェック! (昨年:12/22~1/3)
ローポリ・ボクセルアセット 作者ページ:Synty Studios
モバイル用の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を使って 素晴らしいゲームを作って 受賞しましょう!!!