SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Unity で実装する
エイジングテストのお話
目次
1. メリット
2. 作ったエイジングテスト
3. 実装方法
4. その他
メリット
端末の発熱がわかる!
アプリの発熱はやっぱり気になる
エイジングテストして発熱が少ないと安心できる
メモリリークが見つかる!
よくある破棄処理の実装漏れを見つけられる
マテリアルの破棄漏れ
イベントの解除漏れ
アセットバンドルの解放漏れ
修正後もアプリを端末にインストールしたら
エイジングテストして放置するだけ確認可能
特定ケースのエラーが見つかる!
リソースが大量にあるほど潜在的なバグが増える
「このクエストでエラーが発生した」
「この装備を付けるとエラーが出た」
「このキャラで戦闘を開始するとエラー」
大量のリソースをすべてデバッグしなくても
エイジングテストすれば不具合を見つけられる
どれだけ長時間遊べるかわかる!
長時間プレイし続けて
問題が起きないかどうかが調査できる
自分が関わった Unity プロジェクトでは
タイムスケールを 8 倍速にして
72 時間(3 日間)放置し続けても正常に動作した
単純計算で 24 日間はアプリを遊び続けられる
余った時間を有効に使える!
デバッグの時間を削減できるので
ゲームのブラッシュアップに
時間を割くことが可能になる
家に帰れる
エイジングテストのメリットまとめ
端末の発熱がわかる!
メモリリークが見つかる!
特定ケースのエラーが見つかる!
どれだけ長時間遊べるかわかる!
余った時間を有効に使える!
作ったエイジングテスト
作ったエイジングテストの種類
メインストーリー
フリーバトル
チュートリアル
メニュー遷移
装備変更
エイジングテストの始め方
サーバ接続先選択画面で「オフライン」を選んで
自動テストボタンを選ぶだけ
エイジングテストの制限
通信環境に依存してテストが止まらないように
オフラインモードでのみテスト可能
倍速設定でテストを効率化
タイムスケールを変更することで
少ない時間でたくさんのテストを行う
Android だと 4 倍速、iOS だと 8 倍速推奨
速くしすぎると原因不明のハングやクラッシュが発生
ランダムな組み合わせチェック
テスト中はランダムにデータを変更することで
リソースの組み合わせチェックを実現
クエスト
ステージ
デッキ
装備品
オプション(描画品質や音響効果)
Slack と連携して結果を可視化
1 つのクエストをクリアするたび
Slack に結果が送信される
Slack に送信するデータ
何回目のクエストか
最後にプレイしたクエストの ID
プレイ時間
最大使用メモリ
Shader、Mesh、Animator の使用数と差分リスト
Slack に結果を送信するメリット
メモリ使用量や増加メモリの内容が可視化される
何時間プレイできているか、
どれだけメモリを使えるかがわかる
Slack に通知が来なくなったら
アプリが強制終了したということがわかる
最後に送られてきた結果を見れば
エラーの原因を調査しやすい
作ったエイジングテストまとめ
5 種類のエイジングテストを実装
テスト開始ボタンを押すだけで実行可能
倍速設定により短い時間で大量にテスト
組み合わせチェックを実現
Slack と連携してテスト結果を可視化
実装方法
Q. どうやって実装している?
有料アセット?
外部プラグイン?
ネイティブ機能?
スクリプト言語?
A. if 文
エイジングテストするかどうかを管理する
グローバルなクラスを作成して
public static class TestFlag
{
// メインストーリーをテストする場合 true
public static bool IsMainStory;
}
アプリ起動時にテストボタンが押されたら
テストフラグを立てるようにして
// ボタンが押されたらフラグを立てる
buttonUI.mRelease = () => TestFlag.IsMainStory = true;
各メニュー画面に、フラグが立っていたら
自動で画面遷移する処理を記述するだけ
public class HomeScene : MonoBehaviour
{
public UIButtonEvent m_okButtonUI = null;
private void Awake()
{
// フラグが立っていたら
if ( TestFlag.IsMainStory )
{
// OK ボタンが押された時の処理を呼び出す
OnReleased();
return;
}
m_okButtonUI.mReleased = OnReleased;
}
...
基本これだけ
ゲーム本編は?
自分が関わった Unity プロジェクトでは
もとから「オートモード」の機能が存在していたので
フラグが立っていたらオートモードの機能を有効化
if ( TestFlag.IsMainStory )
{
StartAutoMode();
}
組み合わせチェックは?
デッキや装備品は
下記のように適当にランダムに設定
var cardList = MngCardData.List // 全カードを
.Shuffle() // ランダムに並べ替えて
.Take( 5 ) // 5 枚取り出して
.ToArray() // 配列にして
;
deckData.cardList = cardList; // デッキに設定する
画面遷移時の注意
画面遷移時は適度に遅延させないと
早すぎて何が起きているかわからないので注意
// フラグが立っていたら
if ( TestFlag.IsMainStory )
{
// 1 秒後に OK ボタンが押された時の処理を呼び出す
DelayCall( 1.0f, OnReleased );
return;
}
エイジングテストの実装方法まとめ
アセットやプラグインがなくても if 文で実装可能
エイジングテストできる環境を作ること
が大切なので、実装手段はなんでも良い
1 日で大幅にデバッグコストを削減できる
その他
購入したもの
多ポート USB 充電器
https://goo.gl/fGTpC3
複数端末で長時間エイジングテストできるように
おわり

Contenu connexe

Tendances

Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
はじめてのAI~ 愛のあるAIを作ろう
はじめてのAI~ 愛のあるAIを作ろうはじめてのAI~ 愛のあるAIを作ろう
はじめてのAI~ 愛のあるAIを作ろうMasahiko Nakamura
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略Haruki Yano
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!com044
 
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみよう【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみようUnity Technologies Japan K.K.
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術Unity Technologies Japan K.K.
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...エピック・ゲームズ・ジャパン Epic Games Japan
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説Unity Technologies Japan K.K.
 

Tendances (20)

猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
はじめてのAI~ 愛のあるAIを作ろう
はじめてのAI~ 愛のあるAIを作ろうはじめてのAI~ 愛のあるAIを作ろう
はじめてのAI~ 愛のあるAIを作ろう
 
Epic Online Services でできること
Epic Online Services でできることEpic Online Services でできること
Epic Online Services でできること
 
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
 
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
 
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
 
猫でも分かる UE4の新しいサンプル「Action RPG」について
猫でも分かる UE4の新しいサンプル「Action RPG」について猫でも分かる UE4の新しいサンプル「Action RPG」について
猫でも分かる UE4の新しいサンプル「Action RPG」について
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
 
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみよう【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
 
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow) UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
 
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMERMetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
 
UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編) UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編)
 

Plus de Shota Baba

【Visual Studio】開発効率を上げる25個の拡張機能
【Visual Studio】開発効率を上げる25個の拡張機能【Visual Studio】開発効率を上げる25個の拡張機能
【Visual Studio】開発効率を上げる25個の拡張機能Shota Baba
 
Unity エディタ拡張
Unity エディタ拡張Unity エディタ拡張
Unity エディタ拡張Shota Baba
 
知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編Shota Baba
 
知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編Shota Baba
 
知って得するUnity
知って得するUnity知って得するUnity
知って得するUnityShota Baba
 
知って得するC#
知って得するC#知って得するC#
知って得するC#Shota Baba
 

Plus de Shota Baba (6)

【Visual Studio】開発効率を上げる25個の拡張機能
【Visual Studio】開発効率を上げる25個の拡張機能【Visual Studio】開発効率を上げる25個の拡張機能
【Visual Studio】開発効率を上げる25個の拡張機能
 
Unity エディタ拡張
Unity エディタ拡張Unity エディタ拡張
Unity エディタ拡張
 
知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編
 
知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編
 
知って得するUnity
知って得するUnity知って得するUnity
知って得するUnity
 
知って得するC#
知って得するC#知って得するC#
知って得するC#
 

Unity で実装するエイジングテストのお話