Unity を検索

Unity ゲーミングサービス Use Cases を使ってゲーム難易度の A/B テスト手法を学ぼう

2022年6月15日 カテゴリ: ゲーム | 8 分 で読めます
Different level bars
Different level bars
取り上げているトピック
シェア

Is this article helpful for you?

Thank you for your feedback!

プレイヤーがどのようにゲームを操作しているのかが分からないままでは、ゲームのデザインを完成させるのは難しくなります。A/B テストを行うことで、プレイヤーが実際にどのようにゲームをプレイしているかに基づいて、デザインを決定することができます。

Unity ゲーミングサービス(UGS)Use Cases は、ゲームのバックエンドにおける典型的なユースケースとゲームデザイン要素を実装したサンプルのコレクションで、特定の開発タスクを解決する方法を示し、プロジェクトにさまざまな UGS パッケージを統合することによって、ゲームのバックエンドにおいて実現できる効率性を提示するものです。

これらのサンプルの 1 つに A/B テストに関するものがあります。このサンプルでは、プレイヤーを複数のテストグループに分け、特定のゲーム要素について、どのバージョンが最も魅力的か、または直感的かを判断することができます。今回ご紹介するサンプルは、レベルアップに必要な経験値(XP)の量をテストする例です。この例は、1 人用ゲームのアルファ版プレイテストなどに適しています。しかしこれは一例にすぎず、公開済みのゲームやマルチプレイヤーゲームについても、UGS を使った A/B テストが活用できる場面は数多くあります。

A/B テストとは何か

A/B テストを通して複数のバージョンによる実験結果を比較し、どちらがより良いパフォーマンスを示すかを確認します。ユーザーに似たような選択肢を提示することで、バリアントを比較対照し、今後実施すべき変更を決定することができます。A/B テストによって、バリアントに対するどの最適化が望ましい結果につながるかを判断することができます。 

テストで使う 2 つのバリアントは、しばしば A バリアントと B バリアントと呼ばれます。データを歪める偏りを防ぐため、各バリアントにはランダムにユーザーを割り当てます。

ゲームに A/B テストを導入する方法

テストを計画する

ゲームのデザインで効果のない部分について、すでにある程度考えがおありではないでしょうか。ユーザーインターフェースの一部が直感的でないのかもしれませんし、ベータテストのプレイヤーから「ステージ 42 のパズルが簡単すぎたので、ゲームのもっと早い段階で出してよいのでは」という声が上がっているのかもしれません。

調査の計画を立てるときに、以下のことを決めておく必要があります。

  • どの代替構成をテストするか。
  • どちらが優れた構成であるかを示すために、どのデータポイントを追跡するか。
  • どのくらいの期間、テストを実施するか。

Remote Config でベース値を設定する

Remote Config ダッシュボードを使ってキーと値のペアを作成して、ゲームの一部について設定を行うことができます。

Remote Config dashboard

Game Overrides ダッシュボードで実験グループを設定する

基本値の設定が終わったら、Game Overrides ダッシュボードを使って、テスト用のバリアントを設定することができます。A/B テストでは A バリアントと B バリアントの 2 つの比較だけでなく、必要なだけバリエーションや変化の組み合わせを作り、多くの変数を持たせたテストを行うこともできます。

Game Overrides dashboard

コードを更新する

リモート値、オーバーライド、および追跡したい内容に関するいくらかのアイデアが準備できたので、次はゲームのコードにこれらのシステムをきちんと統合する必要があります。

Remote Config SDK を使用すると、以下のようにしてゲーム内で使用する設定値をダウンロードすることができます。これにより、プレイヤーが割り当てられたグループに応じた Game Override の値が自動的にダウンロードされます。

await ConfigManager.FetchConfigsAsync(new UserAttributes(), new AppAttributes()); 
var abTestID = ConfigManager.appConfig.GetString("A_B_TEST_ID"); 
var abGroupName = ConfigManager.appConfig.GetString("A_B_TEST_GROUP"); 
var levelUpXPNeeded = ConfigManager.appConfig.GetInt("LEVEL_UP_XP_NEEDED");

(Remote Config SDK バージョン 3.1.0 に基づくコード例)

