1. مقدمة
في هذا الدرس التطبيقي حول الترميز، ستتعلّم كيفية إنشاء تجربة الإعداد عن بُعد عبر Firebase باستخدام اختبار A/B للعبة النموذجية MechaHamster: Level Up with Firebase edition التي عدّلتها في تجهيز لعبتك باستخدام ميزة الإعداد عن بُعد عبر Firebase.
يتيح لك "اختبار A/B" باستخدام "الإعداد عن بُعد" اختبار التغييرات في واجهة المستخدم أو الميزات أو حملات التفاعل في تطبيقك على شريحة مستهدَفة من الجمهور قبل طرحها على شريحة أكبر. يمكنك أيضًا استخدام نتائج التجربة من أجل:
- تحديد صيغ قيم المَعلمات التي تحسّن المقاييس الرئيسية، مثل الإيرادات ومعدّل الاحتفاظ بالمستخدمين
- التعرّف على المجموعات الفرعية من المستخدمين التي تفضّل كل صيغة
- جمع بيانات التجربة وتخزينها لإجراء تحليل إضافي حول تأثيرات ضبط قيم المَعلمات المختلفة
هذه هي فكرة اختبار A/B الأساسية: يتيح لك استخدام الرمز البرمجي الذي تم إعداده لميزة "الإعداد عن بُعد" وإطلاق تجارب تتحكّم في القيم التي تتلقّاها الأجهزة، استنادًا إلى شروط "الإعداد عن بُعد" (بما في ذلك خصائص المستخدمين في "إحصاءات Google") وعمليات الطرح النسبة المئوية وأحداث الإحالات الناجحة في "إحصاءات Google" وبعض المجموعات من هذه العناصر.
أولاً، عليك تنفيذ شرط يحدّد المستخدمين الذين سيتم تضمينهم في التجربة من خلال ضبط خصائص المستخدم استنادًا إلى إجراءات المستخدم. بعد ذلك، ستنشئ تجربة اختبار A/B تستخدم خصائص المستخدِم في "إحصاءات Google" لتحديد العملاء الذين سيتم تضمينهم في التجربة. وأخيرًا، ستستخدم هذه البيانات لمعرفة المزيد عن جمهورك.
أهداف الدورة التعليمية
- كيفية إعداد اختبار A/B باستخدام قيم "الإعداد عن بُعد" التي تمّ تزويدها بأدوات القياس
- كيفية استخدام خصائص المستخدمين في "إحصاءات Google" كجزء من شروط القبول في اختبارات A/B
المتطلبات الأساسية
المتطلبات
- الإصدار 2019.1.0f1 أو الإصدارات الأحدث من Unity مع إمكانية إنشاء إصدارات متوافقة مع iOS و/أو Android
2. تفعيل "قائمة تصحيح الأخطاء"
تتضمّن اللعبة قائمة تصحيح أخطاء مخفية، ويتوفّر زر للوصول إلى هذه القائمة في اللعبة ولكنّه غير مفعّل حاليًا. يجب تفعيل الزر للوصول إليه من عنصر MainMenu الجاهز.
- في "محرّر Unity"، انقر على علامة التبويب المشروع (Project)، ثم ضمن مواد العرض (Assets)، وسِّع Hamster > Prefabs > القوائم (Menus) وانقر على القائمة الرئيسية (MainMenu).

- في بنية الكائن الجاهز، ابحث عن الكائن الفرعي غير المفعّل الذي يحمل الاسم DebugMenuButton وانقر عليه لفتحه في علامة التبويب Inspector.

- في علامة التبويب Inspector، ضَع علامة في المربّع في أعلى يمين الشاشة بجانب حقل النص الذي يحتوي على DebugMenuButton لتفعيله.

- احفظ العنصر الجاهز.
إذا شغّلت اللعبة في المحرِّر أو على جهازك، من المفترض أن تتمكّن الآن من الوصول إلى القائمة.
3- تفعيل القائمة الفرعية "الإعداد عن بُعد"
- من علامة التبويب المشروع (Project) في Unity Editor، وسِّع مواد العرض (Assets) > الهامستر (Hamster) > العناصر الجاهزة (Prefabs) > القوائم (Menus) وانقر نقرًا مزدوجًا على العنصر DebugMenu لفتحه في علامة التبويب التسلسل الهرمي (Hierarchy) في المحرّر.

- في علامة التبويب التسلسل الهرمي، وسِّع التسلسل الهرمي وانقر على العنصر الفرعي ضِمن DebugMenu > Panel، والذي يحمل التصنيف إجراءات الإعداد عن بُعد.

- في علامة التبويب Inspector في Unity، فعِّل Remote Config Actions من خلال وضع علامة في المربّع على يمين حقل النص الذي يحتوي على اسم العنصر.

