UDN
Search public documentation:

InstrumentingGameStatisticsJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

ゲーム統計データの収集

ドキュメント概要: このドキュメントは、統計データ収集をゲームにうまく追加するのに必要な構造、機能、手順を詳細に記述しています。

ドキュメントの変更ログ: 最初のバージョンは、 Josh Markiewicz により 2009 年 5 月 11 日に作成。 更新者 Jeff Wilson 。

概観

エンジンで統計データを集めるということは、ゲーム開発を通してプレイ セッション中に、ゲームデザイナーにキャプチャされた有用なデータを提供してくれるということです。これは、柔軟で、素早く、徹底的でなければなりません。「柔軟」は、デザイナーのニーズとともに素早く変化することであり、「素早く」とは、ゲームプレイを乱さずにリアルタイムでたくさんのデータをキャプチャできるということであり、「徹底的」とは、履歴との比較とデータ マイニングのことです。そのためにシステムは、バッファされた I/O とバージョニングのサポートを持つディスクにストリームされた軽量級のデータ構造を使用します。データがキャプチャされ、またはその形式が変更されたにもかかわらず、より古いファイルが常に読み取り可能であるように努力がなされました。

ゲームプレイ セッションは 2 度と同じではないので、ファイル形式は、データのストリーミングをいかなる順序でもサポートしなければなりません。これは、以下で定義されます。

データを一度ある程度集めたら、 ゲームプレイ統計ビジュアライザ リファレンス に進んでください。

まとめ

コードの計器化がどのように動作するかの例は、 UTGame ソース コードを参照してください。

計器化チェックリスト:

  • 派生 GameInfo クラス内のゲームプレイ統計変数を宣言します。
  • ゲームプレイ セッションのロギングの開始と停止をします。
    • 派生 GameInfo クラスの PostBeginPlay() 中に、書き込みクラスのインスタンスを作成します。
      • UTGame.uc の PostBeginPlay() でボイラープレート コードを切り取り/貼り付けします。
    • ゲームのデザインによって、!PostBeginPlay() で、または StartMatch() でロギングを開始します。
    • 通常 EndLogging() 関数でロギングを終了します。
      • UTGame.uc の EndLogging() でボイラープレート コードを切り取り/貼り付けします。
  • エンジンに含まれていないカスタム イベントはすべて、派生 GameplayEventsWriter クラス内の SupportedEvents 配列に追加されなければいけません。
  • ロギングに使用される各 .uc 内に GameStats.uci を必ず含めてください。
    • ファイルを派生 GameInfo.uc ファイルの中に含める際、以下の方法で追加してください。
               `define GAMEINFO(dummy)
               `include(UTGame\UTStats.uci);
               `undefine(GAMEINFO)
               
      これは、!WorldInfo へのアクセスを必要としない最適化をインクルード ファイルが行えるようにします。他のファイルにイベントをログするには、定義なしで以下を使用してください。
               `include(UTGame\UTStats.uci)
               
      include ディレクティブ内のマクロは、 WorldInfo に直接アクセス可能であると仮定します。そうでない場合は、ロギング関数が直接呼び出されます。
  • ゲームにどのクラスがイベントのロギングやロギングの有効化/無効化をつかさどるかを伝えるために、ゲームの DefaultGame.ini に入力を追加します。
             [XXXGame.XXXGame]
             GameplayEventsWriterClassName=XXXGame.XXXGameplayEventsWriter
             bLogGameplayEvents=<true/false>
             
  • どのゲーム統計データベース クラスが、DB アップロードの際に SQL データベース接続情報を使用し、セットアップするかを指定するために、ゲームの DefaultEditor.ini に入力を追加します。これは、エディタ内でのデータのビジュアリゼーションに必要となってきます。
             [UnrealEd.GameStatsBrowser]
             GameStatsDBClassname=XXXEditor.XXXGameStatsDatabase
             RemoteConnectionIP="XXX.XXX.XXX.XXX"
             ConnectionString="Provider=sqloledb;Data Source=<database name>;Initial Catalog=GameStats;Trusted_Connection=Yes"
             RemoteConnectionStringOverride="Data Source=<database name>;Initial Catalog=GameStats;Integrated Security=True;Pooling=False;Asynchronous Processing=True;Network Library=dbmssocn"