Eventi a imbuto ti permettono di monitorare il progresso degli utenti attraverso le fasi chiave del tuo gioco. Questo include:
- Onboarding — Dove abbandonano gli utenti quando iniziano a giocare?
- Progresso — Dove smettono di avanzare gli utenti nel tuo gioco?
- Negozio — Dove abbandonano gli utenti gli acquisti?
Una volta che il tuo gioco inizia a monitorare gli eventi a imbuto, sblocchi la pagina Funnel del pannello di Analytics nel Creator Hub. Puoi aggiungere schede al pannello per un massimo di dieci funnel.
Monitora gli eventi a imbuto
Per monitorare gli eventi a imbuto, prima identifica i funnel più importanti nel tuo gioco e segmentali in passaggi. Poiché l'obiettivo è comprendere il comportamento dei giocatori, questi passaggi di solito corrispondono a qualche azione o traguardo.
In un RPG, potresti avere un passaggio per unirti al gioco, uno per scegliere una classe, un altro per uscire dalla stanza iniziale, e così via. Di solito chiami LogFunnelStepEvent() o LogOnboardingFunnelStepEvent() dopo che un giocatore completa un passaggio, ma la cosa più importante è essere coerenti su quando chiami questi metodi e usare nomi facili da interpretare.
Il tuo flusso di onboarding è un ottimo punto di partenza per monitorare gli eventi a imbuto, poiché è probabile che qui perdi la maggior parte dei tuoi utenti.
Monitora funnel una tantum
Un funnel una tantum monitora gli eventi di conversione che si verificano solo una volta per utente.
Un esempio comune è un funnel di onboarding, che è fondamentale per comprendere come migliorare la retention e il tempo di sessione dei nuovi utenti del tuo gioco. Il seguente esempio è un funnel di onboarding per Plant, un gioco tycoon in cui i nuovi utenti entrano in una fattoria, piantano semi, annaffiano le piante e altro in ordine sequenziale:
local AnalyticsService = game:GetService("AnalyticsService")
-- Registra il primo passaggio del FTUE
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Numero del passaggio
"In Fattoria" -- Nome del passaggio
)
-- Registra il secondo passaggio
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
2, -- Numero del passaggio
"Piantare Semi" -- Nome del passaggio
)Monitora funnel ricorrenti
Un funnel ricorrente monitora gli eventi di conversione che si verificano più volte per utente.
Un esempio comune è un funnel del negozio, che può aiutarti a capire come migliorare la conversione dei pagatori del tuo gioco, ARPPU e ricavi. Il seguente esempio è un funnel del negozio in cui gli utenti aprono il negozio, visualizzano un articolo, aggiungono un articolo al carrello e altro.
Usa funnelSessionId per distinguere tra diverse sessioni dello stesso utente in un funnel ricorrente, come aprire il negozio più volte in una singola sessione.
local AnalyticsService = game:GetService("AnalyticsService")
local HttpService = game:GetService("HttpService")
local funnelSessionId = HttpService:GenerateGUID()
-- Registra quando l'utente apre il negozio
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- Nome del funnel usato per raggruppare i passaggi
funnelSessionId, -- ID della sessione del funnel per questa sessione di checkout unica
1, -- Numero del passaggio
"Negozio Aperto" -- Nome del passaggio
)
-- Registra quando l'utente visualizza un articolo
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- Nome del funnel usato per raggruppare i passaggi
funnelSessionId, -- ID della sessione del funnel per questa sessione di checkout unica
2, -- Numero del passaggio
"Articolo Visualizzato" -- Nome del passaggio
)
-- Registra quando l'utente aggiunge al carrello
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- Nome del funnel usato per raggruppare i passaggi
funnelSessionId, -- ID della sessione del funnel per questa sessione di checkout unica
3, -- Numero del passaggio
"Aggiunto al Carrello" -- Nome del passaggio
)Implementa funnelSessionId
Quando implementi i funnel, un funnelSessionId può aiutarti a monitorare i tuoi eventi ma potrebbe non essere necessario in ogni istanza. Usa le seguenti linee guida:
- Funnel una tantum - Non è necessario utilizzare funnelSessionId per i funnel una tantum perché si verificano solo una volta per utente.
- Funnel del negozio - Usa funnelSessionId per distinguere tra diverse sessioni dello stesso utente in un funnel ricorrente, come aprire il negozio più volte in una singola sessione nell'esempio precedente. In casi come questo, dove il giocatore può aprire il negozio più volte in una singola sessione, è consigliato utilizzare un GUID come funnelSessionId.
- Aggiornamenti degli oggetti - Usa funnelSessionId per distinguere tra diversi percorsi di aggiornamento degli oggetti, generalmente su un periodo di tempo più lungo rispetto a una singola sessione di gioco. Piuttosto che usare un GUID come nel caso del funnel del negozio, puoi spesso costruire una chiave unica basata sull'oggetto che viene aggiornato, ad esempio: <playerId>-<itemId>.
Analytics tiene traccia solo dei 10 valori unici più recenti di funnelSessionId per utente per ogni funnel. Se un utente riutilizza un funnelSessionId che non è tra i suoi 10 più recenti per quel funnel, il funnel lo conta come una nuova sessione.
Passaggio iniziale
I funnel iniziano quando il primo passaggio viene registrato. Se desideri avviare un funnel immediatamente all'ingresso del giocatore, registra il primo passaggio all'evento PlayerAdded.
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Numero del passaggio
"Giocatore Unito" -- Nome del passaggio
)
end)Passaggi ripetuti
Se un utente ripete un passaggio in un funnel, il funnel considera solo la prima istanza del passaggio. Ad esempio, se un utente registra il passaggio 2 di un funnel due volte, il funnel conta solo la prima istanza del passaggio 2. Non devi intraprendere alcuna azione speciale per gestire i funnel una tantum per i giocatori che si disconnettono e riconnettono, e funnelSessionId gestisce i funnel ricorrenti.
I passaggi ripetuti vengono ignorati dal funnel, ma vengono comunque registrati e contribuiscono al limite globale di frequenza.
Passaggi saltati
Se per qualche motivo salti un passaggio in un funnel, i passaggi precedenti vengono automaticamente completati. Ad esempio, se hai un funnel con i passaggi 1, 2 e 3 e registri il passaggio 3 senza registrare i passaggi 1 o 2, il funnel considera i passaggi 1 e 2 come completati.
Usa i filtri a imbuto
Roblox fornisce filtri per aiutarti ad analizzare i dati del tuo funnel. Questi includono dati sui giocatori e dati sui dispositivi, e puoi inviare anche dati personalizzati. In alcuni casi, lo stato di un giocatore può cambiare durante il funnel, ad esempio quando il giocatore passa da un dispositivo mobile a un desktop.
Per evitare il conteggio doppio dei funnel, i filtri si applicano solo al primo passaggio del funnel. Questo significa che se un giocatore cambia dispositivo durante il funnel, il funnel sarà attribuito solo al dispositivo al momento in cui entra nel funnel.
Allo stesso modo, i funnel vengono visualizzati per coorte, il che significa che se un giocatore entra nel funnel il 19/6, il funnel sarà attribuito alla coorte del 19/6 anche se completano il funnel il 20/6.
Modifica i funnel
Dopo aver apportato un aggiornamento ai passaggi del tuo funnel, è importante impostare l'intervallo di date corretto per vedere l'ultimo funnel. Se la data attuale è il 21/6 e hai aggiornato il passaggio 2 del tuo funnel di onboarding il 14/6, dovresti impostare l'intervallo di date dal 14/6 al 21/6 per visualizzare l'ultimo funnel.
Se selezioni un intervallo di date che include un aggiornamento del passaggio del funnel, verrà visualizzato un avviso sul passaggio pertinente:

Proteggi i tuoi funnel dagli exploitatori
Per mantenere i tuoi dati puliti, è importante aggiungere un certo livello di validazione dei dati nel tuo codice server per prevenire che gli exploitatori inviino dati non validi al tuo servizio di analytics.
Ad esempio, se hai un funnel di onboarding con tre passaggi, puoi utilizzare un RemoteEvent per consentire al client di notificare al server quando il giocatore ha completato ciascun passaggio e aggiungere un controllo server per garantire che il numero del passaggio sia valido prima di registrare l'evento:
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) -- passaggio non validolocal 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(`Passaggio tutorial non valido {step} ricevuto dal client.`)
return
end
print(`{player.Name} ha completato il passaggio: {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)Usa campi personalizzati
Gli eventi a imbuto consentono anche di suddividere i dati in campi personalizzati per supportare un confronto più semplice tra segmenti. Ad esempio, puoi monitorare quale auto iniziale offre ai giocatori il miglior progresso, o allegare diverse mappe per vedere se una certa mappa ha un ciclo di gioco migliore rispetto ad altre.

Per ulteriori informazioni, consulta campi personalizzati.
Usa i funnel per far crescere il tuo gioco
Uno dei funnel più importanti da monitorare è l'onboarding perché molti giochi faticano con la retention e l'engagement dei nuovi utenti.
Nel funnel di onboarding per Plant qui sotto, il maggior abbandono si verifica nel passaggio 2 ("Piantare Semi").

In base a questi dati, potresti:
- Aggiungere indicatori contestuali per meglio indirizzare gli utenti a piantare semi quando iniziano.
- Progettare un'esperienza per nuovi utenti che richieda agli utenti di piantare semi e far crescere una pianta di successo prima di esplorare il resto del gioco. Puoi migliorare questo evento creando elementi di feedback positivi o utilizzando altre tecniche di design del gioco.
