UE4何でも勉強会 in 東京
自動テストでもっと楽したい!
Slideshare用壁紙
Slideshare用壁紙
自己紹介
● Twitter: @com04
● ゲームプログラマー
● UE4: UE4.4~
● 作ったものとかは大体twitterモーメントに
○ https://twitter.com/i/moments/847072031048814594
○ https://twitter.com/i/moments/986364547098275840
● マーケットプレイスに出品しました
○ ComMaterialTools - マテリアル検索の便利ツール
■ https://www.unrealengine.com/marketplace/commaterialtools
自己紹介
● 書いたスライド
− https://www.slideshare.net/com044/presentations
● マテリアルの注意すべきこと!~テクスチャロードとSwitch~
● UE4でAIとビヘイビアツリーと-基礎-
● AI基礎
● UE4でTranslucencyやUnlitに影を落としたい!
● UE4 Volumetric Fogで 空間を演出する!
● UE4 LODs for Optimization -Beginner-
● もっとアニメーションBP
● アニメーション基礎
● エンジンの内部挙動について
● UE4でのチーム製作
5
はじめに
今日話さない事
● ユニットテスト
● C++を使ったUE4の自動テスト機能
はじめに
今日話す事
● UE4の自動テスト機能(BPのみ)
● アセット/レベルチェックの自動化
はじめに
※注意して検証を行いましたが、環境によっての違いや、
間違い等ありましたらごめんなさい
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料 version: UE4.22.2
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
自動テストとは
人の手でチェックする手間を減らして、
自動でチェックしよう!
自動テストとは
10ステージ分チェックしたい!
→ 1ステージ開くのに5分かかる
→ チェックに最低50分以上かかる
チェックするのは週1?月1?
このコストを支払う……?
自動テストとは
他にもプレイヤー、敵、イベント、ロジックのBP……
チェックするのは多岐に……
日々変更するものも多いので、定期的にもチェックしたい
……
自動テストとは
機械的にチェック出来る範囲のチェック・情報収集は、自動
でやってもらおう!
夜間等の業務時間外のPCに頑張ってもらう!
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
出来る事/出来そうな事
なにしてもらう?
出来る事/出来そうな事
● データに問題が無いか自動でチェックする
○ コミット抜け
○ Developersフォルダの直参照
○ クラッシュするBP
○ 設定されるべきフラグが設定されてない
■ 手で起動して、あれ上手く動かない……というのを繰り返す手間を無くす
● もしクラッシュしたら長いレベル開き待ち時間……
出来る事/出来そうな事
● データに問題が無いか自動でチェックする
○ 昔に作ったデータで長いこと動作確認してなかった
■ イベントシーン組もうと思ったら、このレベル開かない、BP動かない
……
■ 待ちが発生する後工程
出来る事/出来そうな事
● プロファイルの自動収集
○ ステージ毎、キャラクター毎の使用メモリ
○ 処理負荷チェック
■ 何十ステージ/何百のイベントを手動チェックしてると、開くだけで数日
が終わってしまう……
出来る事/出来そうな事
● クリティカルな不具合の早期チェック
○ ゲームをずっと自動プレイで流す
■ エンディングまでの通しプレイ
■ クラッシュ
■ メモリリーク
■ 背景のヒット抜けチェック
■ ボタン押すタイミングチェック
● QA始まってから見つかるとつらい……
出来る事/出来そうな事
● イベントやカットシーン
○ イベントフラグの設定間違いが無いか
○ 通常再生とシーンスキップした時のフラグやプレイヤー位置に
差が無いか
○ 途中で停止/クラッシュしないか
○ 負荷チェック
○ 合わせて画面を録画しておくなど
出来る事/出来そうな事
● 設定の挙動
○ セーブ / ロード
○ グラフィックスオプションを変更した時の見た目確認
■ 特にWindows環境
■ 全部の組み合わせとなると膨大……
出来る事/出来そうな事
一部を作ってみました
出来る事/出来そうな事 - 一部を作ってみました
テクスチャのグループ設定が正しく設定されているか
●
出来る事/出来そうな事 - 一部を作ってみました
テクスチャのグループ設定が正しく設定されているか
● テクスチャグループの参考
○ テクスチャグループはグループ別にLODのサイズ制限、Biasやフィル
ターを調整できます
■ テクスチャのサポートと設定 - 公式ドキュメント
● http://api.unrealengine.com/JPN/Engine/Content/Types/Textures/Support
AndSettings
○ [UE4] Texture GroupがTexture Streamingに与える影響 -
EGJ-Nori_Shinoyama
■ https://qiita.com/EGJ-Nori_Shinoyama/items/8b3c2e4e372f05e33476
出来る事/出来そうな事 - 一部を作ってみました
テクスチャのグループ設定が正しく設定されているか
● →サンプル: 01_TextureGroup
○ フォルダとグループを紐づけてチェック。違えば警告出す
■ Characterフォルダ → Characterグループ
■ Environmentフォルダ → Worldグループ
■ Effectフォルダ → Effectグループ
出来る事/出来そうな事 - 一部を作ってみました
テクスチャのサイズが大きすぎないか
● プロジェクトのレギュレーションをチェックする
○ (例)
■ キャラクターのアルベドは4096でも良い
■ 法線マップ、Roughness/Metallic/AOマップは2048まで
■ エフェクトは2048まで
出来る事/出来そうな事 - 一部を作ってみました
テクスチャのサイズが大きすぎないか
● →サンプル: 02_TextureSize
○ 一括で2048を超えていないかチェックする(4096アウト)
出来る事/出来そうな事 - 一部を作ってみました
マテリアルのレギュレーションチェック
● プロジェクトで決められた設定をチェックする
● (例)
○ Automatically Set Usage in Editorは使っては駄目
■ メモリ増大要因(フラグが一杯付いていないか)
○ TranslucencyのSurface Forward Shading使ってないか
■ GPU負荷高い
○ 要C++コードで……
■ インストラクション数のチェック
■ マテリアルインスタンスでStaticSwitch/プロパティを操作していないか
出来る事/出来そうな事 - 一部を作ってみました
マテリアルのレギュレーションチェック
● Automatically Set Usage in Editor の参考
○ マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic
Games Japan: 篠山範明)
■ https://www.slideshare.net/EpicGamesJapan/epic-games-japan-ue4dd/76
出来る事/出来そうな事 - 一部を作ってみました
マテリアルのレギュレーションチェック
● →サンプル: 03_MaterialReguration
○ Automatically Set Usage in Editorのみチェックしています
出来る事/出来そうな事 - 一部を作ってみました
レベルのチェック
● 不必要にTickがONになっているActorが無いか
● 動かないオブジェクトがムーバブルになっていないか
● (例)
○ Planar Reflection使ってないか
○ ステイショナリー、もしくはムーバブルなディレクショナルライトが2
灯以上ないか
出来る事/出来そうな事 - 一部を作ってみました
レベルのチェック
● →サンプル: 04_LevelCheck
○ Tickのチェック
○ PlanarReflectionチェック
○ 可動性ムーバブルチェック
○ ディレクショナルライトが
非スタティックで複数
出来る事/出来そうな事 - 一部を作ってみました
レベルのスクリーンショット撮影
● 各エリアの撮影
● 合わせて各種負荷を見るための情報も撮影
○ stat でメモリ量やDrawCallの数など
○ Shader Complexy(Editorのみ)
○ Quad Overdraw(Editorのみ)
○ Profile
出来る事/出来そうな事 - 一部を作ってみました
レベルのスクリーンショット撮影
● →サンプル: 05_ScreenShot
○ 各種スクリーンショット
○ CsvProfile
出来る事/出来そうな事 - 一部を作ってみました
などなど……
出来る事/出来そうな事 - 一部を作ってみました
これらは新規実装時だけではなく、修正・調整した際に
チェックに引っかかる可能性があります。
可能な限り常時回しましょう。
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
出来る事/出来そうな事 - 自動テスト系の実例参考資料
UE4における大規模背景制作事例(データメンテナンス・大
技設定編 ) - 株式会社スクウェア・エニックス
● https://www.slideshare.net/EpicGamesJapan/ue4-137253045
○ データのメンテナンスについて
○ 安定化の為に、どういうものを、どうチェックしていたか
出来る事/出来そうな事 - 自動テスト系の実例参考資料
● COOK後データ容量
● UE4マップチェックエラー
● ファイル命名エラー
● UE4-ソースデータ照合
● ソースパスエラー
● テクスチャグループ設定
● デベロッパフォルダ参照
● Swarm接続
出来る事/出来そうな事 - 自動テスト系の実例参考資料
UE4における自動プレイのポストモーテム - 株式会社スク
ウェア・エニックス
● https://www.slideshare.net/EpicGamesJapan/ue4-137253042
○ 自動化について書かれています
○ UE4の自動テストだけでなく、自作されていた模様
出来る事/出来そうな事 - 自動テスト系の実例参考資料
● データ更新の自動化 ←今回の自動テストと同じ?
○ HLOD、常駐関連、テクスチャロード関連
● 品質チェックの自動化
○ 負荷、メモリ、カットシーン再生
● 自動プレイ系はほぼ自前でスクリプトを組んでいた模様
出来る事/出来そうな事 - 自動テスト系の実例参考資料
Automated Testing of Gameplay Features in 'Sea of
Thieves' - Rare
● https://www.gdcvault.com/play/1026366/Automated-Testing-of-Gameplay-Features
○ GDC 2019で講演されたUE4の自動テストを用いた例
出来る事/出来そうな事 - 自動テスト系の実例参考資料
● こちらはUnit Test, Integration Test, Actor Test
○ 入力を発生させる→船の舵を回す→メッシュが動く
■ とかのフローが正常に動作するか、をテスト
● 最終的なテストは 23,212 Tests
○ アセットチェックのテストも含めると 104,912 Tests
出来る事/出来そうな事 - 自動テスト系の実例参考資料
Automated Testing at Scale in Sea of Thieves - Rare
● https://www.unrealengine.com/ja/events/unreal-fest-europe-2019/automated-testing-
at-scale-in-sea-of-thieves
○ 先程のスライドと似ていますが、こちらはUnreal Fest Europe
2019版
○ 若干中身違う模様
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
自動テストの実行方法 - エディターから実行
セッションフロントエンドを起動します。
● 「ウィンドウ」 →
「デベロッパーツール」 →
「セッションフロントエンド」
自動テストの実行方法 - エディターから実行
「オートメーション」タブで開きます
自動テストの実行方法 - エディターから実行
行いたいテストにチェックを入れて、
「テストを開始する」を押して実行します
自動テストの実行方法 - エディターから実行
※テストを新規追加した場合は「テストを更新」ボタンでリスト
を更新します。
更新ボタンを押す前に、レベルを保存してください。
自動テストの実行方法 - エディターから実行
終了すると結果が表示されます。
結果が表示されます。
・成功すると緑
・警告が出てると黄色
・エラーだと赤
実行した際のログが表
示されます。
自動テストの実行方法 - エディターから実行
「エラー」ボタン、「警告」ボタンでその結果だけを表示する
事が出来ます
自動テストの実行方法 - エディターから実行
右下の「エクスポート」ボタンから結果をUE4外に出力でき
ます
自動テストの実行方法 - エディターから実行
“Saved/Automation/”の下にcsvファイルで実行ログが出
力されます
自動テストの実行方法 - エディターから実行
毎回チェックボックスを選択しなくて済むように、
プリセットを保存できます。
● 右端の「プリセット」の「+」ボタンで新規追加
● プリセットの保存先は “ConfigAutomationPresets”
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
自動テストの実行方法 - パッケージ版で実行
パッケージ版で確認
自動テストの実行方法 - パッケージ版で実行
パッケージングした後の.exeファイルからでもテストを行え
ます
● Jenkins等でDailyビルドしたパッケージからテストを実
行できます
自動テストの実行方法 - パッケージ版で実行
起動引数で実行できます
● -ExecCmds="Automation RunTests <グループ名>;Quit"
○ BPの場合は、配置したレベルがグループ名になります。
■ (例)
● Project.FunctionalTests./Game/Test/01_TextureGroup/LV_TestTextu
reGroup.BP_TestTextureGroup
グループ名はセッション
フロントエンドで
確認できます
自動テストの実行方法 - パッケージ版で実行
起動引数で実行できます
● グループ名は省略出来ます。
○ 区切りを途中までにすると、それ以下全部を実行します
■ Project.FunctionalTests
● と指定するとプロジェクトにある全部のBPテストを実行します
■ Project.FunctionalTests./Game/Test/01_TextureGroup/LV_TestText
ureGroup
● と指定すると、このレベルに入っているテストBP全部を実行します
自動テストの実行方法 - パッケージ版で実行
起動引数で実行できます
● 調べてみると、どうやら部分一致で実行しているようです
■ ThirdPersonExampleMap
● レベル名だけの指定で、このレベルの中の全てのテストを実行できます
○ (同名のレベルが有るとそっちも実行されると思います)
■ BP_TestScreenShot
● BP名(レベルに配置したActor名)で指定すると、全レベルに配置したこの名前
のテストを実行します
自動テストの実行方法 - パッケージ版で実行
起動引数で実行できます
● こんな感じに
○ -ExecCmds="Automation RunTests <レベル名>;Quit"
■ (例)
● -ExecCmds="Automation RunTests ThirdPersonExampleMap;Quit"
■ 指定したレベルの中を全部チェックしたい時
○ -ExecCmds="Automation RunTests <テストBP名>;Quit"
■ (例)
● -ExecCmds="Automation RunTests BP_TestScreenShot;Quit"
■ 全レベルの指定したテストを行いたい場合
自動テストの実行方法 - パッケージ版で実行
コマンドが長くなるので、batファイルとかに纏めておくと便
利です。
自動テストの実行方法 - パッケージ版で実行
こんな感じで組んで見ました(サンプルに入ってます)
AutomationRakushitai.exe -windowed -LogCmds="global off,LogFunctionalTest log" -ExecCmds="Automation
RunTests LV_LevelCheck;Quit" -log=04_LevelCheck.txt
● -windowed
○ ウィンドウモード起動
● -LogCmds="global off,LogFunctionalTest log"
○ global off: 全部のログを無しに。 LogFunctionalTest log: 今回の自動テストのログのみ出す
● -ExecCmds="Automation RunTests LV_LevelCheck;Quit"
○ 指定のテスト実行して終了する
● -log=04_LevelCheck.txt
○ ログの出力ファイル名を指定。 ”Save/Logs/” の中に出来る
自動テストの実行方法 - パッケージ版で実行
他の起動引数
● -NullRHI
○ 画面無しで起動します
■ Jenkis等でGUI無しで実行したい場合
■ ただし、スクリーンショット等は撮れないので注意
自動テストの実行方法 - パッケージ版で実行
テスト結果のログは”<Project名>/Saved/Logs/”のいつもの
ログに
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
自動テストの作成方法
BPでテストを作成します
自動テストの作成方法
通常のBPの作成し、「Functional Test」を親として作成しま
す
自動テストの作成方法
開くとテストの答案的な絵
自動テストの作成方法
テストの実装はイベントグラフに書いていきます
自動テストの作成方法
Prepare Test
● テストの開始処理。
通常BPのBeginPlayのような感じで初期化に使います。
自動テストの作成方法
Start Test
● テストが開始したら呼び出されます。
実際のテストコードを書きます
自動テストの作成方法
Start Test
● 「Finish Test」ノードでテストを終了します
○ Test Result: 結果を返します
■ Invalid, Error, Failed : 失敗扱い
■ Running : 警告扱い?
■ Default, Successded : 成功扱い
自動テストの作成方法
Tickも回ります
自動テストの作成方法
他、FunctionalTest用のノード
自動テストの作成方法
Log Message
● テストログにメッセージを流します
○ けど、セッションフロントエンド起動の場合、オートメーションの
ログには出てこない……
○ →コンソールアウトプットには出てきます
自動テストの作成方法
Add Warning / Add Error
● ログに警告 / エラーのログを出します
○ このノードを使うと、「Finish Test」でSuccessを返しても警告 /
失敗扱いになります
自動テストの作成方法
Assert系
● 条件が違う時にエラーとして処理します
○ この時はFloat値が1.0じゃないとエラー、とかBoolがTrueじゃ
ないとエラー。という時に
自動テストの作成方法
Take Automation Screenshot
● スクリーンショットを撮ります
○ けどセッションフロントエンドから実行すると失敗する……
■ パッケージからの実行なら問題ないです
○ 出力先は”Saved/Automation/”以下
自動テストの作成方法
Stat系ノード
● Stat系の数値を取得できます
○ 処理回数や、処理時間の計測した数値を拾えます
■ Stat Commands - 公式ドキュメント
● https://docs.unrealengine.com/en-US/Engine/Performance/StatCommands/index.
html
自動テストの作成方法
Stat系ノード
● [Enable / Disable] Stat Group
○ 計測を有効/無効にするグループを指定します
○ 指定する名前はコンソールコマンドで操作するのと同じ名称で
す
■ 「Game」「Engine」「Particles」など。↓の表示出すコマンド。
自動テストの作成方法
Stat系ノード
● Get Stat [Call Count / [Inc/Exc] Average, Max]
○ 呼ばれた回数、平均値、最大値を取ります
○ 「Enable Stat Group」で有効にしていないと取れません
自動テストの作成方法
Stat系ノード
● Get Stat [Call Count / [Inc/Exc] Average, Max]
○ 指定する名前はソースコードで指定されている名称です
■ エンジンのソースコード読めないと使えない……
● ので一覧化してcsvに纏めました
● http://com04.sakura.ne.jp/unreal/wiki/index.php?Automation%20Test
自動テストの作成方法
Stat系ノード
● 使用方法は下記のような形です
○ 先に[Enable Stat Group]で有効にした後、数値を取ります
自動テストの作成方法
Stat系ノード
● ほか
○ 一度その処理を通らないと、警告が返ってくるようです
■ パーティクルが一個も無い状態で、Particles系のパラメーターを取ろうと
すると警告が出る模様…
○ [Enable Stat Group]に使用できるのは、ソースコード側で
「DECLARE_CYCLE_STAT_EXTERN」系のStatのみのよう
です。
■ →「DECLARE_MEMORY_STAT_EXTERN」とかは駄目っぽい…
自動テストの作成方法
タイムアウト設定
自動テストの作成方法
BPには処理のタイムアウト時間が設定できます。
● テスト中に進行不能になった場合、タイムアウトして失
敗した判定に
○ 例えば、自動プレイ中にコリジョンに埋まって身動きが取れな
くなった時とか
自動テストの作成方法
もし行うテストに時間がかかるなら、大きめの値を入れてお
きます。
自動テストの作成方法
● Preparation Time
○ イベント「Prepare Test」のタイムアウト時間
● Time Limit
○ テストのタイムアウト時間
自動テストの作成方法
● Times Up Result
○ タイムアウトした時の成否を選択します
■ ここをSuccessにすると、逆にこの時間動き続けたのでOK。
的な処理もできます
自動テストの作成方法
後はそのBPをレベルに配置すると、配置されたレベルでテ
ストが行えます
自動テストの作成方法
レベル毎にチェックしたい場合は、それぞれのレベルにBP
を入れ込んでいきます
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
その他
レベル遷移は出来ません
● テストBPからOpenLevelで遷移
● レベル中からOpenLevelで遷移
○ レベル遷移した時点でテストが終了します
その他
レベル遷移は出来ません
● プロジェクト構成によっては自動プレイは組めないです
……
その他
配置するのはパーシススタントレベルが良さそうです
パーシスタント側には
出たり出なかったり……
サブレベルに配置したテストは
サブレベルで出てくる
その他
GameModeはレベルに設定しているものがそのまま使用さ
れます
● 逆にGameModeをテスト用に上書きする良い方法が見つ
からず……
その他
Test, Shippingパッケージでは動作しません
● CPU負荷をキッチリ取りたい場合は厳しい……
その他
Test, Shippingパッケージでは動作しません
● 使用defineは下記で区切られています
○ #define
WITH_AUTOMATION_TESTS(WITH_DEV_AUTOMATION_TESTS ||
WITH_PERF_AUTOMATION_TESTS)
● 下記を弄れば使えるかもしれない……(未検証)
○ WITH_DEV_AUTOMATION_TESTS
■ →/Engine/Source/Programs/UnrealBuildTool/Configuration/UEBuildT
arget.cs : 2954
○ ただ、FuntionalTestingモジュールはDeveloper
その他
テストのBPとC++の違い
● BP版はレベルに配置しないと使えません
○ これはテスト専用の空レベルに配置する事で対処できます
その他
もっと
その他 - もっと
もしチームにプログラムに強い人が居るなら……
その他 - もっと
プロジェクトに即したロジックのテスト
● プレイヤーのアクションのテスト
○ コンボ
○ スキルの使用
● 自動プレイ機能
○ 通しプレイチェック
■ Automation Testの仕組み以外の実装ででも……
その他 - もっと
C++を使用してBPに出ていない内部情報を拾える
● マテリアルの内部情報
○ テクスチャの使用枚数
○ インストラクション数
○ Switch操作
● パーティクルシステム内部
○ 使用注意モジュールチェック
○ エミッター数
○ FixedBounds, Cutout使っているか
● Stat系
その他 - もっと
テスト結果をもっと分かりやすく……
● ログ形式だとやっぱり見辛い
○ xml等Excelとかで一覧化しやすいデータで出力を
その他 - もっと
テストの結果、エラーが出てたらSlackやメールに投げる
● ログをチェックして警告を出てたら担当者に投げる
○ を自動化。自分で調べて投げる手間を減らす
■ キャラクター系のテストならキャラクター班リーダーに
■ 背景データのメモリが大きければ背景班リーダーに
■ クラッシュしたらプログラム班に
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
作ってみたサンプルについて
こんな感じで作ってみました。
こんな機能でやってみました。
という一例です。
作ってみたサンプルについて
アセットの調査
作ってみたサンプルについて
● ディレクトリを指定して、その中のアセットを集めます
○ [Get Asset Registry] - [Get Assets by Path]
■ Recursive: 子ディレクトリも調べるか
作ってみたサンプルについて - アセットの調査
● 結果をFor Each Loopで回して、[Get Asset]でオブジェ
クトを取得します。
○ 後は調べたい形式にCastします。
下記はテクスチャを調べます
作ってみたサンプルについて - アセットの調査
● 後はそのオブジェクトで条件一致するか調べます
○ もし駄目な条件なら[Add Warning]等でデータ名と合わせてロ
グ出力します
作ってみたサンプルについて
レベルをチェックする場合
作ってみたサンプルについて - レベルをチェックする場合
● 既に配置されていてオブジェクトは存在するので、[Get
All Actor Of Class]で調べたいオブジェクトを拾ってきま
す
作ってみたサンプルについて - レベルをチェックする場合
● 後は返ってきたオブジェクトをCastしたりして調べます
作ってみたサンプルについて - レベルをチェックする場合
● 後は返ってきたオブジェクトをCastしたりして調べます
作ってみたサンプルについて - レベルをチェックする場合
● 中のComponentを調べたい場合は、
[Get Components by Class]等でオブジェクトの中にある
Componentのリストを拾ってきます
作ってみたサンプルについて
スクリーンショットを撮った方法
作ってみたサンプルについて - スクリーンショットを撮る方法
● 前述の通り、Functional Testの
[Take Automation Screenshot]は失敗する場合があり
ます……
作ってみたサンプルについて - スクリーンショットを撮る方法
● ですので、BPノードからコンソールコマンドでスクリーン
ショットを撮りました
○ [Execute Console Command]に”shot”を指定すると撮影出
来ます
■ エディターでF9押すのと同じ処理です
■ オプション
● SHOWUI
○ UMG, Slate等UIも撮影します。
○ UI要らない場合は消して下さい
● filename=<ファイル名>
○ 出力するファイル名
作ってみたサンプルについて - スクリーンショットを撮る方法
● “Saved/Screenshots/Windows” に出力されます
作ってみたサンプルについて
画面オプション
作ってみたサンプルについて - 画面オプション
● スクリーンショット撮影時に、絵だけではなく他の情報も
一緒に出力しています。
作ってみたサンプルについて - 画面オプション
● [Execute Console Command]で
○ stat scenerendering
■ 描画に掛かった時間や、画面に幾つ描画したか。の情報が表示できま
す
作ってみたサンプルについて - 画面オプション
● [Execute Console Command]で
○ stat memory
■ 各種何にどれだけ使ったかの使用メモリを出します
作ってみたサンプルについて - 画面オプション
● [Execute Console Command]で
○ stat none
■ さっきまでstat系の情報を消します
■ 撮影終わったら消して次の処理に
作ってみたサンプルについて - 画面オプション
● [Execute Console Command]で
○ viewmode LightComplexity(エディターからテスト時のみ)
■ 「ライト複雑度」に切り替えます
■ ライトが重なり過ぎてる=描画負荷高い所を表示します
● 青以外ならライトをずらしましょう
作ってみたサンプルについて - 画面オプション
● [Execute Console Command]で
○ viewmode QuadOverdraw(エディターからテスト時のみ)
■ 「Quad Overdraw」に切り替えます
■ そこに何枚ポリゴンを書いたか=重なってて重い、的な情報です
● Translucencyが一杯重なっていると緑→赤→白になります。
もくじ
● 自動テストとは
● 出来る事/出来そうな事
○ 自動テスト系の実例参考資料
● 自動テストの実行方法
○ エディターから実行
○ パッケージ版で実行
● 自動テストの作成方法
● その他
● 作ってみたサンプルについて
● 参考資料
参考資料
自動テスト系
● 自動化システムの概要 - 公式ドキュメント
○ https://docs.unrealengine.com/en-US/Programming/Automation
○ http://api.unrealengine.com/JPN/Programming/Automation/
● UE4 で自動テストを試してみる。 - 情報は力ではない
○ http://massa8080.hatenablog.com/entry/2018/12/19/001956
● [UE4] コマンドから自動テストを実行してみる - historia
○ http://historia.co.jp/archives/9805/
参考資料
自動テスト系の実例
● E4における大規模背景制作事例(データメンテナンス・大技設定
編 ) - 株式会社スクウェア・エニックス
○ https://www.slideshare.net/EpicGamesJapan/ue4-137253045
● UE4における自動プレイのポストモーテム - 株式会社スクウェア・
エニックス
○ https://www.slideshare.net/EpicGamesJapan/ue4-137253042
参考資料
自動テスト系の実例
● Automated Testing of Gameplay Features in 'Sea of Thieves'
- Rare
○ https://www.gdcvault.com/play/1026366/Automated-Testing-of-Gameplay-Featu
res
● Automated Testing at Scale in Sea of Thieves - Rare
○ https://www.unrealengine.com/ja/events/unreal-fest-europe-2019/automated-te
sting-at-scale-in-sea-of-thieves
参考資料
レギュレーション系
● [UE4] Texture GroupがTexture Streamingに与える影響 -
EGJ-Nori_Shinoyama
○ https://qiita.com/EGJ-Nori_Shinoyama/items/8b3c2e4e372f05e33476
● マテリアルとマテリアルインスタンスの仕組みと問題点の共有 -
Epic Games Japan: 篠山範明
○ https://www.slideshare.net/EpicGamesJapan/epic-games-japan-ue4dd/76
○
● UE4におけるエフェクトの基本戦略事例 後半 - 株式会社スクウェ
ア・エニックス
○ https://www.slideshare.net/EpicGamesJapan/ue4-138352671
参考資料
プロファイル系
● [UE4] CSV Profileを用いたパフォーマンス計測 -
EGJ-Ken_Kuwano
○ https://qiita.com/EGJ-Ken_Kuwano/items/a6c97a7eda8d69cae6d5
● [UE4] LLM (Low Level Memory Tracker)を使用したメモリトラッ
キング - donbutsu17
○ https://qiita.com/donbutsu17/items/dd410cd6ee53b0b348ca
● [UE4] Malloc Profiler/Memory Profiler2を使用したメモリトラッキ
ング - donbutsu17
○ https://qiita.com/donbutsu17/items/a72a282587390f43d12d
参考資料
プロファイル系
● Objコマンドによるオブジェクト解析 - donbutsu17
○ https://qiita.com/donbutsu17/items/dd9e00bee27d6868ed3d
参考資料
環境系
● [UE4] Slack連携してライトビルドの完了を通知する
○ http://historia.co.jp/archives/12054/
以上!

[UE4]自動テストでもっと楽したい!