🌍

翻訳チャレンジ CEDiL用_受託型開発会社が始める3Dアクションゲーム開発効率化のためのQA自動化へ道のり

2022/09/11に公開

この記事

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();

作ったもの

毎フレームごとの数値の変化が見えるようにしました。

動画

パーティクルエフェクトを増やした例です。

https://youtu.be/czbwlNSlK9o

実行時間の数値がふえていっています。

リポジトリ

https://github.com/sakuriver/Cedec2022ReferenceProject3DQAChallenge

最後に

今回の資料がCedecのスライド参考資料や、
「バーチャル世界で皆が歩いてかくつかないリッチな世界」
の参考になったら幸いです。

引用資料

CEDiL用_受託型開発会社が始める3Dアクションゲーム開発効率化のためのQA自動化へ道のり
https://cedil.cesa.or.jp/cedil_sessions/view/2591

unityにおけるFPSの計算資料

https://docs.unity3d.com/ScriptReference/Time-realtimeSinceStartup.html

CPU及びGPU含めたリソース管理の公式ページ

https://docs.unity3d.com/Manual/DynamicResolution.html

unityの実行環境でdynamicResolutionが一部動かない環境の場合

https://docs.unity3d.com/ScriptReference/Profiling.Recorder.html

GPU(グラボ)実行時間の取得参考箇所

https://docs.unity3d.com/ScriptReference/Profiling.Recorder-gpuElapsedNanoseconds.html

RenderingThreadTime取得時の参考資料

https://docs.unity3d.com/Manual/ProfilerCPU.html#:~:text=The CPU Usage Profiler A window that helps,spent rendering%2C animating%2C or in your game logic.

GitHubで編集を提案

Discussion