通过事件

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

通过隧道事件让您跟踪您的用户进度通过体验的关键阶段。这包括:

  • onboarding - 用户在体验您的时候会掉落在哪里?
  • 进度 - 用户在您的体验中停止前进吗?
  • 商店 - 用户在哪里放弃购买?

体验开始跟踪 funnel 事件后,您将解锁“ funnel”页面。您可以在“创建者中心”的“分析”仪表板上添加标签。

追踪管道事件

要跟踪隧道事件,请首先确定体验中的隧道事件的最重要性,然后将它们分为步骤。您的 onboarding 流程是一个很好的开始,因为这是您可能会失去大多数用户的地方。

跟踪一次性通道

单次 funnel 监控转换事件,仅发生一次每个用户。

一个常见的例子是一个 onboarding funnel ,这是理解如何改善您的体验新用户留下和会话时间的关键。以下示例是对 Plant 的 onboarding funnel,这是一个 tycoon 体验,在新用户进入农场、种植种子、水植等等,以及更多顺序的示例:

跟踪在船舶上的集成步骤

local AnalyticsService = game:GetService("AnalyticsService")
-- 记录 FTUE 的第一步
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- 步骤数
"In Farm" -- 步骤名称
)
-- 记录第二步
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
2, -- 步骤数
"Plant Seed" -- 步骤名称
)

跟踪重复的通道

重复的烟囱监视用户发生的多次转换事件。

一个常见的例子是一个 商店 funnel ,这是理解如何改善您的体验支付转换、ARPPU和收入的关键。以下示例是一个商店 funnel ,用户打开商店、查看物品、添加物品到购物车等等。

使用 funnelSessionId 来区分不同用户在同一 funnel 中的不同会话,例如在单个会话中打开商店多次。

追踪商店步骤

local AnalyticsService = game:GetService("AnalyticsService")
local HttpService = game:GetService("HttpService")
funnelSessionId = HttpService:GenerateGUID()
-- 当用户打开商店时 Log
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- 用于将步骤组合在一起的通道名称
funnelSessionId, -- 为此独特的购买会话添加通道ID
1, -- 步骤数
"Opened Store" -- 步骤名称
)
-- 当用户查看物品时,记录
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- 用于将步骤组合在一起的通道名称
funnelSessionId, -- 为此独特的购买会话添加通道ID
2, -- 步骤数
"Viewed Item" -- 步骤名称
)
-- 当用户在购物车添加时记录
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- 用于将步骤组合在一起的通道名称
funnelSessionId, -- 为此独特的购买会话添加通道ID
3, -- 步骤数
"Added to Cart" -- 步骤名称
)

实现 funnelSessionId

当实施 funnel 时,一个 funnelSessionId 可以帮助您跟踪您的事件,但可能不是每个实例况下都需要。请使用以下指南:

  • 一次性通道 - 您不需要使用 funnelSessionId 对于一次性通道,因为它们只会发生一次 per 用户。
  • 商店隧道 - 使用 funnelSessionId 来区分不同用户在同一用户的不同隧道中,例如在 以前示例 中打开商店多次。在这些情况下,玩家可以打开商店多次在单个会话中,建议使用一个 GUID 作为 0> funnelSessionId
  • 项目升级 - 使用 funnelSessionId 来区分不同的项目升级路径,通常在单个游戏会话之间结束时间更长。 而不是使用商店中的 GUID 作为升级钥匙,您通常可以在项目升级中使用独特的钥匙,例如: <playerId>-<itemId>

初始步骤

隧道会在第一步登录时开始。如果您想要即时在玩家加入时开始隧道,您需要在 PlayerAdded 事件上记录第一步。

在 PlayerAdded 事件中记录第一步

local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- 步骤数
"Player Joined" -- 步骤名称
)
end)

重复步骤

如果用户在 funnel 中重复一个步骤,funnel 只会考虑第一个实例的步骤。例如,如果用户在 funnel 中重复一个步骤 2 次,funnel 只会考虑第一个实例的步骤 2。

跳过步骤

如果因为某种原因,你跳过了筒道的某个步骤,那么以前的步骤会自动完成。

例如,如果您有 1、2 和 3 步骤的 funnel。 如果您在 funnel 中记录步骤 3 而不在步骤 1 或 2 ,那么 funnel 将视角步骤 1 和 2 为已完成。

使用管道过滤器

Roblox 提供过滤器来帮助您分析您的 funnel 数据。这些包括玩家数据、设备数据和您可以发送自定义数据。 在一些情况下,玩家的状态可能会在 funnel 中变更,例如玩家从移动到桌面切换装置。

为了避免双重计数的障碍,过滤器总是 仅适用于障碍的第一个步骤 。这意味着如果玩家在障碍期间切换设备,障碍只会在他们进入障碍期间的设备上被归为他们的设备。

同样,通过 cohort 显示有趣的链接,即使玩家在 6/19 进入通道,通道也会显示在 6/19 cohort ,即使他们在 6/20 完成通道。

修改通道

在您对您的 funnel 步骤进行更新后,重要的是要设置正确的日期范围,以便查看最新的 funnel。如果当前日期是 6/21,您在 6/14 上更新了您的 onboarding funnel 的第 2 步,您应该将日期范围设置为 6/14 – 6/21 来查看最新的 funnel。

如果您选择包含在隧道步骤更新中的日期范围,警告显示在相应步骤:

A warning displays on the funnel dashboard indicating a name change within the selected date range.

保护你的管道免受恶意者的侵害

为了保持您的数据清洁,请在服务器代码中添加一些数据验证级别,以防止黑客发送无效数据到您的分析服务。

例如,如果您有一个 Onboarding funnel 有 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)

使用自定义字段

还可以通过在自定义字段上分解来支持更容易的比较,例如,您可以跟踪哪些启动器车辆给玩家最好的进度,或者附加不同的地图来看是否有特定地图的游戏循环比其他地图更好。

A dropdown indicating the three custom fields you can compare across, along with standard breakdowns like age, gender, operating system and more.

了解更多信息,请参阅自定义字段

使用 funnel 来增长您的经验

追踪的重要 funnel 之一是 onboarding 因为许多体验都在与新用户保持新的用户 retention 和交互动。

植物下的 onboarding funnel 中,最大的交付是步骤 2 ("Plant Seed")。

Funnels chart for Plant experience showing a 70% drop-off between In Farm, step 1, and Plant Seed, step 2.

基于此数据,您可以:

  • 添加上下文提示,让用户更容易在开始时种植种子。
  • 设计一个需要用户种植种子并在探索其他部分体验之前发展成功的植物。你可以通过创建正面反馈元素或其他游戏设计技术来改善这个事件。
In-experience view of Plant experience showing prompts to plant seeds above the flowerpots.