Funnel-Ereignisse lassen dich den Fortschritt deines Benutzers durch wichtige Stufen deiner Erlebnisverfolgen. Dies beinhaltet:
- Onboarding - Wo lassen sich Benutzer absetzen, wenn sie mit deiner Erlebnisbeginnen?
- Fortschritt - Wo stoppen Benutzer den Fortschritt durch deine Erlebnis?
- Laden - Wo geben Benutzer Käufe auf?
Sobald dein Erlebnis beginnt, Funnel-Ereignisse zu verfolgen, schaltest du die Funnel-Seite des Analytics-Dashboards auf dem Creator-Hub frei.Du kannst Tabellen zum Dashboard für bis zu zehn Funnel hinzufügen.
Verfolge Funnel-Ereignisse
Um Funnel-Ereignisse zu verfolgen, identifiziere zuerst die wichtigsten Funnel in deiner Erfahrung und segmente sie in Schritte ein.Dein Onboarding-Prozess ist ein guter Ort, um zu starten, da dies der Ort ist, an dem du die meisten deiner Benutzer verlieren könntest.
Verfolgen Sie einmalige Funnel
Ein einmaliger Funnel überwacht Umwandlungsevents, die nur einmal pro Benutzer auftreten.
Ein häufiges Beispiel ist ein Onboarding-Funnel , der wichtig ist, um zu verstehen, wie du die neue Benutzerretention und die Sitzungsdauer deines Erlebnisses verbessern kannst.Das folgende Beispiel ist ein Onboarding-Funnel für Pflanze, eine Tycoon-Erfahrung, in der neue Benutzer eine Farm betreten, Samen pflanzen, Wasser pflanzen und mehr in sequentieller Reihenfolge:
Verfolgung von Onboarding-Schritten in der Anlage
local AnalyticsService = game:GetService("AnalyticsService")-- Protokollieren Sie den ersten Schritt des FTUEAnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- Schritt-Nummer"In Farm" -- Schrittname)-- Protokollieren Sie den zweiten SchrittAnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- Schritt-Nummer"Plant Seed" -- Schrittname)
Wiederkehrende Funnel verfolgen
Ein wiederkehrender Funnel überwacht die Konvertierungsereignisse, die mehrere Male pro Benutzer auftreten.
Ein häufiges Beispiel ist ein Shop-Funnel , der wichtig ist, um zu verstehen, wie du deine Erlebnisse-Zahler-Umwandlung, durchschnittlicher Erlös pro zahlendem Nutzer (ARPPU), und Einnahmen verbessern kannst.Das folgende Beispiel ist ein Shop-Funnel, in dem Benutzer den Storeöffnen, einen Artikel anzeigen, einen Artikel zum Warenkorb hinzufügen usw.
Verwende funnelSessionId, um zwischen verschiedenen Sitzungen desselben Benutzers in einem wiederkehrenden Funnel zu unterscheiden, wie das Öffnen des Shops mehrmals in einer einzigen Sitzung.
Shop-Schritte verfolgen
local AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")funnelSessionId = HttpService:GenerateGUID()-- Protokollieren, wenn der Benutzer den StoreöffnetAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Funnel-Name wird verwendet, um Schritte zusammenzugruppierenfunnelSessionId, -- Funnel-Sitzungs-ID für diese einzigartige Checkout-Sitzung1, -- Schritt-Nummer"Opened Store" -- Schrittname)-- Protokollieren, wenn der Benutzer ein ArtikelanzeigtAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Funnel-Name wird verwendet, um Schritte zusammenzugruppierenfunnelSessionId, -- Funnel-Sitzungs-ID für diese einzigartige Checkout-Sitzung2, -- Schritt-Nummer"Viewed Item" -- Schrittname)-- Protokollieren, wenn der Benutzer auf "Zum Warenkorb hinzufügen" klicktAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Funnel-Name wird verwendet, um Schritte zusammenzugruppierenfunnelSessionId, -- Funnel-Sitzungs-ID für diese einzigartige Checkout-Sitzung3, -- Schritt-Nummer"Added to Cart" -- Schrittname)
Implementieren von funnelSessionId
Wenn du Funnel implementierst, kann ein funnelSessionId dir helfen, deine Ereignisse zu verfolgen, aber es kann nicht in jedem Instanzerforderlich sein. Verwende die folgenden Richtlinien:
- Einmalige Funnel - Du musst nicht funnelSessionId für einmalige Funnel verwenden, weil sie nur einmal pro Benutzer auftreten.
- Lagerkanäle speichern - Verwende funnelSessionId, um zwischen verschiedenen Sitzungen desselben Benutzers in einem wiederkehrenden Kanal zu unterscheiden, wie das Öffnen des Shops mehrfach in einer einzigen Sitzung im früheren Beispiel.In Fällen wie diesem, in denen der Spieler den Shop möglicherweise mehrmals in einer Sitzung öffnen kann, wird empfohlen, einen GUID als funnelSessionId zu verwenden.
- Artikel-Upgrades - Verwende funnelSessionId, um zwischen verschiedenen Artikel-Upgrade-Pfaden zu unterscheiden, in der Regel über einen längeren Zeitraum als eine einzige Sitzung.Anstatt einen GUID wie im Fall des Ladenkanals zu verwenden, kannst du oft einen einzigartigen Schlüssel aufbauen, der auf das zu aktualisierende Element basiert, zum Beispiel: <playerId>-<itemId> .
Erster Schritt
Funnels beginnen, wenn der erste Schritt protokolliert wird.Wenn du einen Funnel sofort beim Beitritt des Spielers starten möchtest, musst du den ersten Schritt auf dem PlayerAdded protokollieren.
Protokollieren des ersten Schritts im Ereignis PlayerAdded
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Schritt-Nummer
"Player Joined" -- Schrittname
)
end)
Wiederholte Schritte
Wenn ein Benutzer einen Schritt in einem Trichter wiederholt, berücksichtigt der Trichter nur die erste Instanz des Schritts.Wenn ein Benutzer zum Beispiel Schritt 2 eines Kanals zweimal aufzeichnet, zählt der Kanal nur die erste Instanz von Schritt 2.
Schritte übersprungen
Wenn du aus irgendeinem Grund einen Schritt im Trichter überspringst, werden die früheren Schritte automatisch abgeschlossen.
Zum Beispiel, wenn du einen Trichter mit Schritten 1, 2 und 3 hast.Wenn du Schritt 3 ohne Schritte 1 oder 2 aufzeichnest, betrachtet der Funnel Schritte 1 und 2 als abgeschlossen.
Verwende Riffelfilter
Roblox bietet Filter, die dir helfen, deine Funnel-Daten zu analysieren.Dazu gehören Spielerdaten, Gerätedaten und du kannst auch benutzerdefinierte Daten senden.In einigen Fällen kann sich der Status eines Spieler:inwährend des Trichters ändern, z. B. wenn der Spieler Geräte von mobil auf Desktop wechselt.
Um Doppelzähler zu vermeiden, filtern Filter immer nur für den ersten Schritt des Funnels.Das bedeutet, dass, wenn ein Spieler während des Funnels Geräte wechselt, der Funnel nur zu dem Zeitpunkt ihres Betritts des Funnels ihrem Gerät zugeordnet wird.
Ebenso zeigen sich Funnel nach Kohorte, was bedeutet, dass, wenn ein Spieler den Funnel am 6/19 betritt, der Funnel der Kohorte 6/19 zugeordnet wird, auch wenn er den Funnel am 6/20 abschließt.
Ändern von Funneln
Nachdem du deine Funnel-Schritte aktualisiert hast, ist es wichtig, die richtige Zeitspanne festzulegen, um den neuesten Funnel zu sehen.Wenn das aktuelle Datum 6/21 ist und du den Schritt 2 deines Onboarding-Funnels am 6/14 aktualisiert hast, solltest du den Zeitraum auf 6/14 – 6/21 festlegen, um den neuesten Funnel anzuzeigen.
Wenn du eine Zeitspanne wählst, die ein Funnel-Schritts-Update enthält, wird eine Warnung auf dem relevanten Schritt angezeigt:

Schütze deine Funnel vor Exploitern
Um Ihre Daten sauber zu halten, ist es wichtig, ein gewisses Maß an Daten验证 in Ihrem Servercode hinzuzufügen, um Exploiter zu verhindern, die ungültige Daten an Ihren Analytics-Service senden.
Wenn du zum Beispiel einen Onboarding-Funnel mit 3 Schritten hast, kannst du einen RemoteEvent verwenden, damit der Client den Server benachrichtigt, wenn der Spieler jeden Schritt abgeschlossen hat, und einen Server-Check hinzufügen, um sicherzustellen, dass die Schrittnummer gültig ist, bevor das Ereignis aufgezeichnet wird:
Clientseitiger Codes
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
Serverseitiger Codes
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)
Benutzerdefinierte Felder verwenden
Funnel-Ereignisse ermöglichen auch das Herunterbrechen auf benutzerdefinierte Felder, um die Vergleichbarkeit zwischen Segmenten zu erleichtern.Zum Beispiel können Sie verfolgen, welches Starter-Auto den Spielern die beste Progression gibt, oder verschiedene Karten anfügen, um zu sehen, ob eine bestimmte Karte einen besseren Spielschleifen als andere hat.

Für weitere Informationen, siehe benutzerdefinierte Felder.
Verwende Funnel, um deine Erlebniszu vergrößern
Einer der wichtigsten Funnel, die verfolgt werden müssen, ist Onboarding, weil viele Erfahrungen mit der neuen Benutzerbindung und Engagementkämpfen.
Im Onboarding-Funnel für Pflanze unten ist der größte Abfallschritt Schritt 2 ("Pflanzensamen").

Basierend auf diesen Daten könnten Sie:
- Füge kontextuelle Indikatoren hinzu, um Benutzer besser zu leiten, Samen zu pflanzen, wenn sie beginnen.
- Entwerfen Sie ein neues Benutzererlebnis, das Benutzer dazu bringt, Samen zu pflanzen und eine erfolgreiche Pflanze zu wachsen, bevor sie den Rest der Erlebniserkunden.Du kannst dieses Ereignis verbessern, indem du positive Feedback-Elemente erstellst oder andere Spieldesign-Techniken.
