SlideShare a Scribd company logo
一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
2018/8/22
講演者名 黒河 優介
所属団体 Unity Technologies Japan
肩書・役職 Developer Relation Engineer
自己紹介
• 役職
• ユニティ・テクノロジーズ・ジャパン合同会社
エンタープライズコンサルティングデベロッパー
リレーションマネージャー/エンジニア
• 仕事内容
• 大規模プロジェクトのサポート業務
• プロジェクトに合う形で、パフォーマンスに関す
る提案等を行っている
まず初めに…
快適に動作するアプリケーションを作成するためには、
パフォーマンス計測を行いボトルネックとなる箇所を修
正や、デバッグを行いバグを修正していくことが重要に
なります。
Unityはパフォーマンス計測や、デバッグのための機能を
日々アップデートしています。
このセッションでは直近のアップデートを紹介し、皆様
の開発に役立てれば幸いです。
※テストの話はしません
本日のアジェンダ
• Profiler、デバッグ機能についてのおさらい
• 実機だけでも使えるパフォーマンス計測術
• Profiler、デバッグ機能関連のアップデート情報
Profiler、デバッグ機能おさらい
おさらい
• Unity Profiler
• Frame Debugger
• Consoleウィンドウ
• Script Debugging
• プラットフォーム毎のツール
おさらい
• Unity Profiler
• Frame Debugger
• Consoleウィンドウ
• Script Debugging
• プラットフォーム毎のツール
Unity Profiler
CPU/Rendering/Memoryなどの
パフォーマンス測定が出来ます。
Unity Profiler
画面上半分は各項目の推移グラフで、
下半分は選択した項目の詳細が表示されます
Unity Profiler
Timeline表示に切り替えて
別スレッドの処理も確認する事
が出来ます
Unity Profiler
Deep ProfileをONにすると、C#呼び出しで
深い階層も自動的に計測対象となります
(Editor上での実行時のみ有効)
Unity Profiler
Profile EditorをONにすると、Editorで
のC#処理が計測の対象となります。
Unity Profiler
ネットワークや有線ケーブルを利用して、
実機でのパフォーマンス計測も可能です
※要Development ビルド
Unity Profiler
Profilerに自分で定義した項目を載せる事が可能です
Unity Profiler
public class Sample : MonoBehaviour {
private CustomSampler sampler;
void Start () {
sampler = CustomSampler.Create("処理計測");
}
void Update () {
sampler.Begin();
// ..何か処理をします
sampler.End();
}
}
コードはこんな
感じです
豆知識
Editor⇔実機間では Sample名の文字列も含
まれているため、Profilerさえ繋げてしまえ
ば別プロジェクトのProfilingが出来ます。
※Unityのバージョン毎にデータフォーマットが変わるので
バージョンは合わせる必要があります
おさらい
• Unity Profiler
• Frame Debugger
• Consoleウィンドウ
• Script Debugging
• プラットフォーム毎のツール
Frame Debugger
Unityの描画処理を1ステップずつ確認出来ます。Shader
パラメーターも確認出来ますので、描画関連のデバッグ
に利用できます
おさらい
• Unity Profiler
• Frame Debugger
• Consoleウィンドウ
• Script Debugging
• プラットフォーム毎のツール
Consoleウィンドウ
Debug.Logの出力先のConsoleウィンドウ
です
Consoleウィンドウ
ネットワークや有線経由で実機と接続し
て実機上のログを出力する事が出来ます
(2017.1+)
おさらい
• Unity Profiler
• Frame Debugger
• Consoleウィンドウ
• Script Debugging
• プラットフォーム毎のツール
Script Debugging
Visual Studio等のIDE環境等を利用
してUnity Editor上で動作している
C# スクリプトのデバッグが出来ま
す。
Script Debugging
breakポイントを貼ったり、変数をウォッチしたりと
普通にデバッグが出来ます
Script Debugging
BackEndがMonoでかつ、
Script Debuggingを有効にして
いる場合には実機上で動いてい
るC# スクリプトのデバッグが
出来ます
Script Debugging
ネットワーク/もしくは 有線を
利用して、実機上で動いている
C#スクリプトのデバッグが出来
ます(Mono限定)
おさらい
• Unity Profiler
• Frame Debugger
• Consoleウィンドウ
• Script Debugging
• プラットフォーム毎のツール
プラットフォーム毎のツール
• PC/Android
• RenderDoc
• iOS
• Instruments
• OpenGLES Frame Debugger
• Android
• Systrace
• DS-5™ Streamline
• Snapdragon Profiler
• Mali Graphics Debugger
• GAPID
等々…
RenderDoc
描画の深いレベルでの
デバッグに使えます
Instruments
深いレベルでのCPUプロファ
イルが出来ます
OpenGLES Frame Debugger
深いレベルでの描画のデバッ
グ・プロファイルが出来ます
Systrace
CPUで動いている処理等が
確認出来ます
DS-5™ Streamline
ARM製のツールです。
CPUの様子等が確認出来ます
Snapdragon Profiler
描画のデバッグが出来ます。
チップセットがSnapdragonである必要があります。
Mali Graphics Debugger
描画のデバッグやプロファイ
ルが出来ます。GPUがMaliの
場合に利用できます
GAPID
Google製のGraphicsデバッグ
ツールです。画像付きでキャ
プチャーしてくれるので非常
に便利です。
https://unity3d.com/jp/learn/tutorials/topics/best-practices/android-profiling-tools
Android向けツールは、コマンドライン向け
SimplePerf、Intel Android向けツールなど
多々あります。
詳細は下記Webで
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
実機でも使えるパフォーマンス計測術
簡易的にパフォーマンス計測を日常的に行い、
大事にならないようにしておく必要があります。
日常的に目標とする端末でパフォーマンス上の
問題が起きていないか確認しましょう。
このような感じで実機上で視認できる形で
パフォーマンスを「視える化」しておくの
が大事です
そのために必要な機能として、実機上でも動作
するパフォーマンス計測の手法をお伝えいたし
ます。
実機でも使えるパフォーマンス計測術
• Time.realtimeSinceStartupを利用
• Time.realtimeSinceStartup + PlayerLoop(2018.1+)
• Recorder APIについて
• Memory情報の取得
• Profilerログデータ書き出し
実機でも使えるパフォーマンス計測術
• Time.realtimeSinceStartupを利用
• Time.realtimeSinceStartup + PlayerLoop(2018.1+)
• Recorder APIについて
• Memory情報の取得
• Profilerログデータ書き出し
Time.realtimeSinceStartupの利用
void Update(){
float startTime = Time.realtimeSinceStartup;
DoSomething();
float executeTime = Time.realtimeSinceStartup - startTime;
Debug.Log(string.Format("DoSomethingに{0}ms掛かりました",
executeTime * 1000.0f));
}
Time.realtimeSinceStartupはアクセスした瞬間に時間を取りに行
きます。そのため、計測する箇所の前後の差分を求める事で処理
時間が取れます。 Releaseビルドでも計測可能です
実機でも使えるパフォーマンス計測術
• Time.realtimeSinceStartupを利用
• Time.realtimeSinceStartup + PlayerLoop(2018.1+)
• Recorder APIについて
• Memory情報の取得
• Profilerログデータ書き出し
PlayerLoopも活用
Unity 2018.1より追加されたPlayerLoopを利用すること
で、MainLoop中に行われる特定のUnity処理を省いたり、
Unity処理の間に独自のC#処理を差し込むことが可能で
す。
これと Time.realtimeSinceStartupを組み合わせて、更に
情報をとることが可能です
PlayerLoopについて
MonoBehaviour
Updateを処理
Animatorの処理
MonoBehaviour
LateUpdateを処理
Etc....
PlayerLoopについて
MonoBehaviour
Updateを処理
Animatorの処理
MonoBehaviour
LateUpdateを処理
Etc....
LateUpdateは全くないので、この部分の処理を
全て省くという事が出来たり…
PlayerLoopについて
MonoBehaviour
Updateを処理
Animatorの処理
MonoBehaviour
LateUpdateを処理
Etc....
Animatorの処理の前後に特定のC#スクリプトを
差し込むこともできます。
PlayerLoopについて
PlayerLoopで設定できるステップはかな
り種類が多いです。
どんな種類があるかはProfielrのトップ
階層を見ると何となくわかります。
PlayerLoopも活用
MonoBehaviour
Updateを処理
Animatorの処理
MonoBehaviour
LateUpdateを処理
Etc....
Animatorの処理の前後で
Time.realtimeSinceFromStartup を取っておけば、
Animatorの処理時間をランタイムで計測出来ます!
PlayerLoopも活用
https://github.com/wotakuro/MainLoopProfilingSample
PlayerLoopも活用
水色:スクリプト処理
赤色:Animator関連処理
黄緑:描画関係
紫色:その他
それぞれの処理時間を表します
https://github.com/wotakuro/MainLoopProfilingSample
実機でも使えるパフォーマンス計測術
• Time.realtimeSinceStartupを利用
• Time.realtimeSinceStartup + PlayerLoop(2018.1+)
• Recorder APIについて
• Memory情報の取得
• Profilerログデータ書き出し
Recorder APIについて
Profilerに載っている名前を指定して、そこに掛かった
処理時間をRuntime上で取得することが出来ます
Recorder APIについて
Recorder recorder = Recorder.Get("Camera.Render");
Debug.Log(string.Format(“{0}ms ({1} Calls)",
recorder.elapsedNanoseconds * 0.00001f),
recorder.sampleBlockCount);
Recorder API で Profilerに表示される項目を取得できます。
※ただし全Threadでの累計処理時間のみ取得可能です
Recorder API について
「Camera.Renderer」に 5.94ms(3.13 + 2.81)で2回呼び出しが
あったという情報が取得できます
先ほどのMainLoopとうまく組み合わせて
…
Camera.Renderの合計時間 - Main Thread側の描画処理時間で
RenderThreadの処理負荷が概算できます
実機でも使えるパフォーマンス計測術
• Time.realtimeSinceStartupを利用
• Time.realtimeSinceStartup + PlayerLoop(2018.1+)
• Recorder APIについて
• Memory情報の取得
• Profilerログデータ書き出し
Memory情報の取得
• Profiler APIを利用して概要のざっくり把握
• Resources APIを利用して 読み込んでるアセットを一覧で把握
Profiler APIを使用して取得
• Managed Memoryの使用状況
• Profiler.GetMonoHeapSizeLong
• Profiler.GetMonoUsedSizeLong
• Unityが確保したメモリの使用状況
• Profiler.GetRuntimeMemorySizeLong
• Profiler.GetTotalReservedMemoryLong
• Profiler.GetTotalUnusedReservedMemoryLong
読み込んでいるアセット一覧を取得
Resources.FindObjectsOfTypeAllを利用すること
で、実行中にメモリ上にあるアセットを列挙す
ることが可能です。
※Editor上で行った場合は、Editor実行時に読み込んだアセットも列
挙されてしまうため、実機上で行う必要があります
読み込んでいるアセット一覧を取得
Texture2D[] textures =
Resources.FindObjectsOfTypeAll<Texture2D>();
Mesh[] meshes =
Resources.FindObjectsOfTypeAll<Mesh>();
AudioClip[] audioClips =
Resources.FindObjectsOfTypeAll<AudioClip>();
AnimationClip[] animationClips =
Resources.FindObjectsOfTypeAll<AnimationClip>();
メモリに読み込んだアセット一覧の取得が上記のように出来ます
実機でも使えるパフォーマンス計測術
• Time.realtimeSinceStartupを利用
• Time.realtimeSinceStartup + PlayerLoop(2018.1+)
• Recorder APIについて
• Memory情報の取得
• Profilerログデータ書き出し
Profilerログデータ書き出し
string logfile = Path.Combine(Application.persistentDataPath,
"profiler.log");
Profiler.logFile = logfile;
Profiler.enableBinaryLog = true;
Profiler.enabled = true;
Profilerを内部的に動かし、ログファイルとして結果を保存し
始めます。止めるときは、下記呼び出しをします
「Profiler.enabled = false;Profiler.logFile = null;」
Profilerログデータ書き出し
保存したログファイルは ProfilerのLoadで読み込めます。
※1.Androidならば「adb pull ファイルパス」という形でコマンドライ
ンでPCからログファイル取得できます。
※2.iOSの場合、XCode上の「info.plist」を編集することで、iTunes
からログファイルへのアクセスが可能になります。
Profilerログデータ書き出し
ログファイル自体には、ログ書き出しを開始してからの
全てのフレームが保存されていますが、表示側の問題で
300フレーム分しか表示されません…
300フレーム問題を解決するために専
用のEditor拡張を作成しました。
リポジトリ https://github.com/wotakuro/ProfilerBinarylogSplit
Profilerログデータ書き出し
アップデート情報
アップデート情報
• 実機上でのProfiler動作の高速化(2017.3+)
• 実機上でのDeepProfiling (2017.3+)
• User Threadへの対応(2017.3+)
• Native Plugin Callbackへの対応(2018.2+)
• IL2CPPでのScript Debugging(2018.2+)
• 新しいMemory Profiler(2018.3+)
アップデート情報
• 実機上でのProfiler動作の高速化(2017.3+)
• 実機上でのDeepProfiling (2017.3+)
• User Threadへの対応(2017.3+)
• Native Plugin Callbackへの対応(2018.2+)
• IL2CPPでのScript Debugging(2018.2+)
• 新しいMemory Profiler(2018.3+)
実機上でのProfiler動作の高速化
• 2017.3のタイミングで 実機⇔Editor間での通信フォー
マットから見直し、実機上で動作するProfilerの負荷が
下がりました
• 1フレーム毎に全てのSample名を送っていたのをやめ、前のフ
レームで送っていた場合は、Sample名を送らないようにしまし
た
• 実機側で集計処理を行って結果をEditorに送信する実装になって
いましたが、新しくEditor側で集計するようにしました
2017.3以前では文字列を都度送ってます
1フレーム目 2フレーム目
1フレーム毎にSample名の文字列情報を含む全ての情報を含
んでいるため、巨大なデータをEditorと実機の間でやり取り
していました
BehaviourUpdate 2ms
Player.Update 1ms
Enemy.Update 0.5ms
Bullet.Update 0.5ms
Memoryや
Rendering等の情報
BehaviourUpdate 1.8ms
Player.Update 0.9ms
Enemy.Update 0.4ms
Bullet.Update 0.5ms
Memoryや
Rendering等の情報
2017.3以降では文字列を都度送りません
1フレーム目
Sample名とID(int)がセットになった辞書を送っておき、
以降は IDベースでやり取りします
0:BehaviourUpdate
1:Player.Update
2:Enemy.Update
3:Bullet.Update
Memoryや
Rendering等の情報
Sampleの情報
Dictonary 2フレーム目
Memoryや
Rendering等の情報
Sampleの情報
集計処理について
BehaivourUpdate
BeginSample
起動から 1000ms
BehaivourUpdate
End
起動から1002ms
Player.Update
BeginSample
起動から 1000ms
Player.Update
EndSample
起動から1001ms
Enemy.Update
BeginSample
起動から 1001ms
Enemy.Update
EndSample
起動から1001.5ms
Bullet.Update
BeginSample
起動から1001.5ms
Bullet.Update
EndSample
起動から1002ms
Thread毎にBeginSample/EndSampleが発生した
タイミングでキューにデータを溜めていきます
集計処理について
BehaivourUpdate
1000ms から開始して 2ms掛かった
以降の3つを呼び出している
Player.Update
1000msから開始して 1ms掛かった
呼び出し先なし
Enemy.Update
1001msから開始して 0.5ms掛かった
呼び出し先なし
Bullet.Update
1001.5msから開始して 0.5ms掛かった
呼び出し先なし
Profilerに表示するために
先のイベントを集計して
このようなデータに変換
する必要があります
集計処理について
BehaivourUpdate
BeginSample
起動から 1000ms
BehaivourUpdate
End
起動から1002ms
Player.Update
BeginSample
起動から 1000ms
Player.Update
EndSample
起動から1001ms
Enemy.Update
BeginSample
起動から 1001ms
Enemy.Update
EndSample
起動から
1001.5ms
Bullet.Update
BeginSample
起動から
1001.5ms
Bullet.Update
EndSample
起動から1002ms
BehaivourUpdate
1000msから開始して 2ms掛かった
以降3つを呼び出している
Player.Update
1000msから開始して 1ms掛かった
呼び出し先はない
Enemy.Update
1001ms から開始して 0.5ms掛かった
呼び出し先はない
Bullet.Update
1001.5msから開始して0.5ms掛かった
呼び出し先はない
この集計処理を Editor側で受け持つように
し、実機上では上のデータをそのまま転送
するようにしました
豆知識
2017.3以降では API ”Profiler.logFile”を利用して書き込ん
だデータと、Profiler Window上でSaveしたデータは一致
しなくなりました。
”Profiler.logFile”は集計前の形式のデータなのに対して、
Profiler Window上でSaveするデータは集計後のデータだ
からです。
アップデート情報
• 実機上でのProfiler動作の高速化(2017.3+)
• 実機上でのDeepProfiling (2017.3+)
• User Threadへの対応(2017.3+)
• Native Plugin Callbackへの対応(2018.2+)
• IL2CPPでのScript Debugging(2018.2+)
• 新しいMemory Profiler(2018.3+)
実機上でのDeep Profiling
これまでは実機上でのDeepProfilingは出来ませんでしたが、
引数に「-deepprofiling」を渡して実行することで、実機上でも
DeepProfilingが可能になりました
※.Net 4.x系で Mono限定
Androidでの引数渡し
Androidでは下記のようなadb コマンドを利用する事で引数を指定し
てアプリを実行できます
adb shell am start -n [パッケージ名]/ [アクティビティ名] -e “unity -deepprofiling"
例:adb shell am start -n com.unity.test/com.unity3d.player.UnityPlayerActivity -e “unity -deepprofiling"
アップデート情報
• 実機上でのProfiler動作の高速化(2017.3+)
• 実機上でのDeepProfiling (2017.3+)
• User Threadへの対応(2017.3+)
• Native Plugin Callbackへの対応(2018.2+)
• IL2CPPでのScript Debugging(2018.2+)
• 新しいMemory Profiler(2018.3+)
User Threadへの対応
User Threadへの対応
※2018.3から C#で作成したThreadは自動的に登録されるようになります
Thread th = new Thread(ThreadExec);
th.Start();
static void ThreadExec(){
CustomSampler sampler = CustomSampler.Create("Exec");
Profiler.BeginThreadProfiling("User","DoSomething");
while (flag){
sampler.Begin();
Exec(); // .. 何か処理する
sampler.End();
}
Profiler.EndThreadProfiling();
}
アップデート情報
• 実機上でのProfiler動作の高速化(2017.3+)
• 実機上でのDeepProfiling (2017.3+)
• User Threadへの対応(2017.3+)
• Native Plugin Callbackへの対応(2018.2+)
• IL2CPPでのScript Debugging(2018.2+)
• 新しいMemory Profiler(2018.3+)
2018.2から導入されました
利用するには
Editor/Data/PluginAPI/IUnityProfilerCallbacks.hをinclude
します。
※ヘッダーにサンプルコードもあります
Native Plugin Callbackへの対応
Native Plugin Callbackへの対応
BehaivourUpdate
BeginSample
起動から 1000ms
BehaivourUpdate
End
起動から1002ms
Player.Update
BeginSample
起動から 1000ms
Player.Update
EndSample
起動から1001ms
Enemy.Update
BeginSample
起動から 1001ms
Enemy.Update
EndSample
起動から
1001.5ms
Bullet.Update
BeginSample
起動から
1001.5ms
Bullet.Update
EndSample
起動から1002ms
これらのイベントが呼び出されたときにNative Pluginへ
コールバックさせるインターフェースが追加されました
Native Plugin Callbackへの対応
NativePlugin内でProfilerのタイムライン
相当のデータを構築することが出来ます
Native Plugin側でデータを保存して、
それを表示するツールを作れば独自の
Profilerも作成出来ます
Native Plugin Callbackの利用例
https://github.com/Over17/UnitySystracePlugin
Unity Profilerから取得した情報を
AndroidのSystraceに載せています
Unity Profilerから取得した情報を
AndroidのSystraceに載せています
Native Plugin Callbackの利用例
https://github.com/Over17/UnitySystracePlugin
python [android-sdkパス]/platform-tools/systrace/systrace.py --time=5 -o output.html -a com.unity.sample[アプリのBundleID]
上記のようなコマンドで取得することが可能です
アップデート情報
• 実機上でのProfiler動作の高速化(2017.3+)
• 実機上でのDeepProfiling (2017.3+)
• User Threadへの対応(2017.3+)
• Native Plugin CallBackへの対応(2018.2+)
• IL2CPPでのScript Debugging(2018.2+)
• 新しいMemory Profiler(2018.3+)
IL2CPP でのScript Debugging
IL2CPPでビルドしたアプリ
ケーションに対しても、C#の
コードレベルでデバッグが可能
です
IL2CPP でのScript Debugging
• 2018.2から導入されました
• PC/iOS/Android/Consoleゲーム機に入ってます
(Xbox Oneは2018.3に入る予定です)
• 「.Net 4.x Equivalement」にのみ対応しています
※Processにアタッチしてからbreakpointを認識するまでに10秒ほどのラグがあります。
1度認識してしまえば、その後のレスポンスは早いです
アップデート情報
• 実機上でのProfiler動作の高速化(2017.3+)
• 実機上でのDeepProfiling (2017.3+)
• User Threadへの対応(2017.3+)
• Native Plugin Callbackへの対応(2018.2+)
• IL2CPPでのScript Debugging(2018.2+)
• 新しいMemory Profiler(2018.3+)
新しいMemoryProfiler
• Memoryの計測ツールの現状
• Unity標準搭載
• UnityのBuilt-In Profiler
• 拡張機能系
• Memory Profiler
• Memory Profiler Extension
• Memory Profiler Advanced( PerfAssist )
Unity標準のMemoryProfiler
リアルタイムでメモリのサマリー情報が
確認出来る Simpleモード
Unity標準のMemoryProfiler
メモリのsnapshotをとって、
その時点でのデータを詳細に
閲覧できるDetailedモード
[拡張系] Memory Profiler
https://bitbucket.org/Unity-Technologies/memoryprofiler にて配布
メモリのsnapshotをとって、
その時点でのデータを見やす
くした Editor拡張です
[拡張系] Memory Profiler Extention
https://github.com/robertoardila/support-unity-memoryprofiler にて配布
IL2CPPビルドが必要ですが、
依存関係がグラフ表示された
りする Memory Profilerです
[拡張系] Memory Profiler Advanced
https://github.com/GameBuildingBlocks/PerfAssist/ にて配布
PA_ResourceTrackerという名前で配布されていた
MemoryProfiler。リスト化されており見やすいです
Memory Profiler使い分け大変…
大体標準機能として入っていない
…
新しいMemory Profilerを開発中
• 2018.3で alpha previewとして公開予定
• PackageManagerで配布を予定
• エンジン側のMemory Allocatorにも手を加えて、これ
まで取得できなかったデータも取れるようにします
新しいMemoryProfiler
ざっくり見る
Tree表示
新しいMemoryProfiler
メモリの状況確認
出来る
Memory Map表示
新しいMemoryProfiler
リスト表示
新しいMemoryProfiler
複数のsnapshotを
比較するDiff
新機能についてもデバッグ/計測のための機能
もセットで開発をしています
RM Profilerの話
• 2018.2から提供されるパッケージ
「ResourceManager」向けに作成されたProfiler
Load/UnloadしたResourceの確認が
出来ます
Entity Debuggerの話
• 2018.1から提供される
「Entity Component System」向けに作成された
Debugger
動作しているComponentSystemを
確認出来ます
最後に
• より良いパフォーマンスを出すには、まずは計測か
ら!
• UnityのProfiler/Debugのための機能は随時アップデート
しております。
• 今回は直近のアップデートを紹介しましたが、まだま
だProfilerではアップデートの予定があるので今後も注
目してください

