通道事件 讓您通過體驗的關鍵階段追蹤用戶的進度。這包括:
- 入門 - 用戶在開始使用您的體驗時會到哪裡掉落?
- 進度 - 使用者在你的體驗中停止前進的地方?
- 商店 - 用戶在哪裡放棄購買?
一旦您的體驗開始記錄通道事件,您就會解鎖創作者中心的分析面板通道頁面。您可以為最多十個管道新增標籤到面板。
跟蹤漏斗事件
要跟蹤通道事件,請先識別您體驗中最重要的通道,並將它們分為步驟。新手流程是一個很好的啟動地點,因為這是你可能會失去大部分用戶的地方。
跟蹤一次性管道
一次性熱銷管監視只發生一次每使用者的轉換事件。
一個常見的例子是一個 培訓漏斗 ,對於理解如何提高您體驗的新用戶保留率和會話時間至關重要。以下示例是用於 植物 的入門漏斗,新用戶進入農場、種植種子、灌溉植物等在順序中:
在工廠追蹤入門步驟
local AnalyticsService = game:GetService("AnalyticsService")-- 記錄FTUE的第一步AnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- 步驟編號"In Farm" -- 步驟名稱)-- 記錄第二步AnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- 步驟編號"Plant Seed" -- 步驟名稱)
追蹤重複管道
一個重複的漏斗會監控每個使用者發生多次的轉換事件。
一個常見的例子是一個 商店漏斗 ,對於了解如何提高體驗付款轉換、ARPPU 和收入至關重要。以下示例是一個商店漏斗,在那裡使用者可以開啟商商店 商家、查看物道具、將物品添加到購物車等等。
使用 funnelSessionId 來區分同一使用者在重複漏斗中的不同會話,例如在單個會作業中多次開啟商店。
追蹤商店步驟
local AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")funnelSessionId = HttpService:GenerateGUID()-- 當使用者開啟商商店 商家時記錄AnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- 用於將步驟組合在一起的通道名稱funnelSessionId, -- 此獨特的付款會話的通道會作業ID1, -- 步驟編號"Opened Store" -- 步驟名稱)-- 當使用者查看項道具時記錄AnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- 用於將步驟組合在一起的通道名稱funnelSessionId, -- 此獨特的付款會話的通道會作業ID2, -- 步驟編號"Viewed Item" -- 步驟名稱)-- 當使用者查看添加到購物車時記錄AnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- 用於將步驟組合在一起的通道名稱funnelSessionId, -- 此獨特的付款會話的通道會作業ID3, -- 步驟編號"Added to Cart" -- 步驟名稱)
實裝funnelSessionId
當執行漏斗時,funnelSessionId 可以幫助您跟蹤事件,但可能不需要在每個個體、實例況下都使用。使用以下指南:
- 一次性漏斗 - 你不需要使用 funnelSessionId 一次性漏斗,因為它們只發生一次每個使用者。
- 商店漏斗 - 使用 funnelSessionId 來區分不同會話的同一用戶在重複漏斗中,例如在 以前的例子中開啟商店多次在單個會話中 。在這種情況下,玩家可能在一個會作業中多次打開商店,因此建議使用GUID作為funnelSessionId。
- 物品升級 - 使用 funnelSessionId 來區分不同的物品升級路徑,通常超過單次遊戲會作業的更長時間期間。而不是使用商店漏斗案件中的GUID,您可以經常根據正在升級的項目建立獨特的鑰匙,例如:<playerId>-<itemId>。
初始步驟
漏斗會在第一步記錄時開始。如果您想立即在玩家加入時啟動漏斗,您需要在 PlayerAdded 事件上記錄第一步。
記錄玩家新增事件的第一步
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- 步驟編號
"Player Joined" -- 步驟名稱
)
end)
重複步驟
如果使用者重複漏斗中的步驟,漏斗只會考慮步驟的第一個實例。例如,如果使用者兩次記錄通道的步驟 2,通道只會計數第一個步驟 2 的實例。
已跳過步驟
如果因為某種原因你跳過了漏斗中的一個步驟,之前的步驟將自動完成。
例如,如果您有步驟 1、2 和 3 的管道。如果您沒有記錄步驟 1 或 2 而記錄步驟 3,管道將視步驟 1 和 2 為已完成。
使用管道過濾器
Roblox 提供過濾器來幫助您分析通道數據。這包括玩家資料、裝置資料,您也可以傳送自訂資料。在某些情況下,玩家的狀態可能會在漏斗期間發生變化,例如當玩家從手機切換到桌面時。
為了避免計數重複的漏斗,過濾器總是 只適用於漏斗的第一步 。這意味著,如果玩家在漏斗期間切換裝置,漏斗將只會在他們進入漏斗時將裝置歸屬給他們。
相同地,漏斗會依照群組顯示,如果玩家於 6/19 進入漏斗,即使他們於 6/20 完成漏斗,漏斗也會被認為屬於 6/19 群組。
修改管道
在你更新你的管道步驟之後,設定正確的日期範圍來查看最新的管道是很重要的。如果當前日期是 6/21 且你於 6/14 更新了導入漏斗的步驟 2,你應該將日期範圍設為 6/14 – 6/21 來查看最新的漏斗。
如果您選擇包含漏斗步更新的日期範圍,相關步驟上會顯示警告:

保護您的通道免受濫用者攻擊
為了保持數據清潔,在服務器代碼中添加一定程度的數據驗證很重要,以防止惡意程式發送無效數據到您的分析服務。
例如,如果您有 3 步的入門漏斗,您可以使用 RemoteEvent 通知服務器當玩家完成每一步後,並將服務器檢查添加到確保步驟數字有效之前記錄事件的事件:
客戶端事件代碼
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local onboardingEvent = ReplicatedStorage:WaitForChild("OnboardingEvent")
local function fireOnboardingEvent(step: number)
onboardingEvent:FireServer({ step = step })
end
fireOnboardingEvent(1)
fireOnboardingEvent(2)
fireOnboardingEvent(10) -- invalid step
服務器側事件代碼
local AnalyticsService = game:GetService("AnalyticsService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local onboardingEvent = ReplicatedStorage:WaitForChild("OnboardingEvent")
local maxStep = 3
local function onPlayerEventFired(player: Player, args: { step: number })
local step = args.step
if(step > maxStep) then
warn(`Invalid tutorial step {step} received from client.`)
return
end
print(`{player.Name} completed step: {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)
使用自訂欄位
管道事件也允許分解到自訂欄位來支持更容易的間比較之間的區域。例如,您可以追蹤哪輛新手車能給玩家最好的進度,或附加不同的地圖來看看哪張地圖的遊戲循環比其他地圖更好。

了解更多信息,請參閱自訂欄位。
使用管道來擴展您的體驗
要追蹤的最重要通道之一是培訓,因為許多經驗會困難於新使用者保留和互動與。
在下方的 植物 入門管道中,最大的掉落是步驟 2(「植物種子」)。

根據這些資料,您可以:
- 添加上下文指標來更好地指導用戶在開始時種植種子。
- 設計一個新的使用者體驗,需要使用者種植種子並栽培成功的植物,才能探索體驗的其他部分。您可以通過創建 正面反饋元素 或其他遊戲設計技巧來改善此事件。
