1. מבוא
ב-codelab הזה תלמדו איך ליצור ניסוי של הגדרת תצורה מרחוק באמצעות A/B Testing במשחק לדוגמה, MechaHamster: Level Up with Firebase edition, ששיניתם ב-Instrument your game with Firebase Remote Config.
התכונה A/B Testing עם הגדרת תצורה מרחוק מאפשרת לכם לבדוק שינויים בממשק המשתמש, בתכונות או בקמפיינים לעידוד השימוש באפליקציה בקרב קהל יעד לפני שאתם משיקים אותם לקהל רחב יותר. אפשר להשתמש בתוצאות הניסוי גם כדי:
- כך תוכלו לזהות אילו וריאציות של ערכי פרמטרים משפרות מדדים מרכזיים כמו הכנסה ושימור.
- לגלות אילו קבוצות משנה של משתמשים מעדיפות אילו וריאציות.
- אוספים ומאחסנים נתונים של ניסויים כדי לבצע ניתוח נוסף של ההשפעות של הגדרת ערכים שונים של פרמטרים.
זהו עיקרון הליבה של A/B Testing: הוא מאפשר לכם לקחת קוד שהוגדר להגדרת תצורה מרחוק ולהפעיל ניסויים ששולטים בערכים שהלקוחות מקבלים, על סמך תנאים של הגדרת תצורה מרחוק (כולל מאפייני משתמשים ב-Google Analytics), השקות באחוזים, אירועי המרה ב-Analytics ושילוב כלשהו של אלה.
קודם כול, תטמיעו תנאי שמגביל את המשתמשים שייכללו בניסוי על ידי הגדרת מאפייני משתמשים על סמך פעולות המשתמשים. לאחר מכן, תיצרו ניסוי A/B Testing שמשתמש במאפייני משתמש של Google Analytics כדי לקבוע אילו לקוחות נכללים בניסוי. לבסוף, תשתמשו בנתונים האלה כדי להבין יותר על הקהל שלכם.
מה תלמדו
- איך מגדירים בדיקות A/B באמצעות ערכים של הגדרת תצורה מרחוק עם מכשור
- איך משתמשים במאפייני משתמש של Google Analytics כחלק מהתנאים להשתתפות בבדיקות A/B
דרישות מוקדמות
- השלמתם את השלב הטמעת הגדרת תצורה מרחוק ב-Firebase במשחק
מה צריך להכין
- Unity 2019.1.0f1 ואילך עם תמיכה ב-iOS ו/או ב-Android
2. הפעלת התפריט לניפוי באגים
יש תפריט ניפוי באגים שמוסתר בפרויקט, והלחצן לגישה לתפריט הזה קיים במשחק אבל לא מופעל כרגע. כדי לגשת אליו מ-prefab של MainMenu, צריך להפעיל את הכפתור.
- בעורך Unity, בוחרים בכרטיסייה Project (פרויקט), ואז בקטע Assets (נכסים) מרחיבים את האפשרויות Hamster (אוגר) > Prefabs (פריטים מוכנים מראש) > Menus (תפריטים) ולוחצים על MainMenu (תפריט ראשי).
- בהיררכיית ה-prefab, מאתרים את אובייקט המשנה המושבת שנקרא DebugMenuButton ולוחצים עליו כדי לפתוח אותו בכרטיסייה Inspector.
- בכרטיסייה Inspector, מסמנים את התיבה בפינה הימנית העליונה לצד שדה הטקסט שמכיל את DebugMenuButton כדי להפעיל אותו.
- שומרים את ה-prefab.
אם מריצים את המשחק בעורך או במכשיר, התפריט אמור להיות נגיש עכשיו.
3. הפעלת תפריט המשנה Remote Config
- בכרטיסייה Project (פרויקט) ב-Unity Editor, מרחיבים את האפשרויות Assets (נכסים) > Hamster (אוגר) > Prefabs (פריפאבים) > Menus (תפריטים) ולוחצים לחיצה כפולה על האובייקט DebugMenu (תפריט ניפוי באגים) כדי לפתוח אותו בכרטיסייה Hierarchy (היררכיה) בעורך.
- בכרטיסייה Hierarchy, מרחיבים את ההיררכיה ולוחצים על אובייקט המשנה מתחת ל-DebugMenu > Panel, שמסומן בתווית Remote Config Actions.
- בכרטיסייה Inspector (כלי הבדיקה) ב-Unity, מסמנים את התיבה שמשמאל לשדה הטקסט שמכיל את שם האובייקט כדי להפעיל את Remote Config Actions (פעולות של Remote Config).
יש לו שני רכיבי GameObject צאצא בשם Set Bored Of Subtitle ו-Set Enjoys Subtitle, שניהם מוגדרים לקרוא לשיטות קיימות אבל לא מיושמות ב-DebugMenu.cs
.
4. איפוס ברירת המחדל של הכתוביות בתוך האפליקציה
בסדנת הקוד הקודמת, החלפתם את ערך ברירת המחדל של פרמטר כ-JSON והשתמשתם בתנאים כדי להציג וריאציות שונות. במסגרת ה-codelab הזה, תמחקו את התנאי שיצרתם ותחזירו את ברירת המחדל באפליקציה, ותחליפו אותה רק בתוצאה של בדיקת ה-A/B.
כדי להפעיל מחדש את ברירת המחדל באפליקציה:
- פותחים את הדף 'הגדרת תצורה מרחוק' במסוף Firebase ולוחצים על סמל העיפרון לצד הפרמטר
subtitle_override
כדי לפתוח את החלונית הצדדית עריכת פרמטר. - כדי למחוק תנאי, לוחצים על הסמל X לצד התנאי.
- לצד ערך ברירת המחדל שנותר, מפעילים את המתג שימוש בברירת המחדל של האפליקציה.
- לוחצים על שמירה כדי לשמור את השינויים, ואז על פרסום השינויים כדי לפרסם אותם.
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. מידע נוסף זמין במאמר מאפיינים ומדדים מותאמים אישית.
כדי ליצור מאפיין מותאם אישית חדש:
- פותחים את מסוף Firebase, מרחיבים את התפריט Analytics ובוחרים באפשרות הגדרות בהתאמה אישית.
- בדף 'הגדרות מותאמות אישית', לוחצים על יצירת מאפיינים מותאמים אישית.
- בחלון מאפיין מותאם אישית חדש, מגדירים את שם המאפיין בתור Subtitle Sentiment (סנטימנט של כתוביות) ובתפריט הנפתח היקף בוחרים באפשרות משתמש.
- בשדה מאפיין משתמש, בוחרים באפשרות
subtitle_sentiment.
.
7. הגדרת ניסוי A/B
לאחר מכן, יוצרים ניסוי ב-A/B Testing כדי להגדיר ערכים שונים לפרמטר subtitle_override
ולבדוק אותם אחד מול השני, במטרה לשפר את שימור המשתמשים למשך יומיים עד שלושה.
- קודם בוחרים באפשרות עריכה בפרמטר
subtitle_override
בדף הגדרת תצורה מרחוק במסוף Firebase:
- בתיבת הדו-שיח עריכת פרמטר שמופיעה, לוחצים על הוספת פרמטר חדש.
- בוחרים באפשרות ניסוי מהרשימה שמופיעה.
- מזינים שם ותיאור לניסוי.
- בשלב הבא, בוחרים תנאי טירגוט. קודם בוחרים את האפליקציה מהתפריט הנפתח.
- אחר כך לוחצים על And (וגם) כדי להוסיף תנאי חדש, בוחרים באפשרות מאפיין משתמש ובוחרים באפשרות
subtitle_sentiment
. אם היא לא מופיעה, מזינים אותה ידנית. - מכיוון שאתם רוצים להגדיר כתוביות רק לאנשים שהסנטימנט הנוכחי של הכתוביות שלהם כולל את המילה bored (משועמם), בוחרים באפשרות contains (מכיל) ומקלידים
bored
. - אפשר גם לבחור את אחוז הקהל שעומד בקריטריונים שלמעלה שייחשף לבדיקה. בוחרים באפשרות 100% כדי למנוע אקראיות שקשה לשלוט בה.
- לאחר מכן בוחרים יעד שהבדיקה תנסה למקסם. בוחרים באפשרות שימור (יומיים-שלושה).
- לאחר מכן, מגדירים את הפרמטרים של הניסוי ויוצרים וריאציות שונות של כתוביות . הווריאנטים האלה הם הערכים השונים שיוצגו למשתמשים ש
subtitle_sentiment
מכיל bored, ובדיקת A/B תקבע איזה וריאנט הוא הטוב ביותר לשיפור שימור המשתמשים. - מזינים את ערך הפרמטר הבא לווריאנט א':
{"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
- Variant A: 100
- וריאנט B: 100
הווריאציות האלה מציינות שפעם אחת מתוך 201 פעמים, בדיקת A/B תציג את ברירת המחדל למשתמשים שמשעמם להם לצפות בכתוביות, אבל 200 מתוך 201 פעמים, היא תציג אחד משני ערכים חדשים ותבטל את מסך הכותרת.
- לוחצים על התחלת הניסוי כדי לשמור ולהגיש את הניסוי, ואז לוחצים על התחלה בחלון הקופץ לאישור.
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
השלבים הבאים
אחרי שהניסוי מסתיים, אפשר לבחור אותו מתוך רשימת הניסויים בפרויקט כדי להחליט מה רוצים לעשות איתו. האם רוצים לבחור אחת מהן כ'מנצחת' או להריץ עוד ניסויים?