Funnel olayları, kullanıcıların oyununuzun ana aşamalarındaki ilerlemesini takip etmenizi sağlar. Bu şunları içerir:
- Kayıt — Kullanıcılar oyununuzla başlarken nerede terk ediyor?
- İlerleme — Kullanıcılar oyununuzda nerede ilerlemeyi durduruyor?
- Dükkan — Kullanıcılar satın alma işlemlerini nerede bırakıyor?
Oyununuza funnel olaylarını takip etmeye başladıktan sonra, Creator Hub'daki Analitik kontrol panelinin Funnel sayfasını açmış olursunuz. Panoya en fazla on funnel ekleyebilirsiniz.
Funnel olaylarını takip etme
Funnel olaylarını takip etmek için, önce oyununuzdaki en önemli funnel'ları belirleyin ve bunları adımlara ayırın. Amaç, oyuncu davranışını anlamak olduğundan, bu adımlar genellikle bazı eylemler veya başarılarla ilişkilendirilir.
Bir RPG'de, oyuna katılma, bir sınıf seçme, başlangıç odasından çıkma gibi adımlarınız olabilir. Oyuncu bir adımı tamamladıktan sonra genellikle LogFunnelStepEvent() veya LogOnboardingFunnelStepEvent() çağırırsınız, ancak en önemli şey bu yöntemleri ne zaman çağırdığınızda ve anlaşılır isimler kullandığınızda tutarlı olmaktır.
Kayıt akışınız, funnel olaylarını takip etmeye başlamak için harika bir yerdir, çünkü burada muhtemelen çoğu kullanıcınızı kaybediyorsunuzdur.
Tek seferlik funnel'ları takip etme
Tek seferlik bir funnel, yalnızca bir kez, kullanıcının başına gelen dönüşüm olaylarını izler.
Yaygın bir örnek, oyununuzun yeni kullanıcılarını elde tutma ve oturum süresini nasıl arttırabileceğinizi anlamak için kritik olan kayıt funnel'ıdır. Aşağıdaki örnek, yeni kullanıcıların sırayla bir çiftliğe girdiği, tohum ektiği, bitkisini suladığı ve diğer işlemleri gerçekleştirdiği Plant adlı bir tycoon oyunu kayıt funnel'ıdır:
Plant'ta Kayıt Adımlarını Takip Etmelocal AnalyticsService = game:GetService("AnalyticsService")-- FTUE'nin ilk adımını kaydetAnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- Adım numarası"Çiftlikte" -- Adım adı)-- İkinci adımı kaydetAnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- Adım numarası"Tohum Ekle" -- Adım adı)
Tekrarlayan funnel'ları takip etme
Tekrarlayan bir funnel, kullanıcının başına gelen, birden fazla kez meydana gelen dönüşüm olaylarını izler.
Yaygın bir örnek, oyununuzun ödeme dönüşümünü, ARPPU'yu ve gelirini artırmada size yardımcı olabilecek bir dükkan funnel'ıdır. Aşağıdaki örnek, kullanıcıların dükkânı açtığı, ürünü görüntülediği, ürünü sepete eklediği ve daha fazlasını içeren bir dükkan funnel'ıdır.
Tekrarlayan bir funnel'da, kullanıcının farklı oturumlarını ayırt etmek için funnelSessionId kullanın, örneğin, tek bir oturumda dükkanı birden fazla kez açma durumunda.
Dükkan Adımlarını Takip Etmelocal AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")local funnelSessionId = HttpService:GenerateGUID()-- Kullanıcı dükkanı açtığında kaydetAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Adımları bir arada gruplamak için kullanılan funnel adıfunnelSessionId, -- Bu benzersiz ödeme oturumu için funnel oturumu ID'si1, -- Adım numarası"Dükkanı Açtı" -- Adım adı)-- Kullanıcı bir ürünü görüntülediğinde kaydetAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Adımları bir arada gruplamak için kullanılan funnel adıfunnelSessionId, -- Bu benzersiz ödeme oturumu için funnel oturumu ID'si2, -- Adım numarası"Ürünü Görüntüledi" -- Adım adı)-- Kullanıcı sepete eklediğinde kaydetAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- Adımları bir arada gruplamak için kullanılan funnel adıfunnelSessionId, -- Bu benzersiz ödeme oturumu için funnel oturumu ID'si3, -- Adım numarası"Sepete Eklendi" -- Adım adı)
funnelSessionId'yi Uygulama
Funnel'ları uygularken, bir funnelSessionId kullanarak olaylarınızı takip edebilirsiniz, ancak her durumda gerekli olmayabilir. Aşağıdaki kılavuzları kullanın:
- Tek seferlik funnel'lar - Tek seferlik funnel'lar için funnelSessionId kullanmanıza gerek yoktur, çünkü bunlar yalnızca bir kez meydana gelir.
- Dükkan funnel'ları - Tekrarlayan bir funnel'da, kullanıcının aynı oturumda dükkanı birden fazla kez açması gibi, farklı kullanıcı oturumlarını ayırt etmek için funnelSessionId kullanın. Bu gibi durumlarda, oyuncunun tek bir oturumda dükkanı birden fazla kez açabileceği için, funnelSessionId olarak bir GUID kullanılması önerilir.
- Öğe yükseltmeleri - Farklı öğe yükseltme yollarını ayırt etmek için funnelSessionId kullanın, genellikle birden fazla oyun oturumuna yayılacak şekilde. Dükkan funnel'ı durumunda olduğu gibi bir GUID kullanmak yerine, genellikle yükseltilen öğeye dayanarak benzersiz bir anahtar oluşturabilirsiniz, örneğin: <playerId>-<itemId>.
İlk adım
Funnel'lar, ilk adım kaydedildiğinde başlar. Bir funnel'a oyuncu katıldığında hemen başlamak istiyorsanız, PlayerAdded olayında ilk adımı kaydedin.
PlayerAdded olayında ilk adımı kaydetme
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- Adım numarası
"Oyuncu Katıldı" -- Adım adı
)
end)
Tekrar edilen adımlar
Bir kullanıcı bir funnel'da bir adımı tekrar ederse, funnel yalnızca adımın ilk örneğini dikkate alır. Örneğin, bir kullanıcı bir funnel'ın adım 2'sini iki kez kaydederse, funnel yalnızca adım 2'nin ilk örneğini sayar. Disconnect ve reconnect olan oyuncular için tek seferlik funnel'lar ile ilgili özel bir işlem yapmanıza gerek yoktur ve funnelSessionId tekrarlayan funnel'lar için gerekli olan tüm durumu yönetir.
Tekrar edilen adımlar funnel tarafından göz ardı edilir, ancak yine de kaydedilir ve global oran limiti üzerinde etkili olur.
Atlanan adımlar
Eğer bir nedenle bir funnel'da bir adımı atlarsanız, daha önceki adımlar otomatik olarak tamamlanır. Örneğin, 1, 2 ve 3 adımlarına sahip bir funnel'ınız varsa ve 1 veya 2 adımlarını kaydetmeden adım 3'ü kaydederseniz, funnel 1 ve 2 adımlarını tamamlanmış olarak kabul eder.
Funnel filtrelerini kullanma
Roblox, funnel verilerinizi analiz etmenize yardımcı olacak filtreler sağlar. Bu filtreler oyuncu verilerini ve cihaz verilerini içerir ve özel verileri de gönderebilirsiniz. Bazı durumlarda, bir oyuncunun durumu funnel sırasında değişebilir, örneğin oyuncu cihazını mobilden masaüstüne geçirdiğinde.
Funnel'ları çift sayım yapmaktan kaçınmak için filtreler yalnızca funnel'ın ilk adımına uygulanır. Bu, bir oyuncu funnel sırasında cihazını değiştirdiğinde, funnel'ı yalnızca funnel'a girdiği sıradaki cihazına atfedeceği anlamına gelir.
Benzer şekilde, funnel'lar kohortlar tarafından görüntülenir, yani eğer bir oyuncu funnel'a 6/19'da katılırsa, funnel 6/19 kohortuna atfedilecektir, hatta funnel'ı 6/20'de tamamlasa bile.
Funnel'ları değiştirme
Funnel adımlarınızda bir güncelleme yaptığınızda, en son funnel'ı görmek için doğru tarih aralığını ayarlamak önemlidir. Mevcut tarih 6/21 ise ve 6/14'te kayıt funnel'ınızın 2. adımını güncellediyseniz, en son funnel'ı görüntülemek için tarih aralığını 6/14 - 6/21 olarak ayarlamalısınız.
Funnel adım güncellemelerini içeren bir tarih aralığı seçerseniz, ilgili adımda bir uyarı görüntülenir:

