Les événements de funnel vous permettent de suivre la progression de vos utilisateurs à travers des étapes clés de votre jeu. Cela inclut :
- Intégration — Où les utilisateurs abandonnent-ils lorsqu'ils commencent à jouer à votre jeu ?
- Progression — Où les utilisateurs cessent-ils d'avancer dans votre jeu ?
- Magasin — Où les utilisateurs abandonnent-ils leurs achats ?
Une fois que votre jeu commence à suivre les événements de funnel, vous débloquez la page Funnel du tableau de bord Analytics sur le Creator Hub. Vous pouvez ajouter des onglets au tableau de bord pour jusqu'à dix funnels.
Suivre les événements de funnel
Pour suivre les événements de funnel, identifiez d'abord les funnels les plus importants dans votre jeu et segmentez-les en étapes. Comme l'objectif est de comprendre le comportement des joueurs, ces étapes correspondent généralement à une action ou à un accomplissement.
Dans un RPG, vous pourriez avoir une étape pour rejoindre le jeu, une pour choisir une classe, une autre pour sortir de la salle de départ, et ainsi de suite. Vous appelez généralement LogFunnelStepEvent() ou LogOnboardingFunnelStepEvent() après qu'un joueur ait terminé une étape, mais le plus important est d'être cohérent sur le moment où vous appelez ces méthodes et d'utiliser des noms faciles à interpréter.
Votre flux d'intégration est un excellent endroit pour commencer à suivre les événements de funnel, car c'est probablement là que vous perdez la majorité de vos utilisateurs.
Suivre les funnels uniques
Un funnel unique surveille les événements de conversion qui ne se produisent qu'une seule fois par utilisateur.
Un exemple courant est un funnel d'intégration, qui est crucial pour comprendre comment améliorer la rétention des nouveaux utilisateurs et le temps de session de votre jeu. L'exemple suivant est un funnel d'intégration pour Plant, un jeu de tycoon où les nouveaux utilisateurs entrent dans une ferme, plantent des graines, arrosent les plantes, et plus encore dans un ordre séquentiel :
Suivi des étapes d'intégration dans Plantlocal AnalyticsService = game:GetService("AnalyticsService")-- Journaliser la première étape du FTUEAnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- Numéro de l'étape"Dans la Ferme" -- Nom de l'étape)-- Journaliser la deuxième étapeAnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- Numéro de l'étape"Planter des Graines" -- Nom de l'étape)
Suivre les funnels récurrents
Un funnel récurrent surveille les événements de conversion qui se produisent plusieurs fois par utilisateur.
Un exemple courant est un funnel de magasin, qui peut vous aider à comprendre comment améliorer la conversion des payeurs, l'ARPPU et les revenus de votre jeu. L'exemple suivant est un funnel de magasin où les utilisateurs ouvrent le magasin, voient un article, ajoutent l'article au panier, et plus encore.
Utilisez funnelSessionId pour distinguer les différentes sessions du même utilisateur dans un funnel récurrent, comme l'ouverture du magasin plusieurs fois au cours d'une seule session.
Suivi des étapes du magasinlocal AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")local funnelSessionId = HttpService:GenerateGUID()-- Journaliser lorsque l'utilisateur ouvre le magasinAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Nom du funnel utilisé pour regrouper les étapesfunnelSessionId, -- ID de session de funnel pour cette session de paiement unique1, -- Numéro de l'étape"Magasin Ouvert" -- Nom de l'étape)-- Journaliser lorsque l'utilisateur voit un articleAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Nom du funnel utilisé pour regrouper les étapesfunnelSessionId, -- ID de session de funnel pour cette session de paiement unique2, -- Numéro de l'étape"Vue de l'Article" -- Nom de l'étape)-- Journaliser lorsque l'utilisateur ajoute au panierAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Nom du funnel utilisé pour regrouper les étapesfunnelSessionId, -- ID de session de funnel pour cette session de paiement unique3, -- Numéro de l'étape"Ajouté au Panier" -- Nom de l'étape)
Implémenter funnelSessionId
Lors de l'implémentation de funnels, un funnelSessionId peut vous aider à suivre vos événements mais peut ne pas être nécessaire dans chaque instance. Utilisez les directives suivantes :
- Funnels uniques - Vous n'avez pas besoin d'utiliser funnelSessionId pour les funnels uniques car ils ne se produisent qu'une seule fois par utilisateur.
- Funnels de magasin - Utilisez funnelSessionId pour distinguer les différentes sessions du même utilisateur dans un funnel récurrent, comme l'ouverture du magasin plusieurs fois dans une seule session dans l'exemple précédent. Dans des cas comme celui-ci, où le joueur peut ouvrir le magasin plusieurs fois dans une seule session, il est recommandé d'utiliser un GUID comme funnelSessionId.
- Améliorations d'objets - Utilisez funnelSessionId pour distinguer les différents chemins d'amélioration d'objets, généralement sur une période plus longue qu'une seule session de jeu. Plutôt que d'utiliser un GUID comme dans le cas du funnel de magasin, vous pouvez souvent construire une clé unique basée sur l'objet amélioré, par exemple : <playerId>-<itemId>.
Étape initiale
Les funnels commencent lorsque la première étape est enregistrée. Si vous souhaitez commencer un funnel immédiatement lorsque le joueur rejoint, enregistrez la première étape lors de l'événement PlayerAdded.
Journaliser la première étape dans l'événement PlayerAdded
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Numéro de l'étape
"Joueur Rejoint" -- Nom de l'étape
)
end)
Étapes répétées
Si un utilisateur répète une étape dans un funnel, le funnel ne considère que la première instance de l'étape. Par exemple, si un utilisateur journalise l'étape 2 d'un funnel deux fois, le funnel ne compte que la première instance de l'étape 2. Vous n'avez pas besoin de prendre des mesures spéciales pour gérer les funnels uniques pour les joueurs qui se déconnectent et se reconnectent, et funnelSessionId gère les funnels récurrents.
Les étapes répétées sont ignorées par le funnel, mais elles sont toujours enregistrées et contribuent à la limite de taux globale.
Étapes sautées
Si pour une raison quelconque vous sautez une étape dans un funnel, les étapes précédentes se complètent automatiquement. Par exemple, si vous avez un funnel avec des étapes 1, 2 et 3 et que vous enregistrez l'étape 3 sans enregistrer les étapes 1 ou 2, le funnel considérera les étapes 1 et 2 comme complètes.
Utiliser des filtres de funnel
Roblox fournit des filtres pour vous aider à analyser vos données de funnel. Celles-ci incluent des données sur les joueurs et des données sur les appareils, et vous pouvez également envoyer des données personnalisées. Dans certains cas, le statut d'un joueur peut changer pendant le funnel, par exemple lorsque le joueur change d'appareil entre mobile et bureau.
Pour éviter de compter double les funnels, les filtres s'appliquent uniquement à la première étape du funnel. Cela signifie que si un joueur change d'appareil pendant le funnel, le funnel sera uniquement attribué à leur appareil au moment où ils entrent dans le funnel.
De même, les funnels sont affichés par cohortes, ce qui signifie que si un joueur entre dans le funnel le 19/06, le funnel sera attribué à la cohorte du 19/06 même s'il termine le funnel le 20/06.
Modifier les funnels
Après avoir mis à jour vos étapes de funnel, il est important de définir la plage de dates correcte pour voir le dernier funnel. Si la date actuelle est le 21/06 et que vous avez mis à jour l'étape 2 de votre funnel d'intégration le 14/06, vous devez définir la plage de dates sur le 14/06 – 21/06 pour visualiser le dernier funnel.
Si vous sélectionnez une plage de dates qui inclut une mise à jour d'étape de funnel, un avertissement s'affiche sur l'étape concernée :