More Related Content

PDF
Unityでパフォーマンスの良いUIを作る為のTips
PDF
UE4でマルチプレイヤーゲームを作ろう
PDF
UniRx の1歩目
PDF
Unity開発で使える設計の話+Zenjectの紹介
PDF
Unityアニメーションシステムの 今と未来の話
PDF
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
PDF
UE4における大規模背景制作事例 最適化ワークフロー編
Unityでパフォーマンスの良いUIを作る為のTips
UE4でマルチプレイヤーゲームを作ろう
UniRx の1歩目
Unity開発で使える設計の話+Zenjectの紹介
Unityアニメーションシステムの 今と未来の話
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
UE4における大規模背景制作事例 最適化ワークフロー編

What's hot (20)

PDF
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
PDF
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
PDF
UE4におけるキャラクタークラス設計
PDF
PPTX
UE4のためのより良いゲーム設計を理解しよう!
PDF
猫でも分かるUE4.22から入ったSubsystem
PPTX
なぜなにリアルタイムレンダリング
PDF
UniTask入門
PPTX
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
PDF
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
PPTX
UniRxでMV(R)Pパターン をやってみた
PDF
GPU最適化入門
PDF
UE4で作成するUIと最適化手法
PDF
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
PDF
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
PDF
UE4における大規模レベル実装ワークフローとブループリント活用事例
PDF
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
PDF
UE4におけるエフェクトの基本戦略事例 前半
PDF
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
UE4におけるキャラクタークラス設計
UE4のためのより良いゲーム設計を理解しよう!
猫でも分かるUE4.22から入ったSubsystem
なぜなにリアルタイムレンダリング
UniTask入門
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
UniRxでMV(R)Pパターン をやってみた
GPU最適化入門
UE4で作成するUIと最適化手法
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
UE4における大規模レベル実装ワークフローとブループリント活用事例
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
UE4におけるエフェクトの基本戦略事例 前半
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
Ad

