הטמעת בדיקות A/B במשחק ב-Unity באמצעות הגדרת תצורה מרחוק ב-Firebase

1. מבוא

ב-Codelab הזה תלמדו איך ליצור ניסוי בהגדרת תצורה מרחוק באמצעות A/B Testing במשחק לדוגמה, MechaHamster: Level Up with Firebase edition, ששיניתם ב-Instrument your game with הגדרת תצורה מרחוק ב-Firebase.

בעזרת A/B Testing עם הגדרת תצורה מרחוק, אפשר לבדוק שינויים בממשק המשתמש, בתכונות או בקמפיינים לעידוד השימוש באפליקציה בקרב קהל יעד לפני שמשיקים אותם לקהל רחב יותר. אפשר להשתמש בתוצאות הניסוי גם כדי:

  • כך תוכלו לזהות אילו וריאציות של ערכי פרמטרים משפרות מדדים מרכזיים כמו הכנסה ושימור.
  • לגלות אילו קבוצות משנה של משתמשים מעדיפות אילו וריאציות.
  • אוספים ומאחסנים נתוני ניסויים כדי לבצע ניתוח נוסף של ההשפעות של הגדרת ערכים שונים של פרמטרים.

זהו הבסיס של בדיקות A/B: הן מאפשרות לכם לקחת קוד שהוגדר עבור הגדרת תצורה מרחוק ולהשיק ניסויים ששולטים בערכים שהלקוחות מקבלים, על סמך תנאים של הגדרת תצורה מרחוק (כולל מאפייני משתמשים של Google Analytics), השקות באחוזים, אירועי המרה של Analytics ושילוב כלשהו של אלה.

קודם כול, תטמיעו תנאי שמגביל את המשתמשים שייכללו בניסוי על ידי הגדרת מאפייני משתמשים על סמך פעולות המשתמשים. לאחר מכן, תיצרו ניסוי A/B Testing שמשתמש במאפייני משתמש של Google Analytics כדי לקבוע אילו לקוחות נכללים בניסוי. ולבסוף, תשתמשו בנתונים האלה כדי להבין יותר על הקהל שלכם.

מה תלמדו

  • איך מגדירים בדיקות A/B באמצעות ערכים של הגדרת תצורה מרחוק עם כלי מדידה
  • איך משתמשים במאפייני משתמש של Google Analytics כחלק מהתנאים להשתתפות בבדיקות A/B

דרישות מוקדמות

מה צריך להכין

  • ‫Unity 2019.1.0f1 ואילך עם תמיכה ב-iOS ו/או ב-Android

2. הפעלת התפריט לניפוי באגים

יש תפריט ניפוי באגים שמוסתר בפרויקט, והלחצן לגישה לתפריט הזה קיים במשחק אבל לא מופעל כרגע. כדי לגשת לכפתור מ-MainMenu prefab, צריך להפעיל אותו.

  1. בעורך Unity, בוחרים בכרטיסייה Project (פרויקט), ואז בקטע Assets (נכסים) מרחיבים את האפשרויות Hamster (אוגר) > Prefabs (פריטים מוכנים מראש) > Menus (תפריטים) ולוחצים על MainMenu (תפריט ראשי).

בכרטיסייה Project (פרויקט) בכלי לעריכת Unity מוצגים הנכסים. אוגר, מבנים מוכנים מראש, תפריטים

  1. בהיררכיית ה-prefab, מאתרים את אובייקט המשנה המושבת שנקרא DebugMenuButton ולוחצים עליו כדי לפתוח אותו בכרטיסייה Inspector.

התפריט הראשי מוצג בכלי Unity Editor, והאפשרות DebugMenu מושבתת

  1. בכרטיסייה Inspector, מסמנים את התיבה בפינה הימנית העליונה לצד שדה הטקסט שמכיל את DebugMenuButton כדי להפעיל אותו.

כרטיסיית הבדיקה של DebugMenuButton עם תיבת סימון

  1. שומרים את ה-prefab.

אם מריצים את המשחק בעורך או במכשיר, התפריט אמור להיות נגיש עכשיו.

3. הפעלת תפריט המשנה הגדרת תצורה מרחוק

  1. בכרטיסייה Project (פרויקט) ב-Unity Editor, מרחיבים את Assets (נכסים) > Hamster (אוגר) > Prefabs (פריטים מוכנים מראש) > Menus (תפריטים) ולוחצים לחיצה כפולה על האובייקט DebugMenu (תפריט ניפוי באגים) כדי לפתוח אותו בכרטיסייה Hierarchy (היררכיה) בעורך.

    DebugMenu item nested under Assets,\nHamster, Prefabs, Menus
  2. בכרטיסייה Hierarchy, מרחיבים את ההיררכיה ולוחצים על אובייקט המשנה מתחת ל-DebugMenu > Panel, שמסומן בתווית Remote Config Actions.

