이벤트 전환 키 스테이지를 통해 사용자의 진행 상황을 추적할 수 있습니다. 여기에는 다음이 포함됩니다.
- 온보딩 - 사용자가 경험에 시작하면 어디에 떨어집니까?
- 진행 상황 - 사용자가 경험을 통해 어디로 전진하지 않습니까?
- 상점 - 사용자가 구매를 포기하는 곳?
경험이 함수 이벤트를 추적하기 시작하면 크리에이터 허브의 분석 대시보드 페이지를 엽니다. 최대 10개의 함수에 대해 대시보드에 탭을 추가할 수 있습니다.
트래킹 튜널 이벤트
펀 펄 이벤트를 추적하려면 먼저 경험에서 가장 중요한 펀 털을 식별하고 단계로 구분하십시오. 내 온보딩 흐름은 시작하기에 좋은 장소이며, 이는 사용자의 대부분을 잃을 수 있는 곳입니다.
일회성 함수 추적
한 번만 발생하는 이벤트 변환을 모니터링하는 하나의 시간 튜브 모니터.
일반적인 예시로는 새로운 사용자의 신규 유지 및 세션 시간을 이해하는 데 필수적인 onboarding 튜토리얼 이 있습니다. 다음 예시는 플랜트 식물 , 타이쿤 경험에서 새로운 사용자가 농장에 들어가고, 씨앗을 심고, 물을 마시고 등을 순차적으
식물에서 튜토리얼 단계 추적
local AnalyticsService = game:GetService("AnalyticsService")-- FTUE의 첫 번째 단계를 로그AnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- 단계 번호"In Farm" -- 단계 이름)-- 두 번째 단계 로그AnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- 단계 번호"Plant Seed" -- 단계 이름)
반복되는 함 트 추적
반복되는 함 널은 사용자마다 발생하는 변환 이벤트를 모니터링합니다.
일반적인 예시로는 상점 펌블 이며 경험의 지불 변환, ARPPU 및 수익을 이해하는 데 중요합니다. 다음 예시는 사용자가 상점을 열고 아이템을 보고, 카트에 아이템을 추가하고 등을 클릭하는 상점 펌블입니다.
함수 세션 아이디를 사용하여 같은 사용자의 재사용 함수 시퀀스에서 다른 세션을 구별하십시오, 예를 들어 하나의 세션에서 상점을 여러 번 열 수 있습니다.
트랙 숍 단계
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 를 사용하여 함께 작업 기능을 사용하여 이전 예에서처럼 상점을 여
- 아이템 업그레이드 - funnelSessionId 를 사용하여 다른 아이템 업그레이드 경로를 구분하십시오, 일반적으로 단일 플레이 세션보다 긴 시간 동안 걸립니다. 대신 스토어 퓨즐 케이스에서 사용하는 GUID가 아닌
초기 단계
첫 번째 단계가 로그되면 퓨즈가 시작됩니다. 플레이어가 조인할 때 즉시 퓨즈를 시작하려면 첫 번째 단계를 PlayerAdded 이벤트에 로그해야 합니다.
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이 있는 함수 있습니다. 단계 3을 로그하지 않고 단계 1이나 2를 로그하면 함수가 단계 1과 2를 완료한 것으로 간주됩니다.
함 필터 사용
Roblox는 함께 일하는 파트너를 위한 필터를 제공하여 귀하의 튜니얼 데이터를 분석할 수 있습니다. 여기에는 플레이어 데이터, 장치 데이터 및 사용자가 사서 데스크톱으로 전환할 때와 같은 사용자 데이터가 포함됩니다. 일부 경우 플레이어의 상태는 튜니얼에 변경될 수 있습니다.
중복 카운트 되지 않도록 하려면 필터는 항상 함수 의 첫 번째 단계에만 적용됩니다. 이를 통해 플레이어가 함수를 변경하더라도 함수는 해당 플레이어가 함수에 들어갈 때만 해당 플레이어의 장치에 부여됩니다.
마찬가지로, 함 수는 코호트별로 표시되므로 플레이어가 6/19에 함 수에 들어가면 함 수는 6/19 코호트에 속할 수 있지만, 6/20에 함 수를 완료하더라도 함 수는 6/19 코호트에 속할 수 있습니다.
함수 수정
튜브 단계를 업데이트한 후 올바른 날짜 범위를 설정하여 최신 튜브를 확인하는 것이 중요합니다. 현재 날짜가 6/21인 경우 6/14에 대한 튜브 2의 온보딩 튜브 단계를 업데이트한 후 날짜 범위를 6/14 - 6/21로 설정하여 최신 튜브를
함께 사용하는 센슬 업데이트가 포함된 날짜 범위를 선택하면 해당 단계에 경고가 표시됩니다.If you select a date range that includes a funnel step update, a warning displays on the relevant step:
탈악자로부터 함정을 보호하기
데이터를 클리어하려면 서버 코드에 일부 데이터 유효성 검사 레벨을 추가하는 것이 좋습니다. 이렇게 하면 악의적인 데이터 유출자가 분석 서비스에 유효하지 않은 데이터를 보내는 것을 방지할 수 있습니다.
예를 들어, 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)
사용자 정의 필드 사용
또한 이벤트 횟수를 조정하여 세그먼트 간의 쉬운 비교를 지원하고, 예를 들어, 어떤 스타터 자동차가 플레이어에게 최고의 진행 경로를 제공하는지 또는 특정 맵이 다른 맵보다 게임 루프가 더 좋은지 확인하기 위해 사용자 지정 필드를 분석할 수 있습니다.
자세한 내용은 사용자 정의 필드를 참조하십시오.
튜토리얼을 사용하여 경험을 성장시키기
추적에 가장 중요한 함수 중 하나는 온보딩입니다. 많은 경험이 새로운 사용자 유지 및 참여에 어려움을 겪고 있습니다.
아래의 Plant 위의 온보딩 튜토리얼에서 가장 큰 드롭오프는 단계 2 ("Plant Seed")입니다.
이 데이터를 기반으로 다음을 할 수 있습니다.
- 사용자가 시작할 때 씨앗을 심는 방향을 보여주는 컨텍스트 표시자를 추가합니다.
- 사용자가 경험의 나머지를 탐색하기 전에 씨앗을 심고 성공적인 식물을 키우는 새로운 사용자 경험을 디자인하십시오. 이 이벤트를 개선하려면 긍정적인 피드백 요소 또는 다른 게임 디자인 기술을 만들거나 사용할 수 있습니다.