MMOでユーザーの行動データを収集するにはどうすればよいですか?


9

MMOでは、最大のユーザー満足度を達成するためにゲームルールを微調整する目的で、ユーザーの行動に関するデータを収集しようとしています。

明らかに、それを行う1つの方法Console.WriteLine()は、変数の内容を表示したり、StopWatch()クラスが実行にかかる時間を確認したりするのに使用するのと同じように、アプリケーションに特定のものをハンドロールすることです。ただし、StopWatchの代わりにプロファイラーを使用でき、WriteLineの代わりにデバッガーを使用できます。

データはどのように収集すればよいですか?ユーザーの行動を観察するためにアプリケーションを計測するための一般化された手法、または何らかの形式のコード計測手法はありますか?

また、私は収集手法にのみ興味があります。上記のデータを送信、保存、分析する方法はすでに知っていると思います。

回答:


14

私たちは、使用しているコマンド指向のインタフェース/アーキテクチャーを監査ユーザアクティビティに。

これは、サーバーへのリクエストにより、サーバー側がコマンド(ユーザーが実行できるアトミックアクション)を表すクラスのインスタンスをインスタンス化することを意味します。

たとえば、ユーザーがアイテムストアで購入するとします。

//We could have done something like
someShop.sell(item, player); // This function deducts money from the player
                             // and stores the new item in their inventory

//Instead we do this:
$buyItemCmd = new BuyItemCommand(item); // The player is already known from the sessionId
$cmdExecuter.run($buyItemCmd);

次にcmdExecuter、すべてのコマンドに適用されるロギング/監査機能を追加します。この方法では、コードの重複がほとんどまたはまったくなく、特定のコマンドクラス定数を再構成するか、またはcmdExecuterを変更することにより、監査をオフにすることができます。

物事を整理しておくのに役立ちます。現在、「重要な」コマンドごとにデータベースレコードを作成しています。これは、私たちにとって興味深い行動を追跡するのに役立ちます。

さらに読書
Martin Fowler氏によるコマンド指向intefaceを


これは、私が探していたもののおかげです。
Robert Harvey、

@RobertHarvey(これを使用する場合)コマンドクラスをスリムに保つだけで、結局のところそれらはメソッドです。彼らは非常に細いはずです。
AturSams 2014年

利点は、ユーザーに適用されたバフと、xp / sが急上昇したときに彼女が戦ったモンスターを正確に確認できることです。一部のデータを削除する必要がある場合もありますが、現在はアクティビティが少ないため、それほど影響はありません。
AturSams 2014年

7

ここにある「テクニック」は非常にシンプルなので、呼び出す必要はほとんどありません。関連があると思うゲームシステムからのデータを記録するだけです。

そのデータを(データベース、ファイルなど)に記録する方法は広すぎるため、ここで議論することはできません(テクニックとパターンは、特にゲーム開発固有のものではないため、SOに関する議論により適しています)。質問どのシステムが関連しています。これらの質問に答えるための巧妙な自動テクニックはありません。それはかなり人工知能の偉業でしょう。

サーバー・コンポーネントがあるゲームでの確認する事があるということ、サーバがそれができるすべてのロギングを行う必要があります。クライアントから得られるものはどれも信頼できません。特に、このデータを使用してゲームの変更を調整する場合は、プレーヤーがそれを改ざんできないようにする必要があります。

クライアントは、サーバーが通常アクセスできない統計のみを記録および送信する必要があります。たとえば、UIクリックヒートマップを記録する場合、それはおそらくクライアントでのみ可能です。


2

MMOには、ユーザーがどこに行くのか、どのクエストを取るのか、どの機器を使用するのかがサーバーに送信されているというデータがすでにあります。

あなたが興味を持っているかもしれない他のデータは、彼らが様々なGUIをどのように使用するか、それらが統計とインベントリ画面を開いておく時間です。たとえば、マウスとキーボードで機能がアクティブになった回数を記録できます。

重要な要素の1つは、ユーザーが(重要ではない)データ収集をオプトアウト(または収集をオプトイン)してプライバシー規制に準拠できるようにすることです。また、サーバーがゲームセッション/次の1時間の間に記録する必要があるデータを決定して、プレーヤーにある程度の帯域幅を確保することができます。


1
また、特定のクエストの成功率と失敗率を忘れないでください。ゲームの一部が難しすぎたり、難しすぎたりするかどうかを確認するための良い方法です。
2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.