פעולות של הגדרת תצורה מרחוק שמוטמעות ב-Canvas, ‏ DebugMenu

  1. בכרטיסייה Inspector (כלי הבדיקה) ב-Unity, מסמנים את התיבה שמימין לשדה הטקסט שמכיל את שם האובייקט כדי להפעיל את Remote Config Actions (פעולות של הגדרת תצורה מרחוק).

עורך Unity עם הגדרת תצורה מרחוק\nהפעולות מופעלות בקטע DebugMenu, Panel

ל-GameObject הזה יש שני צאצאים מסוג GameObject בשם Set Bored Of Subtitle ו-Set Enjoys Subtitle, שניהם מוגדרים לקרוא לשיטות קיימות אבל לא מיושמות ב-DebugMenu.cs.

4. איפוס שינוי ברירת המחדל של הכתוביות לברירת המחדל באפליקציה

בCodelab הקודם, החלפתם את ערך ברירת המחדל של פרמטר כ-JSON והשתמשתם בתנאים כדי להציג וריאציות שונות. במסגרת ה-codelab הזה, תמחקו את התנאי שיצרתם ותחזירו את ברירת המחדל באפליקציה, ותחליפו אותה רק בתוצאה של בדיקת ה-A/B.

כדי להפעיל מחדש את ברירת המחדל באפליקציה:

  1. פותחים את הדף 'הגדרת תצורה מרחוק' במסוף Firebase ולוחצים על סמל העיפרון לצד הפרמטר subtitle_override כדי לפתוח את חלונית הצד עריכת פרמטר.
  2. כדי למחוק תנאי, לוחצים על הסמל X שלידו.
  3. לצד ערך ברירת המחדל שנותר, מפעילים את המתג שימוש בברירת המחדל של האפליקציה.

מחיקת תנאי בכלי לעריכת פרמטרים של Remote Config

  1. לוחצים על שמירה כדי לשמור את השינויים, ואז על פרסום השינויים כדי לפרסם אותם.האפשרות 'פרסום שינויים' בדף של הגדרת התצורה מרחוק

5. הגדרה של מאפייני משתמש בפונקציות של ניפוי באגים

