ファンネルイベントを使用すると、ユーザーがゲームの重要なステージを通過する様子を追跡できます。これには以下が含まれます:
- オンボーディング — ユーザーがゲームを始めるとき、どこで離脱しますか?
- 進行状況 — ユーザーがゲームを進めることを止めるのはどこですか?
- ショップ — ユーザーが購入を放棄するのはどこですか?
ゲームがファンネルイベントを追跡し始めると、クリエイターハブの分析ダッシュボードにファンネルページが表示されます。ダッシュボードには最大10個のファンネルのタブを追加できます。
ファンネルイベントを追跡する
ファンネルイベントを追跡するには、まずゲーム内で最も重要なファンネルを特定し、それらをステップに分けます。目標はプレイヤーの行動を理解することなので、これらのステップは通常、いくつかのアクションや成果に対応します。
RPGでは、ゲームに参加するステップ、クラスを選択するステップ、スターティングルームを出るステップなどが考えられます。通常、プレイヤーがステップを完了した後に LogFunnelStepEvent() または LogOnboardingFunnelStepEvent() を呼び出しますが、最も重要なのはこれらのメソッドを呼び出すタイミングを一貫して保ち、解釈しやすい名前を使用することです。
オンボーディングフローはファンネルイベントを追跡するのに最適な場所です。ここで大半のユーザーが離脱する可能性が高いためです。
一度限りのファンネルを追跡する
一度限りのファンネルは、ユーザーごとに一度だけ発生するコンバージョンイベントを監視します。
一般的な例はオンボーディングファンネルで、これはゲームの新しいユーザーの保持率やセッション時間を改善する方法を理解するために重要です。以下の例は、ユーザーが農場に入り、種を植え、水を与えるなどを順番に行う、タイクーンゲームのPlantのオンボーディングファンネルです:
Plantでのオンボーディングステップの追跡local AnalyticsService = game:GetService("AnalyticsService")-- FTUEの最初のステップを記録するAnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- ステップの番号"農場にいる" -- ステップの名前)-- 2番目のステップを記録するAnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- ステップの番号"種を植える" -- ステップの名前)
繰り返しのファンネルを追跡する
繰り返しのファンネルは、ユーザーごとに複数回発生するコンバージョンイベントを監視します。
一般的な例はショップファンネルで、これはゲームの支払いコンバージョン、ARPPU、および収益を改善する方法を理解するのに役立ちます。以下の例は、ユーザーが店舗を開き、アイテムを表示し、アイテムをカートに追加する等のショップファンネルです。
funnelSessionIdを使用して、同じユーザーの異なるセッションを区別します。例えば、1つのセッション内でショップを複数回開いたときなどです。
ショップステップの追跡local AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")local funnelSessionId = HttpService:GenerateGUID()-- ユーザーがストアを開いた時を記録するAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- ステップをグループ化するために使用されるファンネル名funnelSessionId, -- このユニークなチェックアウトセッションのファンネルセッションID1, -- ステップの番号"ストアを開く" -- ステップの名前)-- ユーザーがアイテムを表示した時を記録するAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- ステップをグループ化するために使用されるファンネル名funnelSessionId, -- このユニークなチェックアウトセッションのファンネルセッションID2, -- ステップの番号"アイテムを表示" -- ステップの名前)-- ユーザーがカートに追加した時を記録するAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- ステップをグループ化するために使用されるファンネル名funnelSessionId, -- このユニークなチェックアウトセッションのファンネルセッションID3, -- ステップの番号"カートに追加" -- ステップの名前)
funnelSessionIdを実装する
ファンネルを実装する際に、funnelSessionIdを使用するとイベントを追跡するのに役立ちますが、すべてのインスタンスで必要というわけではありません。以下のガイドラインを使用してください:
- 一度限りのファンネル - 一度限りのファンネルでは、ユーザーごとに一度しか発生しないため、funnelSessionIdを使用する必要はありません。
- ストアファンネル - 繰り返しのファンネル内で同じユーザーの異なるセッションを区別するためにfunnelSessionIdを使用します。たとえば、前の例では、1つのセッション内でショップを複数回開く場合です。このように、プレイヤーがシングルセッション中にショップを複数回開く場合は、funnelSessionIdとしてGUIDを使用することをお勧めします。
- アイテムアップグレード - 通常、単一のプレイセッションよりも長い期間にわたる異なるアイテムアップグレード経路を区別するために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, -- ステップの番号
"プレイヤー参加" -- ステップの名前
)
end)
繰り返しステップ
ユーザーがファンネル内のステップを繰り返す場合、ファンネルはそのステップの最初のインスタンスのみを考慮します。たとえば、ユーザーがファンネルのステップ2を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に設定する必要があります。
ファンネルステップの更新を含む日付範囲を選択すると、関連するステップに警告が表示されます:

悪用者からファンネルを保護する
データをクリーンに保つためには、悪用者が無効なデータを分析サービスに送信できないように、サーバーコードにある程度のデータ検証を追加することが重要です。
たとえば、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) -- 無効なステップ
サーバー側のイベントコード
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)
カスタムフィールドを使用する
ファンネルイベントは、セグメント間の比較を容易にするためにカスタムフィールドを分解することも許可します。たとえば、どのスターターカーがプレイヤーに最良の進行を提供するかを追跡したり、異なるマップを関連付けて特定のマップが他よりも優れたゲームループを持っているかを調べることができます。

詳細については、カスタムフィールドを参照してください。
ファンネルを使用してゲームを成長させる
追跡する上で最も重要なファンネルの1つはオンボーディングであり、多くのゲームが新しいユーザーの保持とエンゲージメントに苦労しています。
以下のPlantのオンボーディングファンネルでは、最も大きな離脱はステップ2(「種を植える」)です。

このデータに基づいて、以下のように改善できます:
- ユーザーがスタートする際に種を植えるようにより良く誘導するための文脈的なインジケーターを追加します。
- ユーザーが他のゲームを探索する前に種を植えて成功した植物を育てる必要がある新しいユーザー体験を設計します。このイベントを改善するために、ポジティブフィードバック要素を作成するか、他のゲームデザイン手法を使用することができます。