يحتوي هذا النص على عنصرَين فرعيَين من GameObject باسم Set Bored Of Subtitle وSet Enjoys Subtitle، وكلاهما مضبوط على استدعاء طرق حالية ولكن غير منفَّذة في DebugMenu.cs.
4. إعادة ضبط الإعداد التلقائي للترجمة والشرح إلى الإعداد التلقائي داخل التطبيق
في الدرس العملي السابق، ألغيت القيمة التلقائية لمَعلمة كملف JSON واستخدمت شروطًا لعرض صيغ مختلفة. كجزء من هذا الدرس التطبيقي حول الترميز، ستحذف الشرط الذي أنشأته وتعيد تقديم القيمة التلقائية داخل التطبيق، ولن يتم استبدالها إلا بنتيجة اختبار A/B.
لإعادة تفعيل الإعداد التلقائي داخل التطبيق، اتّبِع الخطوات التالية:
- افتح صفحة "الإعداد عن بُعد" في وحدة تحكّم Firebase وانقر على رمز القلم الرصاص بجانب المَعلمة
subtitle_overrideلفتح اللوحة الجانبية تعديل المَعلمة. - انقر على الرمز X بجانب الشرط لحذفه.
- بجانب القيمة التلقائية المتبقية، فعِّل خيار استخدام الإعداد التلقائي داخل التطبيق.

- انقر على حفظ لحفظ التغييرات، ثم انقر على نشر التغييرات لنشرها.

5- ضبط خصائص المستخدِمين في دوال تصحيح الأخطاء
ستكتب الآن نصوص الدوال لبعض دوال "إحصاءات Google" التي تمّ ضبطها مسبقًا ولكن لم يتمّ تنفيذها في DebugMenu.cs (يمكن العثور عليها في Assets > Hamster > Scripts > States).
تؤدي هذه الدوال إلى ضبط خصائص المستخدم، وهي طرق لوصف شرائح من قاعدة المستخدمين ويتم استخدامها لتسجيل رأي المستخدم في ترجمة اللعبة.
نفِّذ SetUserBoredOfSubtitle وSetUserEnjoysSubtitle من خلال العثور على الإصدارات الحالية منهما في DebugMenu.cs واستبدالها على النحو التالي:
void SetUserBoredOfSubtitle()
{
Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "bored");
}
void SetUserEnjoysSubtitle()
{
Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "enjoys");
}
إذا تم ضبط تطبيقك بشكل صحيح باستخدام "إحصاءات Google"، يمكنك استدعاء إحدى هاتين الدالتين لإتاحة الموقع لشروط "الإعداد عن بُعد". لإجراء مكالمة مع SetUserBoredOfSubtitle من جهاز جوّال، ابدأ اللعبة واضغط على زر قائمة تصحيح الأخطاء في القائمة الرئيسية، ثم اضغط على ضبط الملل من الترجمة.
6. إنشاء سمة مخصّصة
بعد ذلك، ستُعدّ مجموعة متنوعة من العناوين الفرعية subtitle_override لمعرفة أيّ منها يحقّق أفضل أداء. ولكن في اختبار A/B، لن يتم عرض هذه الصيغ إلا للمستخدمين الذين تتضمّن مشاعرهم بشأن الترجمة الحالية (كما هو مسجّل في subtitle_sentiment) الكلمة "مللت".
ستستخدِم سمة مخصّصة لإنشاء مَعلمات مخصّصة وتتبُّعها في أحداث "إحصاءات Google". اطّلِع على المقاييس والسمات المخصّصة لمزيد من المعلومات.
لإنشاء سمة مخصّصة جديدة، اتّبِع الخطوات التالية:
- افتح وحدة تحكُّم Firebase، ووسِّع قائمة الإحصاءات، ثم اختَر التعريفات المخصّصة.
- من صفحة "التعريفات المخصّصة"، انقر على إنشاء سمات مخصّصة.
- في نافذة السمة المخصصة الجديدة، اضبط اسم السمة على "المشاعر في الترجمة"، ومن القائمة المنسدلة النطاق، اختَر المستخدِم.
- في حقل خاصية المستخدم، اختَر
subtitle_sentiment.
7. إعداد تجربة اختبار A/B
بعد ذلك، أنشئ تجربة "اختبار A/B" لضبط قيم مختلفة لـ subtitle_override ليتم اختبارها مقابل بعضها البعض من أجل تحسين معدّل الاحتفاظ بالمستخدمين لمدة تتراوح بين يومين وثلاثة أيام.
- أولاً، انقر على تعديل في المَعلمة
subtitle_overrideفي صفحة "الإعداد عن بُعد" في وحدة تحكّم Firebase:

- من داخل مربّع الحوار تعديل المَعلمة الذي يظهر، انقر على إضافة معلَمة جديدة.

- من القائمة التي تظهر، اختَر تجربة.

- أدخِل اسمًا ووصفًا لتجربتك.

- بعد ذلك، اختَر شروط الاستهداف. أولاً، اختَر تطبيقك من القائمة المنسدلة.