Similar to 【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術 (13)

PPTX
"Profle-Driven Development in core parts of a game engine" CEDEC 2020
PDF
Unity2018/2019における最適化事情
PDF
Unityティーチャートレーニングデイ -認定プログラマー編-
PDF
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
PPTX
Unityプロファイラについて
PPTX
HoloLens参考書読書会 vol9
PPTX
UE4におけるLoadingとGCのProfilingと最適化手法
PDF
【Unite Tokyo 2019】開発から運用まで、デベロッパーをサポートするUnity Services
PDF
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
PPTX
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
PPTX
KC3_Room2_9_6
PDF
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
PDF
【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~
"Profle-Driven Development in core parts of a game engine" CEDEC 2020
Unity2018/2019における最適化事情
Unityティーチャートレーニングデイ -認定プログラマー編-
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Unityプロファイラについて
HoloLens参考書読書会 vol9
UE4におけるLoadingとGCのProfilingと最適化手法
【Unite Tokyo 2019】開発から運用まで、デベロッパーをサポートするUnity Services
【GTMF2018OSAKA】ハードウェアの性能を活かす為の、Unityの新しい3つの機能
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
KC3_Room2_9_6
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~
Ad

More from Unity Technologies Japan K.K. (20)

PDF
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
PDF
UnityのクラッシュをBacktraceでデバッグしよう!
PDF
Unityで始めるバーチャルプロダクション
PDF
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
PDF
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
PDF
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
PDF
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!
PDF
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
PDF
Unity教える先生方注目!ティーチャートレーニングデイを体験しよう
PDF
「原神」におけるコンソールプラットフォーム開発
PDF
FANTASIANの明日使えない特殊テクニック教えます
PDF
インディーゲーム開発の現状と未来 2021
PDF
建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】
PDF
Burstを使ってSHA-256のハッシュ計算を高速に行う話
PDF
Cinemachineで見下ろし視点のカメラを作る
PDF
徹底解説 Unity Reflect【開発編 ver2.0】
PDF
徹底解説 Unity Reflect【概要編 ver2.0】
PDF
Unityティーチャートレーニングデイ -認定3Dアーティスト編-
PDF
Unityティーチャートレーニングデイ -認定アソシエイト編-
PDF
今だから聞きたい!Unity2017/18ユーザーのためのUnity2019 LTS基礎知識
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
UnityのクラッシュをBacktraceでデバッグしよう!
Unityで始めるバーチャルプロダクション
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
Unity教える先生方注目!ティーチャートレーニングデイを体験しよう
「原神」におけるコンソールプラットフォーム開発
FANTASIANの明日使えない特殊テクニック教えます
インディーゲーム開発の現状と未来 2021
建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】
Burstを使ってSHA-256のハッシュ計算を高速に行う話
Cinemachineで見下ろし視点のカメラを作る
徹底解説 Unity Reflect【開発編 ver2.0】
徹底解説 Unity Reflect【概要編 ver2.0】
Unityティーチャートレーニングデイ -認定3Dアーティスト編-
Unityティーチャートレーニングデイ -認定アソシエイト編-
今だから聞きたい!Unity2017/18ユーザーのためのUnity2019 LTS基礎知識

【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術