Wydarzenia lejkowe pozwalają śledzić postęp użytkowników przez kluczowe etapy w twojej grze. Obejmuje to:
- Onboarding — Gdzie użytkownicy rezygnują, gdy zaczynają korzystać z twojej gry?
- Postęp — Gdzie użytkownicy przestają awansować w twojej grze?
- Sklep — Gdzie użytkownicy porzucają zakupy?
Gdy twoja gra zacznie śledzić wydarzenia lejkowe, odblokujesz stronę Lejków w panelu analitycznym w Centrum Twórcy. Możesz dodać zakładki do panelu dla maksymalnie dziesięciu lejków.
Śledzenie wydarzeń lejkowych
Aby śledzić wydarzenia lejkowe, najpierw zidentyfikuj najważniejsze lejki w swojej grze i podziel je na kroki. Ponieważ celem jest zrozumienie zachowań graczy, te kroki zazwyczaj odpowiadają jakiejś akcji lub osiągnięciu.
W RPG możesz mieć krok dotyczący dołączenia do gry, jeden dotyczący wyboru klasy, inny dotyczący opuszczenia początkowego pokoju itd. Zazwyczaj wywołujesz LogFunnelStepEvent() lub LogOnboardingFunnelStepEvent() po tym, jak gracz ukończy krok, ale najważniejsze jest, aby być konsekwentnym w tym, kiedy wywołujesz te metody i używać łatwych do zrozumienia nazw.
Twój proces onboardingu to świetne miejsce, aby zacząć śledzić wydarzenia lejkowe, ponieważ to prawdopodobnie tam tracisz większość swoich użytkowników.
Śledzenie jednorazowych lejków
Jednorazowy lejek monitoruje wydarzenia konwersji, które występują tylko raz na użytkownika.
Typowym przykładem jest lejek onboardingu, który jest kluczowy do zrozumienia, jak poprawić retencję nowych użytkowników i czas sesji w twojej grze. Poniższy przykład to lejek onboardingu dla Plant, gry tycoon, w której nowi użytkownicy wchodzą na farmę, sadzą nasiona, podlewają rośliny i więcej w kolejności sekwencyjnej:
local AnalyticsService = game:GetService("AnalyticsService")
-- Zaloguj pierwszy krok FTUE
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Numer kroku
"W Farmie" -- Nazwa kroku
)
-- Zaloguj drugi krok
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
2, -- Numer kroku
"Sadzenie Nasion" -- Nazwa kroku
)Śledzenie powtarzających się lejków
Powtarzający się lejek monitoruje wydarzenia konwersji, które występują wielokrotnie na użytkownika.
Typowym przykładem jest lejek sklepu, który może pomóc zrozumieć, jak poprawić konwersję płatników w twojej grze, ARPPU i przychody. Poniższy przykład to lejek sklepu, w którym użytkownicy otwierają sklep, przeglądają przedmioty, dodają przedmioty do koszyka i więcej.
Użyj funnelSessionId, aby odróżnić różne sesje tego samego użytkownika w powtarzającym się lejku, na przykład otwierając sklep wielokrotnie w jednej sesji.
local AnalyticsService = game:GetService("AnalyticsService")
local HttpService = game:GetService("HttpService")
local funnelSessionId = HttpService:GenerateGUID()
-- Zaloguj, gdy użytkownik otwiera sklep
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- Nazwa lejka używana do grupowania kroków
funnelSessionId, -- ID sesji lejka dla tej unikalnej sesji zakupu
1, -- Numer kroku
"Otworzono Sklep" -- Nazwa kroku
)
-- Zaloguj, gdy użytkownik przegląda przedmiot
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- Nazwa lejka używana do grupowania kroków
funnelSessionId, -- ID sesji lejka dla tej unikalnej sesji zakupu
2, -- Numer kroku
"Przeglądano Przedmiot" -- Nazwa kroku
)
-- Zaloguj, gdy użytkownik dodaje do koszyka
AnalyticsService:LogFunnelStepEvent(
player,
"ArmoryCheckout", -- Nazwa lejka używana do grupowania kroków
funnelSessionId, -- ID sesji lejka dla tej unikalnej sesji zakupu
3, -- Numer kroku
"Dodano do Koszyka" -- Nazwa kroku
)Implementacja funnelSessionId
Podczas implementacji lejków, funnelSessionId może pomóc w śledzeniu twoich wydarzeń, ale może nie być wymagany w każdej sytuacji. Użyj następujących wytycznych:
- Jednorazowe lejki - Nie musisz używać funnelSessionId dla jednorazowych lejków, ponieważ występują tylko raz na użytkownika.
- Lejki sklepu - Użyj funnelSessionId, aby odróżnić różne sesje tego samego użytkownika w powtarzającym się lejku, na przykład otwierając sklep wielokrotnie w jednej sesji w wcześniejszym przykładzie. W takich przypadkach, gdzie gracz może otworzyć sklep wielokrotnie w jednej sesji, zaleca się użycie GUID jako funnelSessionId.
- Ulepszenia przedmiotów - Użyj funnelSessionId, aby odróżnić różne ścieżki ulepszeń przedmiotów, zazwyczaj przez dłuższy okres niż jedna sesja gry. Zamiast używać GUID jak w przypadku lejka sklepu, często możesz zbudować unikalny klucz na podstawie ulepszanych przedmiotów, na przykład: <playerId>-<itemId>.
Analiza śledzi tylko 10 najnowszych unikalnych wartości funnelSessionId na użytkownika dla każdego lejka. Jeśli użytkownik ponownie użyje funnelSessionId, który nie znajduje się wśród ich 10 najnowszych dla tego lejka, lejek liczy to jako nową sesję.
Początkowy krok
Lejki zaczynają się, gdy pierwszy krok jest rejestrowany. Jeśli chcesz rozpocząć lejek natychmiast po dołączeniu gracza, zarejestruj pierwszy krok w zdarzeniu PlayerAdded.
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Numer kroku
"Gracz Dołączył" -- Nazwa kroku
)
end)Powtarzające się kroki
Jeśli użytkownik powtarza krok w lejku, lejek uwzględnia tylko pierwszą instancję kroku. Na przykład, jeśli użytkownik zarejestruje krok 2 lejka dwa razy, lejek liczy tylko pierwszą instancję kroku 2. Nie musisz podejmować żadnych specjalnych działań, aby obsłużyć jednorazowe lejki dla graczy, którzy się rozłączają i łączą ponownie, a funnelSessionId obsługuje powtarzające się lejki.
Powtarzające się kroki są ignorowane przez lejek, ale nadal są rejestrowane i przyczyniają się do globalnego limitu.
Pomiń kroki
Jeśli z jakiegoś powodu pominiesz krok w lejku, wcześniejsze kroki automatycznie zostaną ukończone. Na przykład, jeśli masz lejek z krokami 1, 2 i 3 i zarejestrujesz krok 3 bez rejestrowania kroków 1 lub 2, lejek uznaje kroki 1 i 2 za ukończone.
Użyj filtrów lejków
Roblox zapewnia filtry, które pomagają analizować dane lejkowe. Obejmują one dane graczy i dane urządzeń, a także możesz wysyłać dane niestandardowe. W niektórych przypadkach status gracza może się zmienić podczas lejka, na przykład gdy gracz przełącza urządzenia z mobilnego na stacjonarne.
Aby uniknąć podwójnego liczenia lejkow, filtry stosują się tylko do pierwszego kroku lejka. Oznacza to, że jeśli gracz zmienia urządzenia podczas lejka, lejek będzie przypisany tylko do ich urządzenia w momencie, gdy wchodzą do lejka.
Podobnie, lejki wyświetlają się według kohort, co oznacza, że jeśli gracz wchodzi do lejka 19/06, lejek będzie przypisany do kohorty 19/06, nawet jeśli ukończą lejek 20/06.
Modyfikuj lejki
Po dokonaniu aktualizacji kroków lejka ważne jest, aby ustawić odpowiedni zakres dat, aby zobaczyć najnowszy lejek. Jeśli bieżąca data to 21/06, a zaktualizowałeś krok 2 swojego lejka onboardingu 14/06, powinieneś ustawić zakres dat na 14/06 – 21/06, aby zobaczyć najnowszy lejek.
Jeśli wybierzesz zakres dat, który obejmuje aktualizację kroku lejka, na odpowiednim kroku wyświetli się ostrzeżenie:

Chroń swoje lejki przed oszustami
Aby utrzymać swoje dane w czystości, ważne jest, aby dodać pewien poziom walidacji danych w swoim kodzie serwera, aby zapobiec oszustom wysyłania nieprawidłowych danych do twojej usługi analitycznej.
Na przykład, jeśli masz lejek onboardingu z trzema krokami, możesz użyć RemoteEvent, aby klient powiadomił serwer, gdy gracz ukończy każdy krok i dodać sprawdzenie serwera, aby upewnić się, że numer kroku jest ważny przed zarejestrowaniem wydarzenia:
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) -- nieprawidłowy kroklocal 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(`Otrzymano nieprawidłowy krok tutorialu {step} od klienta.`)
return
end
print(`{player.Name} ukończył krok: {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)Użyj pól niestandardowych
Wydarzenia lejkowe pozwalają również na rozbicie na pola niestandardowe, aby ułatwić porównanie między segmentami. Na przykład, możesz śledzić, który startowy samochód daje graczom najlepszy postęp, lub dołączyć różne mapy, aby zobaczyć, czy dana mapa ma lepszy cykl gry niż inne.

Aby uzyskać więcej informacji, zobacz pola niestandardowe.
Użyj lejków, aby rozwijać swoją grę
Jednym z najważniejszych lejków do śledzenia jest onboarding, ponieważ wiele gier ma problemy z retencją i zaangażowaniem nowych użytkowników.
W lejku onboardingu dla Plant poniżej, największy spadek występuje w kroku 2 ("Sadzenie Nasion").

Na podstawie tych danych możesz:
- Dodać wskaźniki kontekstowe, aby lepiej kierować użytkowników do sadzenia nasion, gdy zaczynają.
- Zaprojektować nowe doświadczenie dla użytkowników, które wymaga od nich sadzenia nasion i hodowania udanej rośliny przed eksplorowaniem reszty gry. Możesz poprawić to wydarzenie, tworząc elementy pozytywnej informacji zwrotnej lub używając innych technik projektowania gier.