עכשיו תכתבו גופי פונקציות לכמה פונקציות של Google Analytics שהוגדרו מראש אבל לא יושמו ב-DebugMenu.cs (אפשר למצוא אותן בנכסים > 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, מרחיבים את התפריט Analytics ובוחרים באפשרות הגדרות בהתאמה אישית.
  2. בדף 'הגדרות מותאמות אישית', לוחצים על יצירת מאפיינים מותאמים אישית.
  3. בחלון מאפיין מותאם אישית חדש, מגדירים את שם המאפיין בתור Subtitle Sentiment (סנטימנט של כתוביות) ובתפריט הנפתח היקף בוחרים באפשרות משתמש.
  4. בשדה מאפיין משתמש, בוחרים באפשרות subtitle_sentiment..

7. הגדרת ניסוי A/B

לאחר מכן, יוצרים ניסוי ב-A/B Testing כדי להגדיר ערכים שונים של subtitle_override לבדיקה אחד מול השני, במטרה לבצע אופטימיזציה של שימור משתמשים למשך יומיים עד שלושה.

  1. קודם בוחרים באפשרות עריכה בפרמטר subtitle_override בדף הגדרת תצורה מרחוק במסוף Firebase:

הפרמטר subtitle_override בדף הגדרת תצורה מרחוק, עם האפשרות Edit.

  1. בתיבת הדו-שיח עריכת פרמטר שמופיעה, לוחצים על הוספת פרמטר חדש.

האפשרות 'הוספת ניסוי חדש' בדף 'עריכת פרמטרים' של הגדרת תצורה מרחוק.

  1. בוחרים באפשרות ניסוי מהרשימה שמופיעה.

דף הפרמטרים של הגדרת התצורה מרחוק: הוספת ניסוי חדש

  1. מזינים שם ותיאור לניסוי.

הקטע 'שם ותיאור של הניסוי'

  1. בשלב הבא, בוחרים תנאי טירגוט. קודם בוחרים את האפליקציה מהתפריט הנפתח.

שלב הטירגוט בהגדרת בדיקת A/B, עם אפליקציה שנבחרה

  1. אחר כך לוחצים על And (וגם) כדי להוסיף תנאי חדש, בוחרים באפשרות מאפיין משתמש ובוחרים באפשרות subtitle_sentiment. אם היא לא מופיעה, מזינים אותה ידנית.
  2. מכיוון שאתם רוצים להגדיר כתובית רק לאנשים שהסנטימנט הנוכחי של הכתובית שלהם כולל את המילה bored (משועמם), בוחרים באפשרות contains (מכיל) ומקלידים bored.
  3. אפשר גם לבחור את אחוז הקהל שעומד בקריטריונים שלמעלה שייחשף לבדיקה. בוחרים באפשרות 100% כדי למנוע אקראיות שקשה לשלוט בה.

קטע הטירגוט של בדיקת A/B עם האפשרות subtitle_sentiment שנבחרה

  1. לאחר מכן בוחרים יעד שהבדיקה תנסה למקסם. בוחרים באפשרות שימור (יומיים-שלושה).

הקטע 'יעדים לבדיקות A/B'

  1. לאחר מכן, מגדירים את הפרמטרים של הניסוי ויוצרים וריאציות שונות של כתוביות . הווריאנטים האלה הם הערכים השונים ש-A/B Testing יציג למשתמשים שהמחרוזת subtitle_sentiment שלהם מכילה את הערך bored, ו-A/B Testing יקבע איזה וריאנט הוא הטוב ביותר למיקסום שימור המשתמשים.
  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. מזינים את ערך הפרמטר הבא לווריאנט B:
    {"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
    • Variant A: ‏ 100
    • וריאנט ב': 100
    התוצאה תהיה משקלים כוללים של 0.5% לווריאנט הבסיס, 49.8% לווריאנט א' ו-49.8% לווריאנט ב'.הקטע Variant weights configuration (הגדרת משקלים של וריאנטים)הווריאנטים האלה מציינים שפעם אחת מתוך 201 פעמים, התכונה 'בדיקות A/B' תציג את ברירת המחדל למשתמשים שמשעמם להם לצפות בכתוביות, אבל 200 מתוך 201 פעמים, היא תציג אחד משני ערכים חדשים ותבטל את מסך הכותרת.
  5. לוחצים על התחלת הניסוי כדי לשמור ולהגיש את הניסוי, ואז לוחצים על התחלה בחלון הקופץ לאישור.לוחצים על 'התחלה' כדי להתחיל את הניסוי.

8. מריצים את השיטה Set User Property ומרעננים

הגדרתם עכשיו מאפיינים שונים לגבי המשתמש, שאפשר להשתמש בהם כדי לכוון את הלוגיקה או את ההצגה של המשחק.

אם לא הפעלתם בעבר את השיטה SetUserProperty או שהגדרתם אותה ל-enjoys, עדיין תוכלו לראות את כתוביות ברירת המחדל כשפותחים את המשחק.

אם הגדרתם את הערך bored (לפני שליפת הנתונים מחדש), אמור להופיע אחד מהערכים החדשים ביחס של בערך 50/50.

אחרי שמכשיר נכנס לניסוי של בדיקת A/B, הערכים שהוא מקבל מהניסוי הזה לא ישתנו והם קבועים לכל התקנה. לכן, כדי לקבל אחד מהערכים הניסיוניים האחרים, צריך ליצור התקנה חדשה על ידי התקנה מחדש של המשחק באותו מכשיר או סימולטור, או התקנה של המשחק במכשיר או בסימולטור חדשים.

בבדיקת A/B אמיתית שמופעלת בקרב בסיס המשתמשים, צריך לתת לגרסת הבסיס משקל דומה לזה של הווריאציות האחרות. אבל במקרה הזה, אתם מקצים הסתברויות מוטות מאוד כדי לוודא שהניסוי פועל. אם (במקרה 1/201) אתם עדיין מקבלים את ערך ברירת המחדל, נסו להתקין מחדש את המשחק במכשיר או באמולטור.

השפעה נוספת של השינוי הזה היא שאם תחזירו את מאפיין המשתמש לערך enjoys, הערך לא ישתנה בחזרה לערך הבסיסי. אבל תוכלו לעשות זאת על ידי מעבר לערך enjoys והתקנה מחדש.

9. כל הכבוד!

השתמשתם ב-A/B Testing של הגדרת תצורה מרחוק כדי לבדוק ערכים שונים של הגדרת תצורה מרחוק ולקבוע איך כל אחד מהם משפיע על מדדי Analytics.

מה נכלל

  • איך מגדירים בדיקות A/B באמצעות ערכים של הגדרת תצורה מרחוק עם כלי מדידה
  • איך משתמשים במאפייני משתמש של Google Analytics כחלק מהתנאים להשתתפות בניסויי A/B

השלבים הבאים

אחרי שהניסוי מסתיים, אפשר לבחור ניסוי מרשימת הניסויים בפרויקט כדי להחליט מה רוצים לעשות איתו. האם רוצים לבחור אחת מהן כ'מנצחת' או להריץ עוד ניסויים?