実験

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

実験を使用すると、ゲーム内およびマッチメイキングのA/Bテストを実行して、ゲームの変更がもたらす因果的影響を測定できます。たとえば、異なるプレイヤーに異なるオンボーディング体験を示し、プレイ時間、リテンション、その他の重要なパフォーマンス指標の違いを測定できます。

実験は、以下の測定に優れています:

  • エンゲージメント - オンボーディングフロー、進行システム、コントロールスキーム、カスタムマッチメイキング
  • マネタイズ - ショップの可視性とユーザー体験、スターターパックの種類、価格設定
Creator Hubの実験ページの概要

実験を作成する

実験には2つのタイプがあります:

  • ゲーム内の実験は、異なる設定値の影響を測定できます。
  • マッチメイキング実験は、異なるカスタムマッチメイキング構成の影響を測定できます。ゲーム内実験とは異なり、同時に1つのマッチメイキング実験しか実行できません。
  1. まだ設定を持っていない場合は、ゲーム用に作成します。

  2. Creator Hub実験ページで、実験を作成をクリックします。

  3. タイプとして体験内を選択します。

  4. 実験の名前、目標指標、および計画された期間を指定します。実験は14〜60日間実行されます。

    目標指標として何を選んでも、実験はリスト内のすべての指標を追跡します。

  5. パーセントロールアウトを選択します。この数値は、実験に含めたいプレイヤーの割合です。

    一般的に、実験に含める人数が多いほどデータが良くなりますが、ゲームにとって最適なものを判断してください。

  6. バリアントとパーセンテージを指定します。

    バリアントは、設定の代替値です。制御値が500の数値設定キーbossHealthの場合、300のバリアントを指定することができます。実験には最大2つのバリアントと1つの制御を持つことができます。

    パーセンテージは、実験のロールアウト内でバリアントを割り当てる方法を決定します。次の例を考えてみましょう:

    • 全体のロールアウトを40%に選択します。
    • 2つのバリアントと制御の間で50/50の分割を指定します。

    この例では、60%のユーザーが実験から除外されます。これらのユーザーは制御を受け取り、実験結果に影響を与えません。約20%のユーザーが実験の一部として制御を受け取ります。別の20%がバリアントを受け取ります。プレイヤー数によっては、この分布が実行可能な結果を得るには不十分な場合があります。

    バリアントページ

  7. (オプション)特定のオーディエンスをターゲットにして、条件に合致するプレイヤーのみが登録できるようにします。ターゲティングは、条件付き設定と同じプレイヤー属性を使用し、既存の条件を設定から直接コピーできます。詳細については、特定のオーディエンスに実験をターゲットにするを参照してください。

    実験作成中のオプションのターゲティングステップ

  8. 最後のステップはスケジューリングです。実験をすぐに開始するか、後の日時にスケジュールできます。実験をスケジュールした後は、その構成(期間、ロールアウトパーセンテージ、バリアントなど)を変更できませんが、再スケジュールは可能です。

指標

実験は、実験期間中に以下のすべての指標を追跡します。

MetricDescription
D1リテンション1日後にゲームに戻ったプレイヤーの割合。
D7リテンション1週間後にゲームに戻ったプレイヤーの割合。
プレイ時間プレイヤーがゲーム内で過ごした平均時間。実験の期間中の累積。
ARPUユーザーあたりの平均収益。収益をプレイヤー数で割ったもの。実験の期間中の累積。
ARPPU課金ユーザーあたりの平均収益。収益をゲーム関連アイテムを購入したプレイヤー数で割ったもの。実験の期間中の累積。
課金転換率ゲーム関連アイテムを購入したプレイヤーの割合。
セッション時間プレイ時間をセッション数で割ったもの。実験の期間中の累積。

実験のステータス

実験ページは、実験の以下のステータスを表示します。