Protéger vos funnels contre les exploitants
Pour garder vos données propres, il est important d'ajouter un certain niveau de validation des données dans votre code serveur pour empêcher les exploitants d'envoyer des données invalides à votre service d'analyse.
Par exemple, si vous avez un funnel d'intégration avec trois étapes, vous pouvez utiliser un RemoteEvent pour que le client notifie le serveur lorsque le joueur a terminé chaque étape et ajouter une vérification côté serveur pour vous assurer que le numéro d'étape est valide avant de journaliser l'événement :
Code d'événement côté client
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) -- étape invalide
Code d'événement côté serveur
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(`Étape de tutoriel invalide {step} reçue du client.`)
return
end
print(`{player.Name} a complété l'étape : {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)
Utiliser des champs personnalisés
Les événements de funnel permettent également de se ventiler sur des champs personnalisés pour soutenir une comparaison plus facile entre les segments. Par exemple, vous pouvez suivre quelle voiture de départ donne aux joueurs la meilleure progression, ou attacher différentes cartes pour voir si une certaine carte a un meilleur cycle de jeu que d'autres.

Pour plus d'informations, consultez champs personnalisés.
Utiliser les funnels pour développer votre jeu
Un des funnels les plus importants à suivre est l'intégration, car de nombreux jeux ont du mal avec la rétention et l'engagement des nouveaux utilisateurs.
Dans le funnel d'intégration pour Plant ci-dessous, la plus grande perte se produit à l'étape 2 ("Planter des Graine").

Sur la base de ces données, vous pourriez :
- Ajouter des indicateurs contextuels pour mieux diriger les utilisateurs à planter des graines lorsqu'ils commencent.
- Concevoir une expérience utilisateur pour les nouveaux qui exige que les utilisateurs plantent des graines et fassent pousser une plante réussie avant d'explorer le reste du jeu. Vous pouvez améliorer cet événement en créant des éléments de rétroaction positive ou en utilisant d'autres techniques de conception de jeu.
