コンテンツにスキップ

UE5 SDK

Framedash UE5 SDK (C++ プラグイン) を使用して、パフォーマンステレメトリを自動収集する方法を説明します。

  • Unreal Engine 5.3 以上
  • C++ プロジェクト (Blueprints Only は非対応)

プラグインは Framedash UE5 SDK リポジトリ から入手します。Releases ページ から最新のリリース zip をダウンロードするか、公開ミラーをクローンします:

git clone https://github.com/crane-valley/framedash-ue5-sdk.git

その後、プロジェクトに追加します:

  1. プラグインを Plugins/Framedash ディレクトリに配置
  2. .uproject に追加:
{
"Plugins": [
{
"Name": "Framedash",
"Enabled": true
}
]
}
  1. Build.cs にモジュール依存を追加:
PrivateDependencyModuleNames.Add("Framedash");
  1. プロジェクトをリビルド

DefaultGame.ini に以下を追加すると、サブシステム起動時に自動で初期化されます:

[/Script/Framedash.FramedashSettings]
ApiKey=your-api-key
bAutoInitialize=True

オプションで EndpointUrlBuildIdSamplingRate も設定可能です:

[/Script/Framedash.FramedashSettings]
ApiKey=your-api-key
bAutoInitialize=True
EndpointUrl=https://ingest.framedash.dev/v1/events
BuildId=1.0.0
SamplingRate=1.0

これらの設定は Project Settings > Plugins > Framedash からも編集できます。

C++ から初期化コードを書く必要はありません。

設定ファイルを使用せず、コードから直接初期化することもできます:

#include "FramedashSubsystem.h"
void AMyGameMode::BeginPlay()
{
Super::BeginPlay();
if (auto* Subsystem = GetGameInstance()->GetSubsystem<UFramedashSubsystem>())
{
FString ApiKey = FPlatformMisc::GetEnvironmentVariable(TEXT("FRAMEDASH_API_KEY"));
Subsystem->InitializeTelemetry(ApiKey);
}
}

InitializeTelemetry には EndpointUrlBuildId のオプション引数もあります。CI 環境で便利です:

if (auto* Subsystem = GetGameInstance()->GetSubsystem<UFramedashSubsystem>())
{
FString ApiKey = FPlatformMisc::GetEnvironmentVariable(TEXT("FRAMEDASH_API_KEY"));
FString BuildId = FPlatformMisc::GetEnvironmentVariable(TEXT("CI_COMMIT_SHA"));
// EndpointUrl に空文字列を渡してデフォルト値を使用
Subsystem->InitializeTelemetry(ApiKey, TEXT(""), BuildId);
}

初期化が完了すると、以下のデータが自動的に収集されます:

  • FPS / Frame Timestat unit 相当のデータ
  • GPU Time — レンダリングパイプラインの各ステージ
  • Memory — 物理メモリ + テクスチャストリーミング
if (auto* Framedash = GetGameInstance()->GetSubsystem<UFramedashSubsystem>())
{
Framedash->Track(TEXT("player_death"), TEXT("Map01"), PlayerLocation);
}

カスタム属性・メトリクス付き

Section titled “カスタム属性・メトリクス付き”

追加のメタデータを付与する場合は TrackWithData を使用します:

if (auto* Framedash = GetGameInstance()->GetSubsystem<UFramedashSubsystem>())
{
TMap<FString, FString> Attributes;
Attributes.Add(TEXT("cause"), TEXT("fall_damage"));
TMap<FString, double> Metrics;
Metrics.Add(TEXT("health"), 0.0);
Framedash->TrackWithData(
TEXT("player_death"), TEXT("Map01"),
PlayerLocation, Attributes, Metrics);
}