Funnel'larınızı kötü niyetli yazılımlardan koruyun
Verilerinizi temiz tutmak için, sunucu kodunuzda kötü niyetli yazılımların analitik servisinize geçersiz veriler göndermesini engellemek için bir düzeyde veri doğrulama eklemek önemlidir.
Örneğin, üç adımla bir kayıt funnel'ınız varsa, her adım tamamlandığında sunucuya bildirmek için istemci için bir RemoteEvent kullanabilir ve olayı kaydetmeden önce adım numarasının geçerli olduğunu kontrol etmek için bir sunucu kontrolü ekleyebilirsiniz:
İstemci tarafı olay kodu
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) -- geçersiz adım
Sunucu tarafı olay kodu
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(`İstemciden gelen geçersiz eğitim adımı {step} alındı.`)
return
end
print(`{player.Name} adımı tamamladı: {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)
Özel alanları kullanma
Funnel olayları, segmentler arasında daha kolay karşılaştırma yapmak için özel alanlarda ayrılma imkanı sunar. Örneğin, hangi başlangıç aracının oyunculara en iyi ilerlemeyi sağladığını takip edebilir veya farklı haritaları ekleyerek belirli bir haritanın diğerlerinden daha iyi bir oyun akışına sahip olup olmadığını görebilirsiniz.

Daha fazla bilgi için özel alanlar bölümüne bakın.
Oyunuzu Büyütmek için Funnel'ları Kullanın
Takip edilmesi en önemli funnel'lardan biri kayıttır çünkü birçok oyun yeni kullanıcıları elde tutma ve etkileşimde zorluk çeker.
Aşağıdaki Plant için kayıt funnel'ında, en büyük düşüş 2. adımda ("Tohum Ekle") gerçekleşiyor.

Bu veriye dayanarak, şunları yapabilirsiniz:
- Kullanıcılara tohum eklemeleri için daha iyi yönlendirmeler sağlamak amacıyla bağlamsal göstergeler ekleyin.
- Kullanıcıların oyun deneyimini keşfetmeden önce tohum ekleyip başarılı bir bitki yetiştirmelerini gerektiren yeni bir kullanıcı deneyimi tasarlayın. Bu olayı geliştirmek için pozitif geri bildirim unsurları oluşturabilir veya diğer oyun tasarım tekniklerini kullanabilirsiniz.