最後に、Unity Analytics SDK を使用して、レポートを作成するためにバックエンドにイベントを送信します。各イベントには、何が起こったかを説明するためのカスタムパラメーターを含めることができます。これらのパラメーターは、後でレポートのフィルタリングに使用することができます。イベントを送信したときに、このプレイヤーがどのテストグループに属していたかを示すパラメーターを、イベントに必ず含めるようにします。

var playerInfo = new Dictionary<string, object> {{"abGroup", abGroupName}}; 
AnalyticsService.Instance.CustomData("PlayerDidSomething", playerInfo);

すでに様々な設定値に Remote Config を使用していて、重要なアクションにアナリティクスイベントを設定している場合、ゲームを再コンパイルしてプレイヤーにアプリのアップデートを配信しなくても、ダッシュボードからいつでもそれらの値の 1 つについて新しい A/B テストを開始することができます。

Unity Analytics で結果を見る

ダッシュボードの Unity Analytics Data Explorer を使用すると、実験の進捗状況を示すレポートを作成することができます。このレポートに基づいて、デザインに関する意思決定を行うことができます。

Unity Analytics Data Explorer

デザイン変更の最終決定

実際にプレイヤーがどのようにゲームをプレイしているのかが分かるので、プレイヤーにとってより楽しく、魅力的なゲームになるように最適化することができます。Remote Config で設定したものをテストしていたわけですから、単純にベース値を変更してオーバーライドを削除すればよいのです。ゲームの新しいバージョンをリリースする必要はありません。

サンプル集を今すぐ見てみる

UGS Use Cases コレクションには、A/B テスト以外にもいくつかのサンプルが含まれています。

  • Loot Boxes:Cloud Code を使用して Economy による通貨の付与を実行し、Economy で扱う通貨をランダムに、プレイヤーへの報酬として与える。
  • Loot Boxes With Cooldown :通貨やアイテムを一定時間ごとにランダムにプレイヤーに与える。
  • Starter Packs:Cloud Code を使って 1 回だけ購入できるアイテムを実装し、プレイヤーがスターターパックを購入できるようにする。
  • Seasonal Events:時限式の特別なイベントに基づいて、ゲームのコンテンツをリモートで更新する。
  • Idle Clicker Game:暇つぶしのクリッカーゲームやソーシャルゲームのように、サーバーの権威ゲーム状態をリアルタイムで更新する。
  • Cloud AI Mini Game:Unity ゲーミングサービス上で動作し、永続的な状態、通貨による報酬、統計、および簡単な AI を搭載したシステムと対戦するシンプルな三目並べゲームにおいて、サーバー側の権威ゲームプレイを実現する。
  • Command Batching:ゲームコマンドをキューにまとめ、サーバー上で一括処理することで、ゲームプレイ中に発生するサーバー呼び出しの量と頻度を削減する。
  • Battle Pass:無料プレイヤーと課金プレイヤーのそれぞれについて、季節ごとにポイントに応じた報酬を与えるシステムを提供する。Battle Pass サンプルの使用方法については、こちらのブログで詳しく説明しています。
  • Rewarded Ads with Unity Mediation:メーター型の報酬ブースト UI を操作してリワード広告を見ることで、ステージ終了時の報酬を増加させるチャンスをプレイヤーに提示する。
  • Daily Rewards:毎日ログインするともらえる報酬が増えていくことを提示し、プレイヤーに継続的にログインするインセンティブを与えることで、リテンション率を高めることができる一般的な機能。
  • Virtual Shop:プレイヤーがゲーム内通貨を使用してアイテムやリソースを購入できるようにし、加えて複数のストアページとサーバーに管理されたバッジを活用することで、サーバー権威型のゲーム内経済を円滑に回すための、多くのゲームで重要な機能のデモ。

このプロジェクトは、Unity ゲーミングサービスの使用例を増やすために成長し続けるので、時折 GitHub リポジトリをチェックしていただければと思います。

Unity ゲーミングサービスのユースケースについて詳しく知るには、最新のブートキャンプ動画をご覧ください。

2022年6月15日 カテゴリ: ゲーム | 8 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

取り上げているトピック