الترويج / ROBLOX
قمع التعلم في Roblox: اكتشف الخطوة التي يتوقف عندها اللاعبون
ندرس ورشة خيالية بأربع مراحل: الدخول، واستلام الطلب، وإتمام التوصيل، وتلقي المكافأة. نحدد أحداثًا يمكن التحقق منها، ونميز صعوبة التعلم عن خطأ القياس، ونجهز مقارنة بين نسختين. جميع أرقام المثال افتراضية؛ لم نقس احتفاظ ألعاب المؤلف باللاعبين.
ابدأ بالسؤال لا بالرسم #
تخيل ورشة يأخذ فيها المبتدئ طردًا، ويمشي إلى محطة، ثم يتلقى تأكيد التوصيل. يرى المطور جلسات قصيرة ويفترض أن الطريق طويل. لكن اللاعب ربما خرج قبل أخذ الطرد، أو لم يفهم الزر، أو أكمل التوصيل دون ملاحظة المكافأة. مدة الجلسة الإجمالية لا تفرق بين هذه الحالات.
اسأل سؤالًا محددًا: بعد أي فعل قابل للتحقق يتوقف أكبر عدد من المشاركين عن التقدم؟ يحدد السؤال تسلسل الأحداث قبل اختيار الأداة. لا تجعل الهدف إرسال أكبر كمية من التحليلات. ينبغي لكل حدث أن يجيب عن سلوك، لا أن يثبت فقط استدعاء دالة أخرى. التسلسل المفيد يوضح ما أنجزه اللاعب وأين يبدأ التحقيق التالي.
الموقع واللعبة يراقبان أفعالًا مختلفة #
الضغط على اللعب في موقع يثبت التفاعل مع رابط. لا يثبت الدخول إلى خادم أو إكمال طلب أو استلام غرض. قس المسار داخل اللعبة على حدة. لا تجمع زوار الموقع ولاعبي الخادم في قمع واحد دون طريقة مبررة لربط الملاحظات.
يتناول المقال تحليلات Roblox، وليس إنشاء هدف جديد في Yandex Metrica. لا نغير عداد الموقع. قراءة دليل مدة طويلة لا تبرر إرسال حدث إكمال التعليم داخل اللعبة. تأكد من الفعل في المكان الذي وقع فيه فعلًا. وضوح هذا الحد يجعل التفسير أسهل، ويمنع تحويل تفاعل ناجح في الموقع إلى إنجاز خيالي في اللعبة.
حدد مراحل الورشة الأربع #
نقترح تسلسلًا خاصًا بالمثال: يدخل اللاعب سيناريو التعلم، ويعين الخادم الطلب الأول، ويؤكد الخادم التوصيل، ثم يطبق المكافأة الأولى. هذه تسميات تصميمية وليست مراحل تفرضها Roblox. اكتب لكل مرحلة رقمًا واسمًا ثابتًا وشرط إكمال دقيقًا.
عرض تلميح ليس قبول طلب. إذا كان السؤال عن ظهور التلميح، يمكن قياس عرضه منفصلًا، لكنه لا يحل محل قبول المهمة. كذلك ظهور صندوق ليس استلام مكافأته. يجب أن يشرح جدول التخطيط حالة الخادم التي تثبت كل خطوة. بهذه الطريقة يستطيع مطور آخر مراجعة القياس دون تخمين معنى اكتمال المرحلة.
| المرحلة | تأكيد الخادم |
|---|---|
| الدخول إلى الورشة | الوصول إلى التعليم |
| تعيين الطلب | تعيين الطلب الأول |
| قبول التوصيل | إتمام التوصيل |
| تطبيق المكافأة | تطبيق المكافأة الأولى |
أرسل الأحداث من السياق المناسب #
توثق Roblox الدالة LogOnboardingFunnelStepEvent للتعلم الأولي، وLogFunnelStepEvent للأقماع الأخرى. تُرسل الأحداث من الخادم في لعبة منشورة؛ لا يرسلها Studio إلى الخدمة. لذلك لا يثبت اختبار المعالج بمرسل محاكى أن بيانات وصلت إلى Creator Hub.
افصل التحقق من اللعب عن إرسال التحليلات. يعرف الخادم هل عُين الطلب وهل قُبل التوصيل، ثم يمكنه تسجيل المرحلة. طلب العميل تسجيل المرحلة الرابعة لا يحل محل هذه الشروط. يتلقى المثال التعليمي أدناه مرحلة مؤكدة من منطق الخادم بدل رقم يرسله جهاز اللاعب. تظل معالجات اللعبة مسؤولة عن تأكيد الفعل. لم يُربط المثال بلعبة نشطة.
الكود هو ModuleScript باسم OnboardingObserver داخل ServerScriptService. ينشئ Script الخادم observer = OnboardingObserver.new(function(player, step, name) AnalyticsService:LogOnboardingFunnelStepEvent(player, step, name) end). استدعِ observer:RecordVerified(player, step) بعد التأكد الفعلي من الفعل، وobserver:Forget(player) عند المغادرة. لا يربط النموذج RemoteEvent ولا يتحقق بدل اللعبة من التوصيل. يفحص ترتيب 1–4 ويمنع التكرار في حالته الحالية. تعني true اكتمال الاستدعاء المحلي دون خطأ، وليس وصوله إلى اللوحة. بعد فشل الإرسال تعيد مرحلة لاحقة OutOfOrder حتى إرسال السابقة بنجاح؛ افحص التشخيص دون منع المكافأة. لا تُحفظ الحالة بين الخوادم. استُخدم مرسل محاكى في اختبارات Luau المحلية، ولم تُرسل أحداث فعلية.
في بداية Script الخادم الذي يستدعي الوحدة، عرّف local AnalyticsService = game:GetService("AnalyticsService") وlocal OnboardingObserver = require(game:GetService("ServerScriptService"):WaitForChild("OnboardingObserver")). بعد إنشاء observer اربط game:GetService("Players").PlayerRemoving:Connect(function(player) observer:Forget(player) end). أضف RecordVerified إلى معالجات الخادم الحالية للأفعال المؤكدة مع الإبقاء على تحقق شروط اللعب.
-- ModuleScript: OnboardingObserver, in ServerScriptService.
-- Call only from server logic after a verified gameplay action.
-- This module observes progress; it never grants rewards.
local Observer = {}
local names = {"EnteredWorkshop", "OrderAssigned", "DeliveryAccepted", "RewardApplied"}
function Observer.new(send)
assert(type(send) == "function", "Sender required")
local lastStep = {}
local adapter = {}
function adapter:RecordVerified(player, step)
if player == nil then return false, "InvalidPlayer" end
if type(step) ~= "number" or step ~= math.floor(step)
or step < 1 or step > #names then
return false, "InvalidStep"
end
local previous = lastStep[player] or 0
if step <= previous then return false, "AlreadyObserved" end
if step ~= previous + 1 then return false, "OutOfOrder" end
local ok = pcall(send, player, step, names[step])
if not ok then return false, "SendFailed" end
lastStep[player] = step
-- Local call completed. This is NOT a dashboard delivery receipt.
return true, "CallCompleted"
end
function adapter:Forget(player)
lastStep[player] = nil
end
return adapter
end
return Observer
لا تحذف البداية لتحسين الرسم #
بحسب الوثائق، يبدأ القمع مع تسجيل خطوته الأولى. إذا كان الحدث الأول استلام المكافأة، فأنت تراقب من وصلوا إليها فقط. لا يجوز استنتاج أن جميع الداخلين أكملوا التعليم، لأن الآخرين خارج التسلسل المقاس أصلًا.
اختر البداية وفق السؤال. لدراسة الوصول الكامل قد تكون دخول الخادم؛ ولمهمة تعليمية محددة قد تكون الوصول إلى السيناريو. اكتب التعريف بجانب المراحل. لا تغيره بصمت بين النسخ، وإلا وصف رسمان متشابهان مجموعتين مختلفتين، ولم يعد الفرق بينهما قابلًا للتفسير كأثر لتعديل واحد في التعليم.
التكرار وتجاوز الخطوات يؤثران في المعنى #
يأخذ قمع Roblox أول حدوث للخطوة المكررة، لكن الإرسالات الزائدة تظل تستهلك حد الأحداث. وقد تُعتبر الخطوات السابقة المتجاوزة مكتملة عند وصول خطوة لاحقة. لذلك لا يثبت الرسم الممتلئ تلقائيًا أن الخادم أرسل كل سجل متوقع.
أنشئ سجلًا تعليميًا فيه الفعل والرقم المتوقع والرقم المرسل فعليًا. افحص خصوصًا المسارات التي تطبق فيها بيانات قديمة محفوظة مكافأة تلقائية. ربما لم ينفذ هذا اللاعب التعليم الجديد. إن كانت حالة مختلفة، فلا تخلطها بالبداية الأولى، ولا ترسل إنجازات لمجرد ملء التقرير. على التعريف والسجل وصف الطريق الحقيقي.
تحقق من القياس قبل دراسة المغادرة #
جهز طرقًا منضبطة للاختبار. يدخل مختبر ويتوقف قبل قبول الطلب. يقبله آخر دون إتمام التوصيل. يكمل ثالث السيناريو كله. حدد مسبقًا الأحداث التي يجب أن تظهر والتي يجب ألا تظهر في كل طريق.
لا تنتج مئات الدخولات المتطابقة للحصول على رسم جذاب. الاختبار الصغير المنضبط يفحص التوصيل، ولا يصف الجمهور المعتاد. علّم ملاحظات الاختبار في دفترك، واحسب أثرها عندما تكون البيانات قليلة. الطرق المذكورة هنا خطة وليست ادعاء زيارات نُفذت. سجل النتائج الفعلية منفصلة عندما تتوفر بيئة الاختبار المنشورة المناسبة.
| الفحص | المراحل المتوقعة |
|---|---|
| التوقف قبل الطلب | المرحلة 1 فقط |
| قبول دون توصيل | المرحلتان 1 و2 |
| إكمال المسار | المراحل 1–4 بالترتيب |
| فشل المرسل | لا تدعِ وصول البيانات |
اقرأ الانخفاض الافتراضي بحذر #
افترض مثالًا خياليًا فيه 100 دخول، و60 طلبًا مقبولًا، و45 توصيلًا، و40 مكافأة مستلمة. ليست هذه إحصاءات موقعنا أو ألعابنا. لم يتقدم أربعون شخصًا بين المرحلتين الأولى والثانية، لكن الأرقام الأربعة وحدها لا تحدد السبب.
ربما لم يجدوا المحطة، أو تشتتوا، أو واجهوا خطأ، أو قرروا أن اللعبة لا تناسبهم. أعد تنفيذ الانتقال وافحص وضوح المهمة واحتمالات الفشل. لا تتهم الزر من الرسم وحده. يحدد القياس موضعًا يستحق البحث؛ تفسير السبب يحتاج ملاحظات أخرى. حافظ على الفرق بين فرضيتك وما تثبته الأفعال المعدودة.
قارن الهاتف والحاسوب بعناية #
قبل المقارنة، تحقق من أن الجهازين يقدمان سيناريو التعليم نفسه. قد تغطي لوحة الزر على الهاتف، وقد يغلق لاعب الحاسوب التلميح بالخطأ. هاتان فرضيتان قابلتان للاختبار وليستا استنتاجين ثابتين عن عادات الجمهور.
تتعلق مرشحات قمع Roblox بالخطوة الأولى. تغيير الجهاز أثناء الطريق لا ينقل النتيجة كلها إلى مجموعة جديدة. راعِ ذلك عند التفسير، ولا تفترض أن الفعل الأخير وقع حتمًا على الجهاز المعروض في المرشح. سجل جهاز المختبر الحقيقي بشكل منفصل أثناء فحص الواجهة يدويًا؛ فهذا يجيب عن سؤال مختلف عن إسناد المجموعة في التحليلات.
غير شيئًا محددًا واحدًا #
اختر تعديلًا يمكن فحصه: تقريب شرح الطرد من المحطة، أو إظهار الاتجاه بعد قبول الطلب، أو إبراز تأكيد التوصيل. هذه اقتراحات لورشتنا الخيالية، وليست ميزات أُضيفت إلى ألعاب المؤلف الحالية.
لا تعدل الطريق والمكافآت والأسعار والواجهة معًا إذا أردت فهم أثر تعديل واحد. احتفظ بتاريخ النشر ونسخة السيناريو وتعريفات المراحل. قارن فترات مناسبة وتكوين الجمهور بعد التغيير. مع عدد قليل من اللاعبين قد تكون النتائج غير مستقرة. لا توجد نسبة عامة تضمن تعليمًا ناجحًا لكل الألعاب. صف العينة الحقيقية وما بقي من عدم اليقين.
تعرف على مشكلة القياس #
إذا ظهر حدث المكافأة لدى الجميع تقريبًا بينما التوصيل نادر، افحص الترتيب والخطوات المتجاوزة أولًا. إذا اختلطت أسماء المراحل بعد تحديث، اختر فترة توافق النسخة المطلوبة. عند غياب البيانات، تحقق من النشر والسياق الخادمي وحدوث شرط الإكمال فعليًا.
لا تصلح التقرير بإرسال إنجازات مختلقة. يجب أن تتبع اللعبة قواعدها حتى عند فشل التحليلات: لا تُمنح مكافأة لأن تسجيل الحدث نجح. افصل عملية اللعب عن ملاحظتها. فشل قناة لا ينبغي أن يولد إكمالًا زائفًا في أخرى. التشخيص المفيد يشرح الفرق، ولا يخفي الحالتين خلف علامة نجاح واحدة عامة.
جهز تسليمًا يستطيع مطور آخر استخدامه #
سلم جدول المراحل وشروط الإكمال ومواضع الاستدعاء الخادمية وتاريخ الإصدار وخطة الاختبار والملاحظات الفعلية. افصل الأمور المجهولة: اختبارات لم تُنفذ، أو مرشحات لم تُراجع، أو عينة صغيرة، أو بيانات غائبة. يستطيع دردشة أخرى حينها متابعة البحث دون اعتبار الافتراضات نتائج.
تكون هذه المرحلة جاهزة عندما يصف كل حدث فعلًا واضحًا ويُفحص الإرسال في البيئة المناسبة. ذلك لا يثبت تحسن التعليم أو ارتفاع الاحتفاظ باللاعبين. يشرح المقال تصميم القياس ودورة البحث. لم يغير إعداد المسودة تحليلات لعبة نشطة أو أهداف الموقع. أي تنفيذ لاحق يحتاج تحققًا وأدلة خاصة به.
المصادر الأصلية
Roblox Creator Hub — Funnel eventsRoblox Creator Hub — AnalyticsService