퍼널 이벤트

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

퍼널 이벤트는 사용자가 게임의 주요 단계에서 진행 상황을 추적할 수 있도록 해줍니다. 여기에는 다음이 포함됩니다:

  • 온보딩 — 사용자가 게임을 시작할 때 언제 이탈하나요?
  • 진행 — 사용자가 게임에서 더 이상 진행하지 않는 곳은 어디인가요?
  • 상점 — 사용자가 언제 구매를 포기하나요?

게임이 퍼널 이벤트를 추적하기 시작하면, Creator Hub의 Analytics 대시보드에서 퍼널 페이지를 사용할 수 있습니다. 대시보드에는 최대 10개의 퍼널을 추가할 수 있습니다.

퍼널 이벤트 추적

퍼널 이벤트를 추적하려면, 먼저 게임에서 가장 중요한 퍼널을 식별하고 이를 단계별로 나눕니다. 목표는 플레이어 행동을 이해하는 것이기 때문에, 이러한 단계는 일반적으로 어떤 행동이나 성취에 해당합니다.

RPG에서는 게임에 참가하는 단계, 클래스를 선택하는 단계, 시작 방을 나가는 단계 등으로 나눌 수 있습니다. 일반적으로 LogFunnelStepEvent() 또는 LogOnboardingFunnelStepEvent()플레이어가 단계 완료 후 호출하지만, 가장 중요한 것은 이러한 메서드를 호출할 때 일관성을 유지하고 이해하기 쉬운 이름을 사용하는 것입니다.

온보딩 흐름은 퍼널 이벤트를 추적하기 시작하기에 좋은 장소이며, 이는 사용자의 대부분이 이탈하는 곳일 가능성이 높습니다.

일회성 퍼널 추적

일회성 퍼널은 사용자당 한 번만 발생하는 전환 이벤트를 모니터링합니다.

일반적인 예시는 온보딩 퍼널로, 게임의 신규 사용자 유지율과 세션 시간을 개선하는 방법을 이해하는 데 중요한 역할을 합니다. 다음 예시는 Plant이라는 타이쿤 게임의 온보딩 퍼널로, 새로운 사용자가 농장에 입장하여 시드를 심고, 식물에 물을 주고, 그 외의 작업을 순차적으로 수행하는 경우입니다:

Plant에서 온보딩 단계 추적

local AnalyticsService = game:GetService("AnalyticsService")
-- FTUE의 첫 번째 단계를 기록합니다.
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- 단계 번호
"농장에 있음" -- 단계 이름
)
-- 두 번째 단계 기록
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
2, -- 단계 번호
"시드 심기" -- 단계 이름
)

반복 퍼널 추적

반복 퍼널은 사용자당 여러 번 발생하는 전환 이벤트를 모니터링합니다.

일반적인 예시는 상점 퍼널로, 게임의 유료 사용자 전환, ARPPU 및 수익을 개선하는 방법을 이해하는 데 도움이 됩니다. 다음 예시는 사용자가 상점을 열고, 아이템을 보기, 장바구니에 아이템 추가와 같은 단계로 이루어진 상점 퍼널입니다.

반복 퍼널에서는 funnelSessionId를 사용하여 동일 사용자에 대한 세션을 구별합니다. 예를 들어, 단일 세션에서 상점을 여러 번 여는 경우입니다.

상점 단계 추적

local AnalyticsService = game:GetService("AnalyticsService")
local HttpService = game:GetService("HttpService")
local funnelSessionId = HttpService:GenerateGUID()
-- 사용자가 상점을 열 때 기록합니다.
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- 단계 그룹화에 사용되는 퍼널 이름
funnelSessionId, -- 이 고유한 체크아웃 세션에 대한 퍼널 세션 ID
1, -- 단계 번호
"상점 열기" -- 단계 이름
)
-- 사용자가 아이템을 볼 때 기록합니다.
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- 단계 그룹화에 사용되는 퍼널 이름
funnelSessionId, -- 이 고유한 체크아웃 세션에 대한 퍼널 세션 ID
2, -- 단계 번호
"아이템 보기" -- 단계 이름
)
-- 사용자가 장바구니에 추가할 때 기록합니다.
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- 단계 그룹화에 사용되는 퍼널 이름
funnelSessionId, -- 이 고유한 체크아웃 세션에 대한 퍼널 세션 ID
3, -- 단계 번호
"장바구니에 추가" -- 단계 이름
)

funnelSessionId 구현

퍼널을 구현할 때 funnelSessionId는 이벤트 추적에 도움이 될 수 있지만 모든 경우에 필요한 것은 아닙니다. 다음 가이드라인을 따르세요:

  • 일회성 퍼널 - 일회성 퍼널에는 funnelSessionId를 사용할 필요가 없습니다. 왜냐하면 사용자가 한 번만 발생하기 때문입니다.
  • 상점 퍼널 - 반복 퍼널에서는 동일 사용자에 대한 서로 다른 세션을 구별하기 위해 funnelSessionId를 사용하세요. 앞서 언급된 예와 같이, 플레이어가 동일 세션에서 상점을 여러 번 여는 경우에는 funnelSessionId로 GUID를 사용하는 것이 좋습니다.
  • 아이템 업그레이드 - funnelSessionId를 사용하여 서로 다른 아이템 업그레이드 경로를 구별하는 데 사용할 수 있습니다. 일반적으로 단일 플레이 세션보다 긴 시간 동안 이루어집니다. 상점 퍼널의 경우와 마찬가지로, funnelSessionId 대신 아이템 업그레이드에 따라 고유 키를 구성할 수 있습니다. 예를 들어: <playerId>-<itemId>.

초기 단계

