實驗 讓你在遊戲內和配對中進行 A/B 測試,以衡量遊戲變更的因果影響。例如,你可以向不同玩家展示不同的入門體驗,並測量遊戲時間、留存率和其他關鍵績效指標的差異。
實驗非常適合衡量以下內容:
- 參與度 - 入門流程、進階系統、控制方案、自訂配對
- 營利模式 - 商店可見性和用戶體驗、入門包類型、定價

創建實驗
實驗有兩種類型:
如果你還沒有 配置,則為你的遊戲創建一個。
在你的遊戲的 Creator Hub 實驗 頁面上,點擊 創建實驗。
對於 類型,選擇 體驗內。
指定實驗的名稱、目標指標和計劃持續時間。實驗的持續時間為 14 至 60 天。
不論你選擇什麼作為目標指標,實驗會追蹤列表中的所有 指標。
選擇百分比發放。這個數字是你想要包括在實驗中的玩家百分比。
一般來說,包含的玩家越多,數據越好,但請根據你遊戲的最佳情況來進行判斷。
指定變體和百分比。
變體是配置的替代值。對於一個控制值為 500 的數值配置鍵 bossHealth,你可以指定一個變體為 300。在一個實驗中,你最多可以有 兩個變體 和一個控制。
百分比決定了如何在 實驗發放 中分配變體。考慮以下示例:
- 你選擇了總體發放為 40%。
- 你指定了兩個變體,並在它們和控制之間進行 50/50 的劃分。
在這個示例中,60% 的用戶被排除在實驗之外;這些用戶接收控制,對實驗結果沒有影響。大約 20% 的用戶接收作為實驗一部分的控制。另一個 20% 接收變體。根據你的玩家數量,這種分配可能不足以產生可行的結果。

最後一步是排程。你可以立即開始實驗或將其排程到以後的日期和時間。排程後,你不能更改其配置(持續時間、發放百分比、變體等),但可以重新安排。
指標
實驗在實驗期間追蹤以下所有指標。
| 指標 | 描述 |
|---|---|
| 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%)來說太高,那麼就不太可能達到統計顯著性。每天活躍用戶少於 1,000 的遊戲在實驗中可能難以獲得有用數據。

從假設開始。 不僅僅是改變一個變量並檢查結果,而是寫下關於你所改變的東西、你期望發生的事情以及原因的因果關係陳述。隨著你進行越多實驗,擁有一組書面假設以伴隨你的結果可以幫助澄清你的思維並激發新的實驗想法。
讓實驗運行其完整的持續時間。 新奇效應(對變更的暫時興趣,不是因為它更好,而是因為它是新的)可能會嚴重扭曲早期結果,有時導致它們進出統計顯著性。提前結束實驗會增加你基於異常波動採取過早行動的風險,而更長時間的数据可能會平滑或甚至相反。
在沒有統計顯著性時不要行動。 即使在玩家行為中似乎有重大變化,通常也可能不是統計上顯著,原因通常是樣本數量小。如果某個變化不是統計上顯著,則忽略它。
在實驗期間避免變更。 大錯誤當然需要修復,但對實驗內容的更改會影響玩家行為並使你的結果無效,即使這些變更 看似 與你的實驗無關。同樣,只有在你確信它們不會相互影響的情況下,才同時運行實驗。
使用信心區間進行深入分析 指標,並檢查統計顯著性的邊緣案例。如果信心區間過寬,該指標可能永遠無法達到統計顯著性。
如果一個指標顯著上升而另一個指標顯著下降,你必須 決定這種權衡是否值得,可能需要與其他統計顯著的變化一起考慮。
實驗提供了強烈的信號,但 統計顯著性涉及概率,而不是確定性——因此有了信心區間。數據變異性、樣本大小和變化的大小都影響檢測變體是否影響玩家行為的概率。基於實驗結果採取的任何行動應該與質性數據(像玩家反饋和你對遊戲的整體願景)進行平衡。
記錄你的發現和決策。 即使你不將其用於進行其他實驗,擁有一套知識和證據可以幫助你設計你的遊戲。