StatusDescription
完了実験は終了しました。これは、手動で停止した場合、決定に達した場合、または決定日から14日後(ゲーム内の場合)、マッチメイキングの場合は即座に自動的に終了します。詳細と結果を確認できます。
決定が必要実験は決定日を迎えました。結果を確認するのに良いタイミングです。
実行中実験は実行中ですが、まだ決定日には達していません。
スケジュール済み実験は将来の日付に開始するようにスケジュールされています。
ドラフト実験は開始されていないか、スケジュールされていません。設定を完了できます。

特定のオーディエンスに実験をターゲットにする

デフォルトでは、ゲーム内実験はロールアウトパーセンテージ内の任意のプレイヤーを登録できます。ターゲティングを使用すると、特定のオーディエンスに対して実験を実行できます。たとえば、特定の国のプレイヤー、特定の在籍期間のウィンドウ、またはアクティブな支出者の層などです。ターゲティングは、設定ターゲティングと同じ属性を使用します。

ターゲット実験の設定

ターゲティング基準は、実験を作成するときに設定します。実験が開始された後は、ターゲティングルール、制御値、バリアント、または設定キーが使用する条件付きルールを変更できません。

ターゲティングを定義するために、設定から既存の条件付きルールを再利用できますが、実験は各ルールの独立したコピーを保存します。元の設定条件を後で編集または削除しても、実験のターゲティングには影響しません。

オーディエンスを絞るとサンプルサイズが減少するため、Robloxはターゲティング基準に一致するオーディエンスの推定値を使用して最小検出効果(MDE)を更新します。ターゲットオーディエンスが統計的に意味のある結果を生成するのに十分な大きさであることを確認してください。

Robloxがターゲット値を解決する方法

Robloxは、標準の条件付き設定のルールの前に最初に実験を評価します。設定キーにアクティブな実験がある場合、Robloxは次の順序で値を解決します:

  1. プレイヤーがターゲットにされて登録されている場合、アクティブな実験の値。
  2. 最初の一致する設定条件。
  3. その後の一致する設定条件。
  4. デフォルト値。

制御グループのプレイヤーは、既存の設定ルールが生成する値を受け取ります。同じ設定キーで同時に1つ以上のアクティブな実験を実行することはできません。

セッションごとの評価

Robloxはターゲティング属性をセッションごとに評価するため、個々のプレイヤーの適格性は時間とともに変わる可能性があります:

  • プレイヤーがセッション中にターゲティング基準に一致する場合、登録されて実験バリアントを受け取ることができます。
  • 後のセッションで一致しなくなった場合、実験値を受け取らなくなり、すぐに標準の設定ルールに戻ります。実験が適格性を超えて継続性を必要とする場合(たとえば、新しいプレイヤーを対象としたマルチセッションのオンボーディングフローなど)、値を自分で保持する必要があります。たとえば、データストアに保存します。

プレイヤーのデータは、登録されたバリアント(または制御)に帰属し、基準に一致しなくなった場合でも保持されます。たとえば、D7リテンションは、0日目に登録されたプレイヤーが7日目に戻ったかどうかをカウントします。たとえ4日目に基準に一致しなくなったとしてもです。

実験が実行中の設定変更

設定のドリフトと実験データの破損を防ぐために、Robloxは実験が実行される瞬間に設定キーをロックします:

  • 実行中の設定キーを編集または削除することはできず、その標準の条件付き値を変更することもできません。
  • アクティブな設定が参照するすべてのグローバル条件もロックされます。それらを編集、削除、または相互に順序を変更することはできません。

ロックは、実験が完了すると解除されます。

コードに実験を追加する

ゲーム内実験の適用は、設定の適用に似ています。主な違いは、ConfigService:GetConfigForPlayerAsync()を使用することです。ConfigService:GetConfigAsync()ではありません。

GetConfigForPlayerAsync()は、プレイヤー固有のスナップショットを取得します。GetValue()を呼び出すと、スナップショットはアクティブな実験をチェックし、ロールアウトパーセンテージに基づいてユーザーを登録(または登録しない)します。

