实验

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

实验 使您能够在游戏内和匹配中进行 A/B 测试,以测量对游戏变化的因果影响。例如,您可以向不同的玩家展示不同的入门体验,并测量游戏时间、留存率和其他关键绩效指标的差异。

实验非常适合测量以下内容:

  • 参与度 - 入门流程、进度系统、控制方案、自定义匹配
  • 货币化 - 商店可见性和用户体验、起始包类型、定价
创作者中心实验页面的概述

创建实验

实验分为两种类型:

  • 游戏内 实验使您能够测量不同 配置值 的影响。
  • 匹配实验 使您能够测量不同 自定义匹配配置 的影响。与游戏内实验不同,您一次只能运行一个匹配实验。
  1. 如果您还没有 配置,为您的游戏创建一个。

  2. 创作者中心实验 页面上,点击 创建实验

  3. 对于 类型,选择 游戏内

  4. 指定实验的名称、目标指标和计划持续时间。实验持续 14 到 60 天。

    无论您选择哪个目标指标,实验都会跟踪列表中的所有 指标

  5. 选择一个百分比推出。这是您希望包含在实验中的玩家百分比。

    通常来说,包含的玩家越多,数据越好,但请根据您的游戏判断什么是最好的。

  6. 指定变体和百分比。

    变体是您配置的替代值。对于控制值为 500 的数值配置键 bossHealth,您可以指定一个 300 的变体。您可以在实验中有最多 两个变体 和一个控制。

    百分比决定如何在 实验推出 内分配变体。考虑以下示例:

    • 您选择了 40% 的整体推出。
    • 您指定了两个变体,并在它们和控制之间进行了 50/50 的切分。

    在这个示例中,60% 的用户被排除在实验之外;这些用户接收控制,并且对实验结果没有影响。约 20% 的用户作为实验的一部分接收控制。另有 20% 接收变体。根据您的玩家数量,这种分配可能不足以产生可操作的结果。

    变体页面

  7. 最后一步是调度。您可以立即开始实验或将其调度到未来的日期和时间。在您调度实验后,无法更改其配置(持续时间、推出百分比、变体等),但您可以重新调度。

指标

实验在实验持续期间跟踪以下所有指标。

指标描述
D1 留存率一天后返回您游戏的玩家百分比。
D7 留存率一周后返回您游戏的玩家百分比。
游戏时间玩家在您的游戏中花费的平均时间。累计计算。
ARPU每用户的平均收入。收入除以玩家人数。累计计算。
ARPPU每个支付用户的平均收入。收入除以购买游戏相关物品的玩家人数。累计计算。
付费转化率购买游戏相关物品的玩家百分比。
会话时间游戏时间除以会话数量。累计计算。

实验状态

实验 页面显示实验的以下状态。

状态描述
完成实验已经结束,这可能是在您手动停止时,当您达到决策时,或者在决策日期后不久自动结束(游戏内实验在 14 天后,匹配实验立即结束)。您仍然可以查看详细信息和结果。
需要决策实验已到达决策日期。现在是审查结果的好时机。
运行中实验正在进行,但尚未达到决策日期。
已调度实验计划在未来的日期开始。
草稿实验尚未开始或调度。您可以完成设置。

将实验添加到您的代码

应用游戏内实验类似于 应用配置。主要区别在于使用 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, racesCompleted)
if racesCompleted > 0 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%,这使得这个变化具有统计显著性。

一个指标的置信区间

为了方便起见,结果页面允许您用实验中的一个变体替换默认配置值。点击 做决策 以选择变体,或点击 更改赢家 如果您改变主意。如果您再次返回 配置 页面,您应该看到新值。

实验的最佳实践


  • 使用最小可检测效果 (MDE) 来决定您的实验是否值得进行。

    Roblox 使用您的目标指标和每个变体的玩家人数计算 MDE,这基于每日活跃用户、推出百分比、实验持续时间和变体分割。如果目标指标的 MDE 太高(例如,超过 100%),您不太可能达到统计显著性。每日活跃用户少于 1000 的游戏可能会很难从实验中获得有用数据。

    创建期间发现的 MDE 不足的屏幕。

  • 从假设开始。 不要仅仅改变一个变量然后检查结果,而是写一个关于您改变了什么、预期会发生什么以及为什么的因果关系声明。随着实验次数的增加,拥有一组书面的假设可以帮助您澄清思路并激发新的实验想法。

  • 让实验运行其完整的持续时间。 新颖效应(对一种变化的暂时兴趣并不是因为它更好,而是因为它是新的)会严重扭曲早期结果,有时导致它们在统计显著性之间波动。提前结束实验会增加您因异常峰值而采取过早行动的可能性,而更多的数据可以平滑这些峰值甚至与之相矛盾。

  • 在没有统计显著性的情况下不要采取行动。 即使似乎很大的玩家行为变化可能不是统计显著性的,这通常是由于样本量小。如果变化不显著,请忽视它。

  • 在实验期间避免更改。当然,重大错误需要修复,但对游戏内容的更改可能会影响玩家行为并无效化您的结果,即使这些改动 看似 与您的实验无关。类似地,仅在您有信心它们不会相互影响时同时运行实验。

  • 使用置信区间深入分析 指标,并检查统计显著性的边缘案例。如果置信区间过宽,指标可能永远无法达到统计显著性。

  • 如果一个指标显著上升而另一个显著下降,您必须 决定这种权衡是否值得,可能与其他统计显著的变化结合考虑。

  • 实验提供了强信号,但 统计显著性处理的是概率,而不是确定性—因此有置信区间。数据变异性、样本大小和变化的幅度都影响检测变体是否影响玩家行为的概率。您根据实验结果采取的任何行动都应与定性数据(如玩家反馈)及您对游戏的整体愿景相平衡。

  • 记录您的发现和决策。 即使您不使用它们来进行额外的实验,拥有一套知识和证据也可以为您设计游戏提供启发。

©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。