🌍
翻訳チャレンジ CEDiL用_受託型開発会社が始める3Dアクションゲーム開発効率化のためのQA自動化へ道のり
この記事
CEDECは「直近の実績や経験が公開される場所」を個人的に
技術者向けに翻訳してみるーというコーナーです。
今回対象にするページ
SNSがOKになっている以下の画像の内容になります。
今回の範囲
自動負荷計測テスト(020) のスクショにある項目をプログラムで取得していきます。
fps
ここでのfps
fps...1秒間に実行されるフレーム数
以下のようなイメージになります。
FPSの計算
++frames;
float timeNow = Time.realtimeSinceStartup;
if (timeNow > lastInterval + updateInterval)
{
fps = (float)(frames / (timeNow - lastInterval));
frames = 0;
lastInterval = timeNow;
}
UIへの反映
fpsValueText.text = fps.ToString();
ソースコードでの取得個所
CPU処理時間
CPU...計算をしたり保存するときに、活躍してくれるチップ
ソースコード
CPU情報記録レコード処理
behaviourUpdateRecorder = Recorder.Get("BehaviourUpdate");
behaviourUpdateRecorder.enabled = true;
フレーム内でのCPU性能を取得
cpuNanoExec = behaviourUpdateRecorder.elapsedNanoseconds;
Render Thread Time
RenderThreadTime...描画にかかる時間。
ソースコード個所
初期化、値取得の準備
renderingRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Internal, "Camera.Render");
値取得
// render thread timeを取得
renderThreadTime = renderingRecorder.LastValue;
GPU処理時間
GPU...グラボと呼ばれているもの。
実行時間が長いと、載せているグラボで処理落ちしやすくなる
ソースコード個所
カメラの描画領域から情報を取得
// Cameraのレンダリング処理を計測用にCustomSamplerを作ります。
var customSampler = CustomSampler.Create("MainCamera.Render", true);
// そして、Recorderを取得してきます
var customSampleRecorder = customSampler.GetRecorder();
// Cameraのレンダリング処理全体をSampleします
customSampler.Begin();
Camera.main.Render();
customSampler.End();
取得処理
gpuValue = customSampleRecorder.gpuElapsedNanoseconds;
メモリ使用量(本当は物理メモリ使用量)
unity側で取得できるメモリの量を設定しました。
ソースコード個所
初期化、値取得の準備
totalAllocated = Profiler.GetTotalAllocatedMemoryLong();
作ったもの
毎フレームごとの数値の変化が見えるようにしました。
動画
パーティクルエフェクトを増やした例です。
実行時間の数値がふえていっています。
リポジトリ
最後に
今回の資料がCedecのスライド参考資料や、
「バーチャル世界で皆が歩いてかくつかないリッチな世界」
の参考になったら幸いです。
引用資料
CEDiL用_受託型開発会社が始める3Dアクションゲーム開発効率化のためのQA自動化へ道のり
unityにおけるFPSの計算資料
CPU及びGPU含めたリソース管理の公式ページ
unityの実行環境でdynamicResolutionが一部動かない環境の場合
GPU(グラボ)実行時間の取得参考箇所
Discussion