أحداث القمع تتيح لك تتبع تقدم مستخدميك عبر المراحل الرئيسية في لعبتك. يتضمن ذلك:
- البدء — أين يتوقف المستخدمون عند البدء في لعبتك؟
- التقدم — أين يتوقف المستخدمون عن التقدم خلال لعبتك؟
- المتجر — أين يتخلى المستخدمون عن عمليات الشراء؟
بمجرد أن تبدأ لعبتك في تتبع أحداث القمع، ستقوم بإلغاء قفل صفحة القمع على لوحة تحليلات مركز المنشئين. يمكنك إضافة تبويبات إلى لوحة التحكم تصل إلى عشرة قمع.
تتبع أحداث القمع
لتتبع أحداث القمع، حدد أولاً أهم قمع في لعبتك وقم تقسيمه إلى خطوات. لأن الهدف هو فهم سلوك اللاعبين، هذه الخطوات عادةً ما تتوافق مع بعض الإجراءات أو الإنجازات.
في لعبة RPG، قد يكون لديك خطوة للانضمام إلى اللعبة، واحدة لاختيار فئة، أخرى للخروج من الغرفة الابتدائية، وهكذا. عادةً ما تستدعي LogFunnelStepEvent() أو LogOnboardingFunnelStepEvent() بعد أن يكمل اللاعب خطوة، لكن الشيء الأكثر أهمية هو أن تكون متسقًا بشأن متى تستدعي هذه الطرق وتستخدم أسماء سهلة الفهم.
تدفق البدء الخاص بك هو مكان رائع لبدء تتبع أحداث القمع، حيث من المحتمل أن تفقد معظم مستخدميك.
تتبع القمع لمرة واحدة
يقوم القمع لمرة واحدة بمراقبة أحداث التحويل التي تحدث مرة واحدة فقط لكل مستخدم.
مثال شائع هو قمع البدء، والذي يعد أمرًا حيويًا لفهم كيفية تحسين احتفاظ المستخدمين الجدد في لعبتك ومدة الجلسة. المثال التالي هو قمع بدء Plant، وهي لعبة تايكون حيث يدخل المستخدمون الجدد مزرعة، يزرعون البذور، يسقون النباتات، والمزيد بطريقة تسلسلية:
تتبع خطوات البدء في Plantlocal AnalyticsService = game:GetService("AnalyticsService")-- سجّل الخطوة الأولى من FTUEAnalyticsService:LogOnboardingFunnelStepEvent(player,1, -- رقم الخطوة"في المزرعة" -- اسم الخطوة)-- سجّل الخطوة الثانيةAnalyticsService:LogOnboardingFunnelStepEvent(player,2, -- رقم الخطوة"زرع البذور" -- اسم الخطوة)
تتبع القمع المتكرر
يقوم القمع المتكرر بمراقبة أحداث التحويل التي تحدث عدة مرات لكل مستخدم.
مثال شائع هو قمع المتجر، والذي يمكن أن يساعدك في فهم كيفية تحسين تحويل اللاعبين في لعبتك، وARPPU، والإيرادات. المثال التالي هو قمع متجر حيث يفتح المستخدمون المتجر، يشاهدون العناصر، يضيفون العناصر إلى العربة، والمزيد.
استخدم funnelSessionId للتمييز بين جلسات مختلفة لنفس المستخدم في قمع متكرر، مثل فتح المتجر عدة مرات في جلسة واحدة.
تتبع خطوات المتجرlocal AnalyticsService = game:GetService("AnalyticsService")local HttpService = game:GetService("HttpService")local funnelSessionId = HttpService:GenerateGUID()-- سجّل عندما يفتح المستخدم المتجرAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- اسم القمع المستخدم لتجميع الخطوات معًاfunnelSessionId, -- معرف جلسة القمع لهذه الجلسة الفريدة1, -- رقم الخطوة"فتح المتجر" -- اسم الخطوة)-- سجّل عندما يشاهد المستخدم عنصرًاAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- اسم القمع المستخدم لتجميع الخطوات معًاfunnelSessionId, -- معرف جلسة القمع لهذه الجلسة الفريدة2, -- رقم الخطوة"مشاهدة العنصر" -- اسم الخطوة)-- سجّل عندما يضيف المستخدم إلى السلةAnalyticsService:LogFunnelStepEvent(player,"ArmoryCheckout", -- اسم القمع المستخدم لتجميع الخطوات معًاfunnelSessionId, -- معرف جلسة القمع لهذه الجلسة الفريدة3, -- رقم الخطوة"تمت الإضافة إلى السلة" -- اسم الخطوة)
تنفيذ funnelSessionId
عند تنفيذ القمع، يمكن أن يساعدك funnelSessionId في تتبع أحداثك ولكنه قد لا يكون مطلوبًا في كل حالة. استخدم الإرشادات التالية:
- قمع لمرة واحدة - لا تحتاج لاستخدام funnelSessionId للقمع لمرة واحدة لأنه يحدث مرة واحدة فقط لكل مستخدم.
- قمع المتجر - استخدم funnelSessionId لتمييز بين جلسات مختلفة لنفس المستخدم في قمع متكرر، مثل فتح المتجر عدة مرات في جلسة واحدة كما في المثال السابق. في حالات مثل هذه، حيث قد يفتح اللاعب المتجر عدة مرات في جلسة واحدة، يوصى باستخدام GUID كـ funnelSessionId.
- ترقيات العناصر - استخدم funnelSessionId للتمييز بين مسارات ترقيات العناصر المختلفة، بشكل عام على مدى فترة زمنية أطول من جلسة لعب واحدة. بدلاً من استخدام GUID كما في حالة قمع المتجر، يمكنك غالبًا بناء مفتاح فريد بناءً على العنصر الذي يتم ترقيته، على سبيل المثال: <playerId>-<itemId>.
الخطوة الأولية
تبدأ القمع عندما يتم تسجيل الخطوة الأولى. إذا كنت ترغب في بدء قمع على الفور عند انضمام اللاعب، قم بتسجيل الخطوة الأولى في حدث PlayerAdded.
تسجيل الخطوة الأولى في حدث PlayerAdded
local AnalyticsService = game:GetService("AnalyticsService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
AnalyticsService:LogOnboardingFunnelStepEvent(
player,
1, -- رقم الخطوة
"انضم اللاعب" -- اسم الخطوة
)
end)
خطوات مكررة
إذا كرر المستخدم خطوة في قمع، يعتبر القمع فقط أول حالة من الخطوة. على سبيل المثال، إذا قام المستخدم بتسجيل الخطوة 2 من قمع مرتين، فإن القمع يحتسب فقط أول حالة من الخطوة 2. لا تحتاج إلى اتخاذ أي إجراء خاص للتعامل مع قمع لمرة واحدة للاعبين الذين ينقطعون ويعيدون الاتصال، وfunnelSessionId يتعامل مع القمع المتكرر.
تُignored الخطوات المكررة بواسطة القمع، لكنها لا تزال مسجلة وتساهم في حد السرعة العالمي.
الخطوات المتجاوزة
إذا قمت بتخطي خطوة ما في القمع لسبب ما، فإن الخطوات السابقة تكتمل تلقائيًا. على سبيل المثال، إذا كان لديك قمع يحتوي على الخطوات 1 و 2 و 3 وسجلت الخطوة 3 بدون تسجيل الخطوتين 1 أو 2، يعتبر القمع الخطوتين 1 و 2 مكتملتين.
استخدم عوامل تصفية القمع
يوفر Roblox عوامل تصفية لمساعدتك في تحليل بيانات قمعك. تشمل هذه بيانات اللاعبين وبيانات الأجهزة، ويمكنك أيضًا إرسال بيانات مخصصة. في بعض الحالات، قد يتغير وضع اللاعب خلال القمع، مثل عندما يقوم اللاعب بتبديل الأجهزة من الهاتف المحمول إلى الكمبيوتر المكتبي.
لتجنب العد المزدوج للقمع، فإن عوامل التصفية تنطبق فقط على الخطوة الأولى من القمع. وهذا يعني أنه إذا قام اللاعب بتبديل الأجهزة خلال القمع، فسيتم نسخ القمع فقط لجهازهم في الوقت الذي يدخلون فيه القمع.
بالمثل، تُعرض القمع حسب مجموعة، مما يعني أنه إذا دخل اللاعب القمع في 6/19، سيتم نسخ القمع إلى مجموعة 6/19 حتى لو أكملوا القمع في 6/20.
تعديل القمع
بعد إجراء تحديث لخطوات قمعك، من المهم تعيين النطاق الزمني الصحيح لرؤية أحدث قمع. إذا كان التاريخ الحالي هو 6/21 وقمت بتحديث الخطوة 2 من قمع البدء الخاص بك في 6/14، يجب عليك تعيين النطاق الزمني إلى 6/14 – 6/21 لعرض أحدث قمع.
إذا اخترت نطاقًا زمنيًا يتضمن تحديث خطوة القمع، سيظهر تحذير على الخطوة ذات الصلة:

حماية قمعك من المستغلين
من أجل الحفاظ على بياناتك نظيفة، من المهم إضافة بعض مستوى من التحقق من البيانات في كود الخادم الخاص بك لمنع المستغلين من إرسال بيانات غير صالحة إلى خدمة تحليلاتك.
على سبيل المثال، إذا كان لديك قمع بدء مكون من ثلاث خطوات، يمكنك استخدام RemoteEvent للعميل لإخطار الخادم عندما يكمل اللاعب كل خطوة وإضافة فحص خادم للتأكد من أن رقم الخطوة صالح قبل تسجيل الحدث:
كود الحدث من جانب العميل
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) -- خطوة غير صالحة
كود الحدث من جانب الخادم
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(`تم تلقي خطوة تدريب غير صالحة {step} من العميل.`)
return
end
print(`{player.Name} أكمل الخطوة: {step}`)
AnalyticsService:LogOnboardingFunnelStepEvent(player, step)
end
onboardingEvent.OnServerEvent:Connect(onPlayerEventFired)
استخدم الحقول المخصصة
تسمح أحداث القمع أيضًا بتفصيل البيانات المخصصة لدعم المقارنة الأسهل بين القطاعات. على سبيل المثال، يمكنك تتبع أي سيارة بداية تعطي اللاعبين أفضل تقدم، أو ربط خرائط مختلفة لرؤية ما إذا كانت خريطة معينة لديها دورة لعبة أفضل من الآخرين.

لمزيد من المعلومات، راجع الحقول المخصصة.
استخدم القمع لتنمية لعبتك
أحد أهم القمع لتتبعه هو البدء لأن العديد من الألعاب تعاني من احتفاظ المستخدمين الجدد والانخراط.
في قمع البدء لـ Plant أدناه، أكبر انخفاض هو الخطوة 2 ("زرع البذور").

استنادًا إلى هذه البيانات، يمكنك:
- إضافة مؤشرات سياقية لتوجيه المستخدمين بشكل أفضل لزرع البذور عند البدء.
- تصميم تجربة جديدة للمستخدم تتطلب من المستخدمين زرع البذور وزراعة نباتات ناجحة قبل استكشاف بقية اللعبة. يمكنك تحسين هذا الحدث من خلال إنشاء عناصر ملاحظات إيجابية أو استخدام تقنيات تصميم ألعاب أخرى.