- بعد ذلك، انقر على و لإضافة شرط جديد، ثم اختَر سمة المستخدم واختَر
subtitle_sentiment. إذا لم يظهر، أدخِله يدويًا. - بما أنّك تريد ضبط ترجمة فقط للمستخدمين الذين يتضمّن شعورهم الحالي بشأن الترجمة "مللت"، اختَر يحتوي على واكتب
bored. - اختياريًا، اختَر النسبة المئوية من الجمهور الذي يستوفي المعايير أعلاه لعرض الاختبار عليه. اختَر 100% لتجنُّب العشوائية التي لا يمكنك التحكّم فيها بسهولة.

- بعد ذلك، اختَر هدفًا سيسعى الاختبار إلى تحسينه إلى أقصى حدّ. اختَر الاحتفاظ بالبيانات (من يومَين إلى 3 أيام).

- بعد ذلك، اضبط مَعلمات التجربة وأنشئ صيغًا مختلفة للترجمة والشرح . هذه الصيغ هي القيم المختلفة التي ستعرضها ميزة "اختبار A/B" للمستخدمين الذين يتضمّن
subtitle_sentimentلديهم الكلمة "مللت"، وستحدّد ميزة "اختبار A/B" الصيغة الأفضل لزيادة معدّل الاحتفاظ بالمستخدمين إلى أقصى حد. - أدخِل قيمة المَعلمة التالية للمتغير A:
{"text":"A: A game about a mechanical hamster","fontSize":8,"textColor":{"r":0.0,"g":255.0,"b":0.0,"a":255.0}} - أدخِل قيمة المَعلمة التالية للصيغة B:
{"text":"B: A game about a mechanical hamster","fontSize":14,"textColor":{"r":255.0,"g":0.0,"b":0.0,"a":255.0}} - اضبط نسب الأسعار المتغيرة باستخدام أعداد صحيحة على النحو التالي:
- المرجع: 1
- السعر المتغير أ: 100
- النسخة B: 100
تحدّد هذه الصيغ أنّه في مرة واحدة من أصل 201 مرة، يعرض اختبار A/B الصيغة التلقائية للمستخدمين الذين ملّوا من الترجمة والشرح، ولكن في 200 مرة من أصل 201 مرة، سيعرض إحدى القيمتين الجديدتين ويتجاهل شاشة العنوان. - احفظ التغييرات وأرسِلها من خلال النقر على بدء التجربة، ثم انقر على بدء في النافذة المنبثقة الخاصة بالتأكيد.

8. تنفيذ طريقة "ضبط خاصية المستخدم" وإعادة التحميل
لقد أعددت الآن خصائص مختلفة عن المستخدم، ويمكن استخدامها بعد ذلك لتوجيه منطق لعبتك أو طريقة عرضها.
إذا لم يسبق لك تشغيل طريقة SetUserProperty أو ضبطها على enjoys، سيظل بإمكانك رؤية الترجمة والشرح التلقائيين عند فتح اللعبة.
إذا ضبطت القيمة على bored (قبل إعادة الجلب)، من المفترض أن تظهر لك إحدى القيم الجديدة بنسبة 50/50 تقريبًا.
بعد أن يدخل الجهاز في تجربة اختبار A/B، لن تتغيّر القيم التي يتلقّاها من هذه التجربة وستكون ثابتة لكل عملية تثبيت. نتيجةً لذلك، لتلقّي إحدى القيم التجريبية الأخرى، عليك إنشاء عملية تثبيت جديدة إما عن طريق إعادة تثبيت اللعبة على الجهاز أو المحاكي نفسه أو تثبيت اللعبة على جهاز أو محاكي جديد.
في اختبار A/B حقيقي يتم إطلاقه على مستوى قاعدة المستخدمين، يجب أن تمنح خط الأساس وزنًا مشابهًا للخيارات الأخرى. ولكن في هذه الحالة، عليك تحديد احتمالات منحرفة جدًا للتحقّق من أنّ التجربة تعمل. إذا كنت لا تزال تتلقّى القيمة التلقائية (في حالة 1/201)، جرِّب إعادة تثبيت اللعبة على جهازك أو المحاكي.
من الآثار الأخرى لذلك أنّه عند إعادة ضبط خاصيّة المستخدم على enjoys، لن يتم تغيير القيمة إلى المرجع، ولكن يمكنك إجراء ذلك من خلال التبديل إلى enjoys وإعادة التثبيت.
9. تهانينا!
استخدمت اختبار A/B في ميزة "الإعداد عن بُعد" لتجربة قيم مختلفة في ميزة "الإعداد عن بُعد" وتحديد تأثير كل قيمة في مقاييس "إحصاءات Google".
المواضيع التي تناولناها
- كيفية إعداد اختبار A/B باستخدام قيم "الإعداد عن بُعد" التي تمّ تزويدها بأدوات القياس
- كيفية استخدام "سمات المستخدم" في "إحصاءات Google" كجزء من شروط القبول في تجارب اختبار A/B
الخطوات التالية
بعد انتهاء التجربة، يمكنك اختيار إحدى التجارب من قائمة التجارب في مشروعك لتحديد ما تريد فعله بها. هل تريد اختيار إحدى الصفحات كـ "صفحة فائزة" أو إجراء المزيد من التجارب؟