[IGF2018] UE4でAndroidアプリを開発する際に知っておきたいパフォーマンス改善テクニック + INDIE GAMES FESTIVAL 2018 受賞に向けて作品のクオリティをあげるために!

169 Views

November 13, 17

スライド概要

2017年11月13日に行われた「Indie Games Festival 2018 ? Unrealゲーム開発ワークショップ」で登壇した際に使用した資料です。

https://events.withgoogle.com/indie-games-festival-2018-1/#content

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

Indie Games Festival 2018 – Unrealゲーム開発ワークショップ UE4でAndroidアプリを開発する際に 知っておきたいパフォーマンス改善テクニック Epic Games Japan 岡田和也 #igf2018

2.

INDIE GAMES FESTIVAL 2018について 公式サイト https://events.withgoogle.com/indie-games-festival-2018-1/ Google様主催の インディーゲーム開発者向けの ゲームコンテスト 本資料はその一環の Unrealゲーム開発ワークショップで使用したものです

3.

本日のお品書き パフォーマンス改善の話 • 何故パフォーマンスを改善しないといけないの? • じゃあ何をすればいいの?

4.

突然ですが、 INDIE GAMES FESTIVAL 2018の上位作品を プレイしましたか?

5.

ヨーロッパにおける上位作品 https://play.google.com/store/apps/collection/promotion_300276c_in die_games_contest_ctp

6.

サンフランシスコにおける上位作品 https://developers-jp.googleblog.com/2017/10/announcing-winnersfrom-indie-games.html

7.