퍼널은 첫 번째 단계가 로깅될 때 시작합니다. 플레이어가 가입할 때 즉시 퍼널을 시작하려면 PlayerAdded 이벤트에서 첫 번째 단계를 기록하세요.

PlayerAdded 이벤트에서 첫 단계 기록

local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- 단계 번호
"플레이어 가입" -- 단계 이름
)
end)

반복 단계

사용자가 퍼널에서 단계를 반복하면 퍼널은 단계의 첫 번째 인스턴스만 고려합니다. 예를 들어, 사용자가 퍼널의 단계 2를 두 번 로깅하면, 퍼널은 단계 2의 첫 번째 인스턴스만 계산합니다. 사용자가 연결을 끊고 다시 연결되는 경우 일회성 퍼널에 대한 특별한 조치를 취할 필요가 없으며, funnelSessionId는 반복 퍼널을 처리합니다.

반복 단계는 퍼널에서 무시되지만, 여전히 로깅되고 전역 속도 제한에 기여합니다.

건너 뛴 단계

어떤 이유로 인해 퍼널에서 단계를 건너뛴 경우, 이전 단계는 자동으로 완료됩니다. 예를 들어, 단계 1, 2, 3이 있는 퍼널에서 단계 1 또는 2를 로깅하지 않고 단계 3를 로깅하면, 퍼널은 단계 1과 2가 완료된 것으로 간주합니다.

퍼널 필터 사용

Roblox는 퍼널 데이터를 분석하는 데 도움이 되는 필터를 제공합니다. 여기에는 플레이어 데이터와 장치 데이터가 포함되며, 사용자 정의 데이터도 보낼 수 있습니다. 경우에 따라 플레이어의 상태가 퍼널 동안 변경될 수 있습니다. 예를 들어, 플레이어가 모바일에서 데스크톱으로 장치를 전환하는 경우입니다.

퍼널을 중복 계산하지 않으려면 필터는 퍼널의 첫 번째 단계에만 적용됩니다. 즉, 플레이어가 퍼널 중에 장치를 전환하면, 퍼널은 해당 플레이어가 퍼널에 들어올 때 사용 중이었던 장치에만 귀속됩니다.

유사하게, 퍼널은 코호트별로 표시됩니다. 즉, 플레이어가 6/19에 퍼널에 들어간 경우, 퍼널은 6/19 코호트에 귀속되며, 6/20에 퍼널을 완료하더라도 마찬가지입니다.

퍼널 수정

퍼널 단계의 업데이트를 수행한 후, 최신 퍼널을 보기 위해 올바른 날짜 범위를 설정하는 것이 중요합니다. 현재 날짜가 6/21이고 6/14에 온보딩 퍼널의 단계 2를 업데이트한 경우, 최신 퍼널을 보려면 날짜 범위를 6/14 – 6/21로 설정해야 합니다.

퍼널 단계 업데이트를 포함하는 날짜 범위를 선택하면 해당 단계에 경고가 표시됩니다:

선택한 날짜 범위 내에서 이름 변경을 나타내는 경고가 퍼널 대시보드에 표시됩니다.

악용자로부터 퍼널 보호

데이터를 깔끔하게 유지하기 위해, 악용자가 유효하지 않은 데이터를 분석 서비스로 전송하는 것을 방지하기 위해 서버 코드에 어느 정도 데이터 유효성 검사 단계를 추가하는 것이 중요합니다.

예를 들어, 세 단계가 있는 온보딩 퍼널이 있을 경우, 클라이언트로부터 플레이어가 각 단계를 완료했음을 서버에 알리기 위해 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) -- 유효하지 않은 단계
서버 측 이벤트 코드

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(`클라이언트로부터 유효하지 않은 튜토리얼 단계 {step}이 수신되었습니다.`)
return
end
print(`{player.Name}이 단계 완료: {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)

사용자 정의 필드 사용

퍼널 이벤트는 사용자 정의 필드를 세분화하여 세그먼트 간 비교를 더 쉽게 지원합니다. 예를 들어, 어떤 스타터 자동차가 플레이어에게 가장 좋은 진행 상황을 제공하는지 추적하거나, 특정 맵이 다른 맵보다 더 나은 게임 루프를 가지고 있는지 확인할 수 있습니다.

비교할 수 있는 세 가지 사용자 정의 필드를 표시하는 드롭다운과 연령, 성별, 운영 체제 등과 같은 표준 세분화가 포함됩니다.

자세한 내용은 사용자 정의 필드를 참조하십시오.

퍼널을 사용하여 게임 성장

가장 중요한 퍼널 중 하나는 온보딩입니다. 많은 게임이 신규 사용자 유지율과 참여에 어려움을 겪기 때문입니다.

아래 Plant에서의 온보딩 퍼널에서는 가장 큰 이탈이 단계 2("시드 심기")입니다.

Plant 게임의 퍼널 차트로, 농장에 있음(단계 1)과 시드 심기(단계 2) 사이에 70%의 이탈이 있음을 보여줍니다.

이 데이터를 기반으로 다음과 같은 조치를 취할 수 있습니다:

  • 사용자가 시작할 때 시드를 심도록 더 잘 안내하기 위해 맥락적 지표를 추가합니다.
  • 사용자가 나머지 게임을 탐색하기 전에 시드를 심고 성공적인 식물을 기르도록 요구하는 새로운 사용자 경험을 설계합니다. 이 이벤트를 개선하기 위해 긍정적 피드백 요소를 만들거나 다른 게임 디자인 기법을 사용할 수 있습니다.
식물 게임의 인게임 뷰로, 화분 위에 시드를 심으라는 프롬프트가 표시됩니다.
©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.