local ConfigService = game:GetService("ConfigService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local playerConfig = ConfigService:GetConfigForPlayerAsync(player)
local leaderboardColor = playerConfig:GetValue("leaderboardColor")
end
Players.PlayerAdded:Connect(onPlayerAdded)
  • 各プレイヤーに対してGetConfigForPlayerAsync()を個別に呼び出す必要があります。GetConfigAsync()は実験を適用しません。

  • プレイヤー固有のスナップショットでGetValue()を呼び出した後、そのスナップショットに関連付けられたプレイヤーは、そのキーとそのキーのみの実験に登録されます。以降のメソッド呼び出しは、実験の期間中、同じ制御またはバリアントを返します。最初の呼び出しのみがランダムです。

  • 実験への登録は新しいユーザーに限定されません。たとえユーザーが以前にGetConfigAsync()から値を受け取った場合でも、GetConfigForPlayerAsync()からのプレイヤー固有のスナップショットを使用して実験に登録できます。

  • プレイヤー固有のスナップショット内のキーにアクティブな実験がない場合、GetValue()は標準の設定値(または値がない場合はnil)を返します。

カスタム登録

ゲーム内状態に基づく基準を満たすプレイヤーのみを登録したい場合は、それらの基準を確認するための追加のコードを書き、その後にGetValue()を呼び出して実験に登録する必要があります。次の例を考えてみましょう:

  • レーシングゲームで新しいコントロールスキームをテストしたい。
  • このスキームは上級者向けなので、多くのレースに勝ったプレイヤーをターゲットにしたい。

あなたのコードは次のようになるかもしれません:

local function getControlScheme(player, racesWon)
if racesWon < 20 then
return "standardScheme"
else
-- プレイヤーは多くの勝利を収めているので、実験に登録
local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)
if playerConfigSnapshot:GetValue("useNewControlScheme") then
return "newScheme"
else
return "standardScheme"
end
end
end

コントロールスキームを次のセッションでも持続させたい場合は、プレイヤーのデータストアのエントリに値を追加する必要があります。

結果を表示して解釈する

実験が少なくとも24時間実行された後、表示をクリックして詳細と結果を確認します。

実験の詳細ページ

登録されたプレイヤーの総数、制御値と各バリアントを受け取ったプレイヤーの数を確認できます。このページを実験の早い段階で表示することは、実験が正しく実行されていることを確認するために役立ちますが、行動を起こすためではありません。行動を起こす前に、ベストプラクティスを確認してください。

実験が完了したら、結果タブを確認します。ダッシュボードが緑または赤で強調表示する目標指標の統計的に有意な変化を探します。これらの変化は、バリアントの影響を示す可能性が高く、偽陽性または偽陰性である可能性は低くなります。

実験の詳細ページ

任意の指標にカーソルを合わせると、信頼度を表示ボタンが表示され、信頼区間が表示されます。

指標が統計的に有意であるのは、そのパーセント変化の信頼区間が0%と重ならない場合です。次の例では、D1リテンションが17.4%増加し、下限と上限がそれぞれ8.02%と22.03%であり、この変化は統計的に有意です。

指標の信頼区間

便利なことに、結果ページではデフォルトの設定値を実験のバリアントの1つに置き換えることができます。

決定を下す

実験が終了したら、決定を下すをクリックしてガイド付きロールアウトを開始します。Robloxは統計的有意性と実験の期間に関する警告を表示し、勝利したバリアントを選択するか、制御を維持するように促します。選択に基づいて、Robloxは適切な変更を永続的な設定にロールアウトします。設定ページに戻ると、新しい値が表示されます。気が変わった場合は、勝者を変更をクリックします。

実験を完了したときに設定に未解決のステージ変更がある場合、Robloxはそれらを一時的に保管し、ロールアウト後に最善の努力で復元します。

