Eventi di imbuto ti consentono di monitorare i progressi degli utenti attraverso le fasi chiave del tuo gioco. Questo include:
- Onboarding — Dove abbandonano gli utenti quando iniziano a giocare?
- Progresso — Dove smettono gli utenti di avanzare nel gioco?
- Negozio — Dove abbandonano gli utenti gli acquisti?
Una volta che il tuo gioco inizia a monitorare gli eventi di imbuto, sblocchi la pagina Funnel del dashboard Analytics nel Creator Hub. Puoi aggiungere schede al dashboard per un massimo di dieci imbuto.
Monitorare gli eventi di imbuto
Per monitorare gli eventi di imbuto, prima identifica gli imbuto più importanti nel tuo gioco e segmentali in passaggi. Poiché l’obiettivo è comprendere il comportamento del giocatore, 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 utilizzare nomi facili da interpretare.
Il tuo flusso di onboarding è un ottimo punto di partenza per monitorare gli eventi di imbuto, poiché è probabile che qui perdi la maggior parte dei tuoi utenti.
Monitorare imbuto una tantum
Un imbuto una tantum monitora gli eventi di conversione che si verificano solo una volta per utente.
Un esempio comune è un imbuto 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 imbuto di onboarding per Plant, un gioco tycoon in cui i nuovi utenti entrano in una fattoria, piantano semi, annaffiano le piante e altro ancora in ordine sequenziale:
Monitorare i Passaggi di Onboarding in Plantlocal AnalyticsService = game:GetService("AnalyticsService")-- Registra il primo passo del FTUEAnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- Numero del passaggio"In Fattoria" -- Nome del passaggio)-- Registra il secondo passaggioAnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- Numero del passaggio"Piantare il Semi" -- Nome del passaggio)
Monitorare imbuto ricorrenti
Un imbuto ricorrente monitora gli eventi di conversione che si verificano più volte per utente.
Un esempio comune è un imbuto di negozio, che può aiutarti a comprendere come migliorare la conversione dei pagatori del tuo gioco, l'ARPPU e le entrate. Il seguente esempio è un imbuto di negozio in cui gli utenti aprono il negozio, visualizzano un oggetto, aggiungono un oggetto al carrello, e altro.
Utilizza funnelSessionId per distinguere tra le diverse sessioni dello stesso utente in un imbuto ricorrente, come nell'aprire il negozio più volte in una singola sessione.
Monitorare i Passaggi del Negoziolocal AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")local funnelSessionId = HttpService:GenerateGUID()-- Registra quando l'utente apre il negozioAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Nome dell'imbuto utilizzato per raggruppare i passaggifunnelSessionId, -- ID sessione dell'imbuto per questa sessione di checkout unica1, -- Numero del passaggio"Negozio Aperto" -- Nome del passaggio)-- Registra quando l'utente visualizza un oggettoAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Nome dell'imbuto utilizzato per raggruppare i passaggifunnelSessionId, -- ID sessione dell'imbuto per questa sessione di checkout unica2, -- Numero del passaggio"Oggetto Visualizzato" -- Nome del passaggio)-- Registra quando l'utente aggiunge al carrelloAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Nome dell'imbuto utilizzato per raggruppare i passaggifunnelSessionId, -- ID sessione dell'imbuto per questa sessione di checkout unica3, -- Numero del passaggio"Aggiunto al Carrello" -- Nome del passaggio)
Implementare funnelSessionId
Quando implementi gli imbuto, un funnelSessionId può aiutarti a monitorare i tuoi eventi, ma potrebbe non essere necessario in ogni istanza. Usa le linee guida seguenti:
- Imbuto una tantum - Non è necessario utilizzare funnelSessionId per gli imbuto una tantum perché si verificano solo una volta per utente.
- Imbuti del negozio - Usa funnelSessionId per distinguere tra diverse sessioni dello stesso utente in un imbuto ricorrente, come aprire il negozio più volte in una singola sessione nell'esempio precedente. In casi come questo, dove il giocatore potrebbe aprire il negozio più volte in una singola sessione, è consigliabile 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 utilizzare un GUID come nel caso dell'imbuto del negozio, puoi spesso costruire una chiave unica basata sull'oggetto che viene aggiornato, ad esempio: <playerId>-<itemId>.
Passaggio iniziale
Gli imbuto iniziano quando il primo passaggio è registrato. Se desideri avviare un imbuto immediatamente all'ingresso del giocatore, registra il primo passaggio all'evento PlayerAdded.
Registrare il primo passaggio nell'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 imbuto, l'imbuto considera solo la prima istanza del passaggio. Ad esempio, se un utente registra il passaggio 2 di un imbuto due volte, l'imbuto conta solo la prima istanza del passaggio 2. Non devi prendere alcuna azione speciale per gestire gli imbuto una tantum per i giocatori che si disconnettono e riconnettono, e funnelSessionId gestisce gli imbuto ricorrenti.
I passaggi ripetuti vengono ignorati dall'imbuto, ma vengono comunque registrati e contribuiscono al limite globale di velocità.
Passaggi saltati
Se, per qualche motivo, salti un passaggio in un imbuto, i passaggi precedenti vengono automaticamente completi. Ad esempio, se hai un imbuto con i passaggi 1, 2 e 3 e registri il passaggio 3 senza registrare i passaggi 1 o 2, l'imbuto considera i passaggi 1 e 2 come completati.
Utilizzare i filtri dell'imbuto
Roblox fornisce filtri per aiutarti ad analizzare i dati del tuo imbuto. Questi includono dati dei giocatori e dati del dispositivo, e puoi inviare anche dati personalizzati. In alcuni casi, lo stato di un giocatore potrebbe cambiare durante l'imbuto, come quando il giocatore passa da un dispositivo mobile a un desktop.
Per evitare il conteggio doppio degli imbuto, i filtri si applicano solo al primo passaggio dell'imbuto. Questo significa che se un giocatore cambia dispositivo durante l'imbuto, l'imbuto sarà attribuito solo al dispositivo utilizzato al momento dell'ingresso nell'imbuto.
Allo stesso modo, gli imbuto sono visualizzati per coorte, il che significa che se un giocatore entra nell'imbuto il 19/06, l'imbuto sarà attribuito alla coorte del 19/06 anche se completa l'imbuto il 20/06.
Modificare gli imbuto
Dopo aver effettuato un aggiornamento ai passaggi del tuo imbuto, è importante impostare l'intervallo di date corretto per vedere l'imbuto più recente. Se la data attuale è il 21/06 e hai aggiornato il passaggio 2 del tuo imbuto di onboarding il 14/06, dovresti impostare l'intervallo di date su 14/06 – 21/06 per visualizzare l'imbuto più recente.
Se selezioni un intervallo di date che include un aggiornamento del passaggio dell'imbuto, verrà visualizzato un avviso sul passaggio pertinente:

Proteggi i tuoi imbuto dagli exploitatori
Per mantenere i tuoi dati puliti, è importante aggiungere un certo livello di validazione dei dati nel tuo codice server per impedire agli exploitatori di inviare dati non validi al tuo servizio di analisi.
Ad esempio, se hai un imbuto 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 assicurarti che il numero di passaggio sia valido prima di registrare l'evento:
Codice evento lato 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) -- passaggio non valido
Codice evento lato server
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(`Passaggio del 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)
Utilizza campi personalizzati
Gli eventi di imbuto consentono inoltre di suddividere i campi personalizzati per supportare un confronto più semplice tra i segmenti. Ad esempio, puoi monitorare quale auto di partenza offre ai giocatori la migliore progressione, o allegare diverse mappe per vedere se una determinata mappa ha un ciclo di gioco migliore rispetto ad altre.

Per ulteriori informazioni, vedere campi personalizzati.
Utilizza gli imbuto per far crescere il tuo gioco
Uno degli imbuto più importanti da monitorare è l'onboarding perché molti giochi faticano con la retention e l'engagement dei nuovi utenti.
Nell'imbuto di onboarding per Plant qui sotto, la più grande perdita è il passaggio 2 ("Piantare il Semi").

Basato su questi dati, potresti:
- Aggiungere indicatori contestuali per meglio indirizzare gli utenti a piantare semi quando stanno iniziando.
- Progettare un'esperienza per i nuovi utenti che richiede ai giocatori 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.