全部プレイしてみました! (自腹

8.

めちゃめちゃ おもしろい!!!

9.

ペイパーウイング (Paper Wings)

10.

Flipping Legend

11.

これは負けていられない…!

12.

Indie Games Festival 2018 – Unrealゲーム開発ワークショップ INDIE GAMES FESTIVAL 2018 受賞に向けて 作品のクオリティをあげるために! の豪華(?)2本立て! UE4でAndroidアプリを開発する際に 知っておきたいパフォーマンス改善テクニック Epic Games Japan 岡田和也 #igf2018

13.

本日のお品書き • パフォーマンス改善の話 • 何故パフォーマンスを改善しないといけないの? • じゃあ何をすればいいの? • コンテストを勝ち抜くためには…!

14.

UE4でAndroidアプリを開発する際に 知っておきたいパフォーマンス改善テクニック

15.

UE4をこれから触り始める人へ この内容を全て今覚える必要はありません! 頭の片隅に置いておいて、負荷が気になってきたら見直して下さい! まずは各機能を色々触ったり、 何か作ったりしてUE4の使い方を学ぶことを優先しましょう!

16.

はなすこと • 何故パフォーマンスを改善しないといけないの? • じゃあ何をすればいいの?

17.

何故パフォーマンスを改善しないといけないの? 最適化している時間があったら、もっと面白くしたい 調整したい、その方がいいし、ユーザが喜ぶ 大きな間違え!!!

18.

パフォーマンスを改善する理由 • より多くのユーザに、より楽しんでもらうための パフォーマンス改善 • ゲームのクオリティ・ユーザの満足度に直結

19.

じゃあ何をすればいいの? 1. どこが問題になっているのかを調査 2. 調査して問題になっている箇所に対して 重点的に対応いれる

20.

例え話 あれ?体重が増えた!? → じゃあ、断食ダイエットだ! → 不健康、リバウンドなどの問題 実は… • 野菜の量を増やすだけで改善したかも? • 昨日食べすぎただけかも? • そもそも体重計が壊れていただけかも?

21.

ゲーム開発の場合 なんか処理が重い!fpsが出てない!!! → オブジェクト数を1/10に!半透明なし! テクスチャのサイズも全部64x64に!…など → 思ってたより改善しないし、絵がしょぼく… 実は • とあるオブジェクトだけが極端に重かっただけかも? • コードの一部がバグってただけかも? • そもそも計測ミスだったかも?

22.

じゃあ何をすればいいの? 1. どこが問題になっているのかを調査 2. 調査して問題になっている所にたいして重点的に対応いれる

23.

UE4におけるプロファイリング機能

24.

プロファイリング機能の種類 UE4エディタ上 • • • • Viewmode Show Statistics Stat コマンド(Console Command) 実機上 • Statコマンド(Console Command)

25.

Viewmode

26.

Optimization Viewmode Light Complexity 動的ライティング度合いの視覚化 Shader Complexity 各ピクセルにおける命令の合計 (詳細はCEDEC2017の資料で!)

27.

Show カテゴリ毎に機能をON・OFF • 処理負荷にどの程度影響を与えているかを確認

28.

Statistics

29.

Console Command & Variables( CVar ) コマンドによって ゲーム内の挙動を変えたり情報を出力する方法

30.

Statコマンド プロファイリング用のConsole Command ゲームをプレイしながら リアルタイムで情報を確認可能 (ログ・キャプチャ出力系は除く) 実機上でも使用可能! • Mobile Previewはエミュレートなので、 ちゃんとした計測は必ず実機で!

32.

stat scenerendering stat startfile / stopfile

33.

UE4 プロファイリングツール総おさらい (グラフィクス編) • スライド • https://www.slideshare.net/EpicGamesJapan/cedec2017-ue4 • 動画 • https://www.youtube.com/watch?v=EtnXVj8D25M

34.

Androidに特化した補足

35.

Android実機上でConsole Commandを使うには 4本の指でタップすると表示される Console Command / CVar用ウィンドウから 入力・選択可能!

36.

実機とCPUプロファイラ(Session Frontend)の接続 USBで直接接続

37.

実機とCPUプロファイラ(Session Frontend)の接続 Console Commandを エディタから直接送信 リアルタイムでCPUプロファイル (プロファイル分の処理負荷が発生)

38.

実機とCPUプロファイラ(Session Frontend)の接続 apkでも接続可能 • “-messaging“をパラメータとして追加する必要あり Project Launcher 公式ドキュメント https://docs.unrealengine.com/latest/JPN/Engine/Deployment/Releasi ng/index.html

39.

実機とCPUプロファイラ(Session Frontend)の接続 adb connectでWi-FI接続済みなら、USB接続と同じように扱われる! • Wi-Fi越しにadb接続する • USB接続時に比べると、各処理が遅くなるので注意!

40.

モバイルでは GPU処理用のプロファイリング機能は使えません ProfileGPU Stat GPU

41.

モバイル開発で GPU処理用のプロファイリングをするには • 実機ではなくエディタ上で計測 • 計測値をそのまま使うのではなく、 極端に大きな負荷の検出や、割合レベルでの情報として扱う • 各ハードウェア会社が提供している プロファイリングツールを使って計測(中・上級者向け)

42.

各ハードウェア会社が提供しているツール GPUプロファイリング • Qualcomm : Snapdragon Profiler • 配布サイト • NVIDIA : Tegra Graphics Debugger • 配布サイト, Answerhub 関連スレッド • ImgTec : PVRTune, PVRTrace • 公式解説動画 • ARM : Mali Graphics Debugger • UE4公式ブログにおける解説記事

43.

よく使うパフォーマンス改善 テクニックの紹介

44.

PCでも、コンソールでも、VRでも、モバイルでも 基本的なテクニックは共通!

45.

過去スライド • モバイル • 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部ま るっとご紹介! • モバイルゲームにもっとクオリティを!UE4を使ったハイクオリティなモバイル ゲーム制作について • UE4を使った クロスシミュレーションと、 ハイエンド・モバイルゲーム制作の 奥義を伝授! • VR • Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集

46.

特に紹介したい機能と Androidに特化した機能の紹介

47.

LOD(Level of Detail)の自動生成機能 モデルのポリゴン数削減してLODを自動生成 近<--------カメラとの距離----------->遠

48.

LOD(Level of Detail)の自動生成機能 StaticMeshのLOG Groupを変更するだけ!プレビューも簡単!

49.

デバイスプロファイル GPU, SoC, デバイスモデル別のプリセット毎に 各種パラメータ・設定を調整可能 • CVar( Console Variables ) • Texture LOD Group 端末のスペックに応じた調整が可能! • 各設定は端末のスペックから 起動時に自動的に反映される!

52.

Texture LOD Group テクスチャのLOD( MipMap )の設定をグループ毎に一括変更

53.

Feature/Quality Level に応じたマテリアル最適化 Feature / Quality Level 毎に 異なるマテリアルを組むことが可能 • Feature Level • ES2 • ES3.1 : 幅広い端末に対応 :ハイエンド端末専用 • Quality Level • Low, Medium, Highの 3段階

55.

Feature Level 3.1を使うには • 公式ドキュメント • Android OpenGL ES 3.1 モバイル レンダラー • Android Vulkan モバイル レンダラー

56.

Quality Levelを変えるには

57.

ここまでのまとめ • 遊んでくれるユーザのためにも プロファイリング・パフォーマンス改善はしましょう! • UE4は ↑ を支援する機能を沢山用意してます!是非ご活用ください!

58.

Indie Games Festival 2018 – Unrealゲーム開発ワークショップ INDIE GAMES FESTIVAL 2018 受賞に向けて 作品のクオリティをあげるために! の豪華(?)2本立て! UE4でAndroidアプリを開発する際に 知っておきたいパフォーマンス改善テクニック Epic Games Japan 岡田和也 #igf2018

59.

何事もまずはプロファイリング!

60.

上位作品の傾向 • 比較的シンプルで、中心となる遊びがしっかりしている! • グラフィックも高水準! • AAA的な意味ではなく、独自性・バランスなどなど広い範囲で • ローポリ・ボクセルを使った作品が大半! • GooglePlayのサービスを活用している! • SNSにシェア・拡散する仕組みを用意している!

61.

• 本日 • 参加受付〆切 : 2017/11/13 : 2018/3/25 〆切まで、あと 132日!

62.

やばい!

63.

必要な戦略! (個人的感想です) • 早い段階で遊びの核になる部分を確立させる! • 既存のアセット・サンプルをガンガン活用する! • Google Playの機能は早めに導入しておく! • ユーザの数を増やす仕組み・活動を入れる! • 各SNSに投稿する仕組みを早めに導入しておく! • 宣伝・告知は忘れずに!

64.

早い段階で 遊びの核になる部分を確立させる!

65.

UE4と相性のいいワークフロー Epicの開発スタイル • 面白さを早く見つける • “Fail early, Fail often, Fail better” < 早くたくさん上手に失敗せよ > Epicのワークフロー • 短時間でプレイ可能なプロトタイプを作る • 無駄な作業とアセットの作り直しを抑える • 見た目ではなく、楽しさに集中する

66.

Epicのレベルデザインワークフロー ホワイトボックス メッシング ライティング ファイナルポリッシュ

67.

ホワイトボックス 1. 大まかなレイアウトを作る • BSP / シンプルなメッシュを使用 2. ゲームプレイの骨組みを作る • Blueprintによるスクリプティング 短期間で大まかなレベルを作り、楽しさ・面白さを検証

68.

Unreal Tournament

69.

ホワイトボックスをするメリット • 変更が容易 • チーム内のコミュニケーション・ロードマップの共有 • フィードバックや新しいアイデアを誘発 重要 コア部分が出来上がるまではアートの実装はしない!

70.

Unreal Engine 4を利用した先進的なゲーム制作手法 The Unreal Way 2016 https://youtu.be/tRSa7IarsgU

71.

テンプレート 代表的なゲームジャンルのものは用意済み!

72.

コミュニティの方によるサンプル集 UE4resources.com

73.

既存のアセット・サンプルをガンガン活用する!

74.

ラーニング EpicGamesが提供している サンプル集 • 無料! • 商用利用OK! • アセットの外部公開は 一部を除いてNGなので注意!

75.

機能別サンプル 各機能のサンプル集 • 学習用途にピッタリ! • 結構いい感じのアセットが沢山!

76.

アンリアルマッチ3 モバイルゲーム開発用サンプル • モバイル特有の実装方法の学習に • 実際にストアで配信されている コンテンツなので、 リリースするための実装の勉強にも! ストアページヘのリンク

78.

アンリアルマッチ3の開発ドキュメント・動画 https://docs.unrealengine.com/late st/JPN/Resources/SampleGames/U nrealMatch3/index.html

79.

サンテンプル ハイエンドモバイル向けデモ • モバイル向けの 絵作り・最適化の参考に!

81.

マーケットプレイス 様々なアセットを購入可能! • クオリティ高いものばかり! • お手頃な価格のものも多数! 12月後半にある ホリデーセールは要チェック! (昨年:12/22~1/3)

82.

ローポリ・ボクセルアセット 作者ページ:Synty Studios

83.

モバイル用のUE4標準キャラクタ(Mannequin)

84.

マーケットプレイスのアセットの利用規約について • すべて商用利用・改変可能 • 利用・共有範囲について • 購入者(個人・会社)が所属する全プロジェクトで利用可能 • 購入者の所属プロジェクトに関わる開発者・会社間で共有可能 • その他 • 著作権に関する問題はEpicGames内でレビュー済み • 記載がない限り、権利表記は不要 (表記すると製作者は嬉しいので是非!) • 公式サイト マーケットプレイス FAQページ

85.

Google Playの機能は 早めに導入しておく!

86.

アンリアルマッチ3で実装している機能 • ログイン・ログアウト • リーダーボード • アチーブメント • アプリ内課金 BPのみで実装可能!

87.

ログイン・ログアウト GlobalGameInstance

88.

リーダーボードへの書き込み (公式ドキュメント) VictoryScreen

89.

リーダーボードの表示 (公式ドキュメント) • GameOverButtons • MainMenu

90.

アチーブメント (公式ドキュメント) • GameLevel_GM • GlobalGameInsatnce • GameOverButtons • Grid_BP • Title_BP • MainMenu • MenuScroll

91.

Blueprintのノード検索機能 • EventGraphで Ctrl + F • Find in Blueprints • UE4.18からの新機能 全Blueprintを検索対象に

92.

アプリ内課金 (公式ドキュメント) • StoreScreen • GlobalGameInsatance • LevelSelect • MainMenu • MenuScroll

93.

ユーザの数を増やす仕組み・活動

94.

「インディー開発者のためのプレスリリースの書き方講座」より

95.

ユーザの数を増やす仕組み・活動 せっかくクオリティ高い作品を作っても 周知されないと勿体無い…! • 「いいものを作れば勝手に広まる」のは正直な所難しい… ユーザに知ってもらう仕組み・活動をする必要がある!

96.

SNSに投稿する仕組みを早めに導入しておく!

97.

残念ながら標準のUE4では この仕組みを実現するための機能はありません

98.

なので、 現在作成中です!

99.

開発中のSNS投稿用プラグイン for Android できること • 端末にインストールされている 各クライアントを経由した投稿 • ゲーム側から投稿文の デフォルトを設定可能 • スクリーンショットを添付(実装予定) 近日中にプラグイン形式で配布予定

100.

Android スコシデキル 人向け UE4からAndroid APIを直で呼び出すことで、 intent機能を使っています Unreal Plugin Language機能を使うことで XML内に書いたJavaコードをC++から呼び出すことが可能 (そのC++コードをBPノード化することで、より扱いを簡単に) 後日解説記事を作成予定です

101.
[beta]
<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>

102.

追記 プラグイン配布開始次第、 Slideshareの説明文にリンクを追記します Unreal Plugin Languageの記事に関しても 投稿次第、同じく追記します

103.

宣伝・告知は忘れずに!

104.

TwitterなどのSNS上でアピールしよう! 定期的に作業進捗や活動内容を出す事は重要! • 自分の作品のファンを増やしていきましょう! Twitterの場合 • #UE4 をつけてツイート! • 毎週金曜日は エピックフライデー #EpicFridayをつけて、作品の画像・動画をシェア!

105.

是非エピックフライデーをご活用ください! 公式ランチャーでピックアップ作品を紹介 • 全UE4ユーザにアピール! 公式ツイッターアカウントでも紹介!

106.

リリース・展示する際はニュースリリースを! 各ニュースサイトに取り上げて貰うために • 見てくれる数が段違い! • 検索にも引っかかりやすくなる! • おすすめ情報サイト • http://indiegamedevjapan.info/

107.

UNREAL DEV GRANTSにも是非! UE4を使っているコンテンツ開発者に対して 開発資金を支援する EpicGameの活動 • https://www.unrealengine.com/ja/unrealdevgrants 日本のインディデベロッパーからも受賞者が! • 2017年8月での受賞者リストの記事 • TINE METAL • ジラフとアンニカ

108.

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

109.

UE4学習用リンク集

110.

公式ドキュメント・動画 • 公式ドキュメント • https://docs.unrealengine.com/latest/JPN/index.html • ほぼ全てのページが日本語対応済み • YouTube • https://www.youtube.com/user/UnrealDevelopmentKit • 初心者向けのライブトレーニングから GDC講演までなど多岐にわたる内容に対応 • チュートリアル動画の日本語解説 http://manabibeya.com/

111.

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

112.

AnswerHub, 公式フォーラム • AnswerHub • https://answers.unrealengine.com/index.html • コミュニティー用のQ&Aサイト • 公式フォーラム • https://forums.unrealengine.com/ • コミュニティー用の交流サイト • 最新バージョンのリリースなど公式からの案内

113.

Twitter, FaceBook • Twitter • ハッシュタグ: #UE4, #UE4Study • 各自の知見・作品が投稿されている。質問もOK! • Facebook - Unreal Engine助け合い所 • https://www.facebook.com/groups/unrealuserj/ • 質問やUE4に関するイベント告知など

114.

書籍 • Unreal Engine 4で極めるゲーム開発 • https://www.borndigital.co.jp/book/5190.html • Unreal Engine 4 マテリアルデザイン入門[第2版] • http://www.shuwasystem.co.jp/products/7980html/5055.html

115.

国内における講演の動画・スライド • YouTube • https://www.youtube.com/channel/UCUI8jWalKaZ3HsT_-0qTqWg • SlideShare • https://www.slideshare.net/EpicGamesJapan/presentations

116.

是非UE4を使って 素晴らしいゲームを作って 受賞しましょう!!!