قم بتنفيذ اختبارات A/B للعبة Unity الخاصة بك باستخدام Firebase Remote Config

1 المقدمة

في هذا الدرس التطبيقي حول التعليمات البرمجية، ستتعلم كيفية إنشاء تجربة التكوين عن بُعد باستخدام اختبار A/B للعبة النموذجية، MechaHamster: Level Up with Firebase edition ، والتي قمت بتعديلها في أداة لعبتك باستخدام Firebase Remote Config .

يتيح لك اختبار A/B باستخدام Remote Config اختبار التغييرات على واجهة مستخدم تطبيقك أو ميزاته أو حملات المشاركة على جمهور مستهدف قبل طرحها على جمهور أوسع. يمكنك أيضًا استخدام نتائج التجربة من أجل:

  • حدد متغيرات قيمة المعلمة التي تعمل على تحسين المقاييس الرئيسية مثل الإيرادات والاحتفاظ.
  • اكتشف المجموعات الفرعية من المستخدمين الذين يفضلون المتغيرات.
  • جمع وتخزين بيانات التجربة لإجراء تحليل إضافي على آثار تحديد قيم المعلمات المختلفة.

هذا هو جوهر اختبار A/B: فهو يمكّنك من أخذ تعليمات برمجية مُجهزة للتكوين عن بُعد وإطلاق تجارب تتحكم في القيم التي يتلقاها العملاء، استنادًا إلى شروط التكوين عن بُعد (بما في ذلك خصائص مستخدمي Google Analytics)، والنسبة المئوية لعمليات الطرح، وأحداث تحويل Analytics، وبعض مزيج من هذه.

أولاً، ستنفذ شرطًا يقضي بالبوابات التي سيتم تضمينها في التجربة عن طريق تعيين خصائص المستخدم بناءً على إجراءات المستخدم. وبعد ذلك، ستقوم بإنشاء تجربة اختبار A/B تستخدم خصائص مستخدم Google Analytics لتحديد العملاء المتضمنين في التجربة. وأخيرًا، ستستخدم هذه البيانات لفهم المزيد عن جمهورك.

ما ستتعلمه

  • كيفية إعداد اختبار A/B باستخدام قيم التكوين عن بعد المُجهزة
  • كيفية استخدام خصائص مستخدم Google Analytics كجزء من شروط القبول في اختبارات A/B

المتطلبات الأساسية

ماذا ستحتاج

  • Unity 2019.1.0f1 أو إصدار أحدث مع دعم إصدار iOS و/أو Android

2. تمكين قائمة التصحيح

توجد قائمة تصحيح مخفية في المشروع، وزر الوصول إلى هذه القائمة موجود في اللعبة ولكنه غير ممكّن حاليًا. يجب عليك تمكين الزر للوصول إليه من القائمة الرئيسية الجاهزة.

  1. في محرر Unity، حدد علامة تبويب المشروع ، ثم ضمن الأصول ، قم بتوسيع Hamster > المباني الجاهزة > القوائم وانقر فوق MainMenu .

The Unity editor Project tab showing\nAssets. Hamster, Prefabs, Menus

  1. في التسلسل الهرمي للهيكل الجاهز، ابحث عن الكائن الفرعي المعطل المسمى DebugMenuButton وانقر عليه لفتحه في علامة التبويب Inspector .

The Unity editor shows the Main Menu,\nwith DebugMenu disabled

  1. ضمن علامة التبويب "المفتش "، حدد المربع الموجود في الزاوية اليسرى العليا بجوار حقل النص الذي يحتوي على DebugMenuButton لتمكينه.

The Inspector tab for DebugMenuButton\nwith checkbox

  1. حفظ الجاهزة.

إذا قمت بتشغيل اللعبة إما في المحرر أو على جهازك، فيجب الآن الوصول إلى القائمة.

3. قم بتمكين القائمة الفرعية للتكوين عن بعد

  1. من علامة تبويب المشروع في محرر Unity، قم بتوسيع الأصول > Hamster > المباني الجاهزة > القوائم وانقر نقرًا مزدوجًا فوق كائن DebugMenu لفتحه في علامة التبويب التسلسل الهرمي للمحرر .

    DebugMenu item nested under Assets,\nHamster, Prefabs, Menus
  2. في علامة التبويب " التسلسل الهرمي "، قم بتوسيع التسلسل الهرمي وانقر فوق الكائن الفرعي ضمن DebugMenu > اللوحة ، والذي يحمل اسم "إجراءات التكوين عن بعد" .

Remote Config Actions nested under\nCanvas, DebugMenu

  1. في علامة التبويب Unity Inspector ، قم بتمكين إجراءات التكوين عن بعد عن طريق تحديد المربع الموجود على يسار حقل النص الذي يحتوي على اسم الكائن.