あなたの決定は、Robloxが提案する設定変更を決定します:

  • 制御: Robloxは既存の設定に変更を加えません。

  • ターゲットされていないバリアント: バリアント値が設定の新しいデフォルト値になります。Robloxはその設定キーに対する他のすべての条件を削除しますが、それらはグローバル条件リストに残ります。

  • ターゲットされたバリアント: Robloxは勝利したルールを永続的な設定に統合し、この優先順位の順序で最初の適用可能なオプションを使用します:

    1. 上書き: 同一の条件が設定の最上部にすでに存在する場合、Robloxはその値を勝利したバリアントの値で上書きします。
    2. 既存の追加: 一致するグローバル条件が存在し、自然に最上部に位置する場合、Robloxはその設定にバリアントの値を追加します。
    3. 昇格: 一致するグローバル条件が、他の設定を変更せずにこの設定の最上位ルールにするために必要な最低ランクに安全に昇格できる場合、Robloxはそれを設定に追加し、グローバルに順序を変更します。
    4. 新規作成: それ以外の場合、Robloxは設定で現在使用されている最も高い条件の1レベル上に新しいグローバル条件を作成します。これにより、設定内に重複ルールが作成される場合、Robloxは冗長な条件値を削除し、グローバルルールを保持します。

実験のベストプラクティス


  • **最小検出効果(MDE)**を使用して、実験を実行する価値があるかどうかを判断します。

    Robloxは、目標指標とバリアントごとのプレイヤー数を使用してMDEを計算します。これは、日次アクティブユーザー、ロールアウトパーセンテージ、実験の期間、バリアントの分割に基づいています。目標指標に対するMDEが高すぎる場合(たとえば、100%を超える場合)、統計的有意性に達することは難しいです。1,000人未満のデイリーアクティブユーザーを持つゲームは、実験から有用なデータを得るのが難しいかもしれません。

    作成中の不十分なMDE画面。

  • 仮説から始める。 変数を変更して結果を確認するのではなく、変更したこと、期待する結果、理由についての因果関係の文を作成します。実験を重ねるにつれて、結果に伴う書面による仮説のセットを持つことは、思考を明確にし、新しい実験のアイデアを生むのに役立ちます。

  • 実験をその期間中に実行させる。 新奇効果(変更に対する一時的な関心)は、早期の結果を大きく歪める可能性があり、時には統計的有意性の内外で揺れ動くことがあります。実験を早期に終了すると、異常なスパイクに基づいて早急に行動を起こすリスクが高まります。より多くのデータがあれば、スムーズにしたり、反論したりできたかもしれません。

  • 統計的有意性がない場合は行動を起こさない。 プレイヤー行動の大きな変化に見えるものでも、一般的にはサンプルサイズが小さいため、統計的に有意でない場合があります。変化が統計的に有意でない場合は、無視してください。

  • 実験中の変更を避ける。 重大なバグはもちろん修正が必要ですが、ゲームコンテンツの変更はプレイヤー行動に影響を与え、結果を無効にする可能性があります。たとえ変更が実験と無関係に見えてもです。同様に、実験が互いに影響しないと確信できない限り、同時に実験を実行しないでください。

  • 信頼区間を使用して指標を深く掘り下げ、統計的有意性の境界ケースを確認します。 信頼区間が広すぎる場合、その指標は統計的有意性に達しない可能性があります。

  • 1つの指標が大幅に増加し、別の指標が大幅に減少している場合、トレードオフが価値があるかどうかを決定する必要があります。これは、他の統計的に有意な動きと組み合わせて行うことができます。

  • 実験は強い信号を提供しますが、統計的有意性は確実性ではなく確率に関するものです。したがって、信頼区間があります。データの変動性、サンプルサイズ、変化の大きさは、バリアントがプレイヤー行動に影響を与えたかどうかを検出する確率に影響します。実験の結果に基づいて行動を起こす場合は、プレイヤーのフィードバックやゲーム全体のビジョンなどの定性的データとバランスを取るべきです。

  • 発見と決定を文書化する。 追加の実験を実行するために使用しなくても、知識と証拠の体を持つことは、ゲームの設計方法に影響を与えることができます。

©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。