깔때기 이벤트 경험의 주요 단계를 통해 사용자의 진행 상황을 추적할 수 있습니다. 여기에는 다음이 포함됩니다.
- 온보딩 - 사용자가 경험을 시작할 때 어디로 드롭됩니까?
- 진행도 - 사용자가 경험을 통해 진보를 중단하는 곳은 어디인가요?
- 상점 - 사용자가 구매를 포기하는 곳
경험이 Funnel 이벤트 추적을 시작하면 크리에이터 허브분석 대시보드의 통로 페이지가 잠금 해제됩니다.대시보드에 최대 10개의 파이프라인에 대한 탭을 추가할 수 있습니다.
트랙 깔때기 이벤트
깔때기 이벤트를 추적하려면 먼저 경험에서 가장 중요한 깔때기를 식별하고 단계로 분류합니다.온보딩 흐름은 사용자의 대부분을 잃을 수 있는 곳이기 때문에 시작하기에 좋은 곳입니다.
일회성 파이프라인 추적
일회성 깔때기는 사용자당 한 번만 발생하는 전환 이벤트를 모니터링합니다.
일반적인 예는 경험의 새로운 사용자 유지율과 세션 시간을 개선하는 방법을 이해하는 데 중요한 온보딩 파이프라인 입니다.다음 예시는 식물을 위한 온보딩 파이프라인으로, 새로운 사용자가 농장에 들어가고, 식물 씨앗을 심고, 물을 주고, 더 많은 것을 순차적으로 경험하는 타이쿤 경험입니다.
공장에서 온보딩 단계 추적
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, -- 이 독특한 체크아웃 세션에 대한 통합 세션 ID Funnel session id for this unique checkout session1, -- 단계 번호"Opened Store" -- 단계 이름)-- 사용자가 항목을 보았을 때 로그 기록 Log when the user views an 아이템AnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- 단계를 함께 그룹화하는 데 사용되는 깔때기 이름funnelSessionId, -- 이 독특한 체크아웃 세션에 대한 통합 세션 ID Funnel session id for this unique checkout session2, -- 단계 번호"Viewed Item" -- 단계 이름)-- 사용자 보기가 카트에 추가될 때 로그 기록AnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- 단계를 함께 그룹화하는 데 사용되는 깔때기 이름funnelSessionId, -- 이 독특한 체크아웃 세션에 대한 통합 세션 ID Funnel session id for this unique checkout session3, -- 단계 번호"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/19 코호트에 할당되지만, 6/20에 깔때기를 완료하더라도 깔때기는 6/19 코호트에 할당됩니다.
파이프 수정하기
파이프라인 단계를 업데이트한 후에는 최신 파이프라인을 보려면 올바른 날짜 범위를 설정하는 것이 중요합니다.현재 날짜가 6/21이고 보딩 프로세스 2단계를 6/14에 업데이트했다면, 최신 프로세스를 보려면 날짜 범위를 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단계("식물 씨앗")입니다.

이 데이터를 기반으로 다음을 수행할 수 있습니다:
- 사용자가 시작할 때 심을 심도록 더 잘 안내하기 위해 컨텍스트 지표를 추가합니다.
- 경험의 나머지를 탐색하기 전에 사용자가 씨앗을 심고 성공적인 식물을 키우도록 하는 새로운 사용자 환경을 디자인합니다.이 이벤트를 개선하려면 긍정적인 피드백 요소나 다른 게임 디자인 기술을 만들어 주세요.