Unity editor with Remote Config\nActions enabled under DebugMenu, Panel

يحتوي هذا على طفلين من GameObject يُسميان Set Bored Of Subtitle وSet Enjoys Subtitle، وكلاهما تم تكوينهما لاستدعاء الأساليب الموجودة ولكن غير المُنفذة في DebugMenu.cs .

4. قم بإعادة تعيين تجاوز الترجمة إلى الوضع الافتراضي داخل التطبيق

في الدرس التطبيقي السابق حول التعليمات البرمجية ، قمت بتجاوز القيمة الافتراضية للمعلمة كـ JSON واستخدمت الشروط لخدمة متغيرات مختلفة. كجزء من هذا الدرس التطبيقي حول التعليمات البرمجية، ستحذف الشرط الذي أنشأته وتعيد تقديم الوضع الافتراضي داخل التطبيق، ولن تتجاوزه إلا بنتيجة اختبار A/B.

لإعادة تمكين الإعداد الافتراضي داخل التطبيق:

  1. افتح صفحة Remote Config في وحدة تحكم Firebase وانقر على أيقونة القلم الرصاص بجوار المعلمة subtitle_override لفتح اللوحة الجانبية لمعلمة التحرير .
  2. انقر على أيقونة X بجانب الشرط لحذفه.
  3. بجوار القيمة الافتراضية المتبقية، قم بتمكين خيار الاستخدام الافتراضي داخل التطبيق .

Deleting a condition from the Remote\nConfig parameter editor

  1. انقر على "حفظ" لحفظ تغييراتك، ثم انقر على "نشر التغييرات" لنشر تغييراتك. Publish\nchanges option on the Remote Config page

5. قم بتعيين خصائص المستخدم في وظائف التصحيح

ستقوم الآن بكتابة نصوص وظيفية لبعض وظائف Google Analytics التي تم تكوينها مسبقًا ولكن لم يتم تنفيذها في 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 Analytics، فيمكنك استدعاء إحدى هذه الوظائف لجعل الخاصية متاحة لشروط Remote Config. للاتصال بـ SetUserBoredOfSubtitle من جهاز محمول، ابدأ اللعبة واضغط على زر Debug Menu في القائمة الرئيسية، ثم اضغط على Set Bored of Subtitle .

6. قم بإنشاء بُعد مخصص

بعد ذلك، ستقوم بإعداد متغيرات الترجمة المختلفة لـ subtitle_override لمعرفة أي عنوان فرعي يعمل بشكل أفضل. ولكن، في اختبار A/B الخاص بك، لن تعرض هذه المتغيرات إلا للمستخدمين الذين تتضمن مشاعرهم تجاه الترجمة الحالية (كما هو مسجل في subtitle_sentiment ) كلمة "ملل".

ستستخدم بُعدًا مخصصًا لإنشاء المعلمات المخصصة وتتبعها في أحداث Analytics. راجع الأبعاد والمقاييس المخصصة لمزيد من المعلومات.

لإنشاء بُعد مخصص جديد:

  1. افتح وحدة تحكم Firebase ، وقم بتوسيع قائمة التحليلات ، وحدد التعريفات المخصصة.
  2. من صفحة التعريفات المخصصة، انقر فوق إنشاء أبعاد مخصصة .
  3. في نافذة البعد المخصص الجديد ، قم بتعيين اسم البعد على "موجز الترجمة"، ومن القائمة المنسدلة النطاق ، حدد المستخدم .
  4. بالنسبة لحقل خاصية المستخدم ، حدد subtitle_sentiment.

7. قم بإعداد تجربة اختبار أ/ب

بعد ذلك، قم بإنشاء تجربة اختبار A/B لتعيين قيم مختلفة لـ subtitle_override ليتم اختبارها مقابل بعضها البعض من أجل تحسين الاحتفاظ بالمستخدم لمدة يومين إلى ثلاثة أيام.

  1. أولاً، حدد تحرير في المعلمة subtitle_override في صفحة التكوين عن بعد لوحدة التحكم في Firebase:

The subtitle_override parameter on\nthe Remote Config page, showing the Edit option.

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

The Add new experiment option on the\nRemote Config Edit parameter page.

  1. من القائمة التي تظهر، حدد تجربة .

Remote Config parameter page: Add new\nexperiment

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

Experiment name and description\nsection

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

The Targeting step of an A/B Testing\nconfiguration, with an app selected

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

A/B Testing Targeting section with\nsubtitle_sentiment selected

  1. بعد ذلك، حدد الهدف الذي سيحاول الاختبار تعظيمه. اختر الاحتفاظ (2-3 أيام) .

