エディター内デバッグ テレメトリ リファレンス アーキテクチャ

このリファレンス アーキテクチャは、開発フェーズと少数ユーザーのケースを想定したものです。ゲームプレイ セッションからデータを収集し、それらをゲーム エンジン内 (この場合は Unreal Engine 4 または Unity Engine) で直接表示します。 迅速な応答時間が提供されるため、開発チームや QA チームは、テスト セッションの結果を取得するために待機する必要がなくなります。

この記事では、GitHub のこのサンプルで使用されているアーキテクチャについて説明します。 このリファレンス アーキテクチャのコードはガイダンスの例にすぎず、運用環境で使用するにはコードの最適化が必要な場合があることに注意してください。

Iエディター内デバッグ テレメトリの外観

アーキテクチャの図

Iエディター内デバッグ テレメトリ リファレンス アーキテクチャ

関連するサービス

  • Azure Event Hubs - 分析パイプライン向けにカスタマイズされたサービスで、構成や管理オーバーヘッドをほとんど必要とせず、簡単に使用できます。 イベントをリアルタイムに受信して処理することができます。
  • Azure Functions - シンプルな認証メカニズムを使いたいということと、データの処理方法や照会方法をカスタマイズしたいという理由で選択されました。
  • Azure Cosmos DB - データのスケーリングや保存をより高速な取り込みレートで行えるという理由で選ばれました。

ステップ バイ ステップの手順

データの取り込み

  1. クライアント デバイスから Azure Function を呼び出して、テレメトリ データを送信します。
  2. そのデータを検証し、Azure Event Hub に転送します。
  3. Azure Event Hub によって 2 番目の Azure Function がトリガーされ、データが個々の Azure Cosmos DB ドキュメントへと変換されます。
  4. Azure Function ターゲットから、テレメトリ データを使用して Azure Cosmos DB データベースに新しいドキュメントを追加します。

データの表示

  1. ゲーム エンジン内で、生成されたクエリが Azure Function に送信され、Azure Cosmos DB クエリへと変換されます。
  2. データが Azure Cosmos DB からプルされ、ビジュアライゼーション用にゲーム エンジンへと返されます。

ヒント

ダッシュボードでデータを視覚化したい場合は、Azure Cosmos DB データベースを Power BI にフックします。

デプロイ テンプレート

プロジェクトを Azure サブスクリプションにデプロイするには、次のボタンをクリックします。

この操作を実行すると、Azure サブスクリプションに対する telemetry_server.deployment.json ARM テンプレート ファイルのテンプレート デプロイがトリガーされ、必要な Azure リソースが作成されます。 これにより、Azure アカウントの料金が発生する場合があります。

Azure サービスの名前付け規則と制限事項をまとめたセクションが含まれる一般的なガイドライン ドキュメントを参照してください。

注意

ARM テンプレートの動作に興味がある場合は、このリファレンス アーキテクチャで利用されている各サービスの Azure Resource Manager テンプレートのドキュメントを参照してください。

ヒント

Azure Functions をローカル環境で実行するには、local.settings.json ファイルをこれらの同じアプリ設定で更新します。

実装の詳細

1 つの Azure Function アプリに上記すべての機能を含めて、同じホスティング プランを共有することができます。

取り込み関数

  1. 受信テレメトリ ペイロードを検証します
  2. データを、データ パイプラインの次のステージで想定される形式に変換します
  3. データを Azure Event Hub に送信します
  4. データが Azure Event Hub によって受け入れられた場合、202 を返します。

Event Hub トリガー関数

  1. イベント データ ペイロードを読み取ります
  2. 各イベントに対して個別の Azure Cosmos DB ドキュメントを作成します
  3. ドキュメントを Azure Cosmos DB にアップロードします

クエリ関数

  1. クライアントによって生成されたクエリを解析します
  2. Azure Cosmos DB の SQL 形式のクエリを生成します
  3. 結果を JSON オブジェクトでラップし、クライアントに返します

どの価格プランがニーズに対して適切かは、テレメトリ サービスをどれくらい使用するかや、同じ Azure Function アプリで他に何が実行されるかによって変わってきます。

最適化に関する考慮事項

Azure Cosmos DB TTL (Time To Live) を使用し、保存されたドキュメントがパージされるまでの期間を設定して、Azure Cosmos DB に自動的に保存された古いデータを失効させることができます。

HTTP のオーバーヘッドを減らすには、取り込みの Azure Function に送信されたイベントをクライアントでバッチ処理する必要があります。 バッチが大きい場合は、クライアント側で圧縮を使用することを検討してください。

ヒント

Event Hub への送信前にサーバー側でバッチを圧縮すると、スループット ユニットのコストを減らすことができます。 これは、イベントが複数のサービスで消費されている場合や、同じ名前空間に他の Event Hub がある場合に特に有効です。

その他のリソースとサンプル

高度なストリーミング集計のサポート

ウィンドウ化のサポートが必要な場合 (つまり、一定期間内に発生するイベントのサブセットに対して、セットベースの計算 (集計) やその他の操作を実行する必要がある場合) は、Azure Event Hub を Azure Cosmos DB に接続する Azure Function を、Azure Stream Analytics に置き換えることを検討してください。

Azure Stream Analytics は、イベント ストリームに関する高度な集計シナリオを追加するために使用できます。 たとえば、Azure Functions (ステートレス) では、イベント ストリームのウィンドウ化がネイティブ サポートされていません。

価格設定

Azure サブスクリプションをお持ちでない場合は、無料アカウント を作成して 12 か月間の無料サービスの利用を開始できます。 それらのサービスの制限を超えない限り、Azure 無料アカウントで無償で提供されているサービスに対して料金が発生することはありません。 Azure Portal または使用状況ファイルを通じて使用状況を確認する方法について説明します。

これらのリファレンス アーキテクチャの実行中に使用される Azure サービスのコストはユーザーが負担します。 その合計は使用状況によって異なります。 リファレンス アーキテクチャで使用されていた各サービスの価格は、Web ページで確認ください。

また、Azure の料金計算ツールを使用して、使用する予定の Azure サービスのコストを構成および見積もることもできます。 価格は概算であり、実際の価格の見積もりを意図したものではありません。 実際の価格は、購入日、支払い通貨、Microsoft との契約の種類によって異なります。 価格の詳細については、Microsoft の営業担当者にお問い合わせください。

こちらのガイドを参照すると、Azure 料金計算ツールの設定がゲーム タイトルでのテレメトリの実装とどのように関連するかがわかりやすくなります。