A/B Testing Goals section

  1. بعد ذلك، قم بإعداد معلمات التجربة وإنشاء متغيرات مختلفة للترجمة. هذه المتغيرات هي القيم المختلفة التي سيقدمها اختبار A/B للمستخدمين الذين تحتوي subtitle_sentiment على كلمة "ملل"، وسيحدد اختبار A/B أي متغير هو الأفضل لتحقيق أقصى قدر من الاحتفاظ.
  2. أدخل قيمة المعلمة التالية للمتغير أ:
    {"text":"A: A game about a mechanical hamster","fontSize":8,"textColor":{"r":0.0,"g":255.0,"b":0.0,"a":255.0}}
    
  3. أدخل قيمة المعلمة التالية للمتغير ب:
    {"text":"B: A game about a mechanical hamster","fontSize":14,"textColor":{"r":255.0,"g":0.0,"b":0.0,"a":255.0}}
    
  4. اضبط النسب المتغيرة بالأرقام الصحيحة كما يلي:
    • خط الأساس : 1
    • البديل أ : 100
    • البديل ب : 100
    سيؤدي ذلك إلى إجمالي أوزان قدرها 0.5% لخط الأساس، و49.8% للمتغير أ، و49.8% للمتغير ب. Variant weights configuration\nsection تحدد هذه المتغيرات أنه مرة واحدة من أصل 201 مرة، يقدم اختبار A/B القيمة الافتراضية لأولئك الذين يشعرون بالملل من الترجمات المصاحبة، ولكن 200/201 مرة، سيخدم إحدى القيمتين الجديدتين ويتجاوز شاشة العنوان.
  5. احفظ وأرسل بالنقر فوق "بدء التجربة" ، ثم انقر فوق "ابدأ" في نافذة التأكيد المنبثقة. Click Start to start the\nexperiment

8. قم بتشغيل أسلوب تعيين خاصية المستخدم وقم بالتحديث

لقد قمت الآن بتعيين خصائص مختلفة حول المستخدم، والتي يمكن بعد ذلك استخدامها لتوجيه المنطق أو العرض التقديمي للعبتك.

إذا لم تكن قد قمت مسبقًا بتشغيل أسلوب SetUserProperty أو قمت بتعيينه على enjoys ، فيجب أن تظل ترى العنوان الفرعي الافتراضي عند فتح اللعبة.

إذا قمت بضبطها على bored (قبل إعادة الجلب)، فيجب أن ترى إحدى القيم الجديدة بنسبة 50/50 تقريبًا.

بمجرد دخول الجهاز في تجربة اختبار A/B، فإن القيم التي يتلقاها من تلك التجربة لن تتغير وستكون ثابتة لكل عملية تثبيت . ونتيجة لذلك، لتلقي إحدى القيم التجريبية الأخرى، يجب عليك إنشاء تثبيت جديد إما عن طريق إعادة تثبيت اللعبة على نفس الجهاز/المحاكي أو تثبيت اللعبة على جهاز/محاكي جديد.

في اختبار A/B الحقيقي الذي تم إطلاقه عبر قاعدة المستخدمين الخاصة بك، يجب عليك إعطاء خط الأساس وزنًا مشابهًا للمتغيرات الأخرى. لكن في هذه الحالة، تقوم بتعيين احتمالات منحرفة للغاية للتحقق من نجاح التجربة. إذا كنت لا تزال تتلقى القيمة الافتراضية (في الحالة 1/201)، فحاول إعادة تثبيت اللعبة على جهازك/محاكيك.

تأثير آخر لهذا هو أن تبديل خاصية المستخدم مرة أخرى إلى enjoys لن يغير القيمة مرة أخرى إلى خط الأساس ولكن مرة أخرى، يمكنك القيام بذلك عن طريق التبديل إلى enjoys وإعادة التثبيت.

9. تهانينا!

لقد استخدمت اختبار A/B للتكوين عن بُعد لتجربة قيم مختلفة للتكوين عن بُعد وتحديد كيفية تأثير كل منها على مقاييس Analytics.

ما قمنا بتغطيته

  • كيفية إعداد اختبار A/B باستخدام قيم التكوين عن بعد المُجهزة
  • كيفية استخدام خصائص مستخدم Google Analytics كجزء من شروط القبول في تجارب اختبار A/B

الخطوات التالية

بمجرد انتهاء التجربة، يمكنك تحديد واحدة من قائمة التجارب في مشروعك لتقرر ما تريد فعله بها. هل تريد اختيار واحد ليكون "الفائز" أو إجراء المزيد من التجارب؟