با Firebase Remote Config تست های A/B را برای بازی Unity خود اجرا کنید

۱. مقدمه

در این آزمایشگاه کد، یاد خواهید گرفت که چگونه با استفاده از تست A/B برای بازی نمونه، MechaHamster: Level Up with Firebase edition ، که در Instrumentation بازی خود با Firebase Remote Config اصلاح کرده‌اید، یک آزمایش Remote Config ایجاد کنید.

تست A/B با Remote Config به شما امکان می‌دهد تغییرات رابط کاربری، ویژگی‌ها یا کمپین‌های تعامل برنامه خود را قبل از انتشار به مخاطبان گسترده‌تر، روی مخاطبان هدف آزمایش کنید. همچنین می‌توانید از نتایج آزمایش برای موارد زیر استفاده کنید:

  • تعیین کنید که کدام متغیرهای مقداری پارامتر، معیارهای کلیدی مانند درآمد و حفظ مشتری را بهبود می‌بخشند.
  • کشف کنید که کدام زیرگروه از کاربران، کدام نوع را ترجیح می‌دهند.
  • داده‌های آزمایش را جمع‌آوری و ذخیره کنید تا بتوانید تحلیل‌های بیشتری روی اثرات تنظیم مقادیر مختلف پارامترها انجام دهید.

این اساس تست A/B است: این تست به شما امکان می‌دهد کدی را که برای Remote Config آماده شده است، بردارید و آزمایش‌هایی را اجرا کنید که مقادیر دریافتی کلاینت‌ها را بر اساس شرایط Remote Config (از جمله ویژگی‌های کاربر Google Analytics)، درصدهای انتشار، رویدادهای تبدیل Analytics و ترکیبی از این موارد کنترل می‌کنند.

ابتدا، شما شرطی را پیاده‌سازی خواهید کرد که با تنظیم ویژگی‌های کاربر بر اساس اقدامات کاربر، مشخص می‌کند چه کسانی در آزمایش گنجانده شوند. سپس، یک آزمایش تست A/B ایجاد خواهید کرد که از ویژگی‌های کاربر Google Analytics برای تعیین اینکه کدام مشتریان در آزمایش گنجانده شوند، استفاده می‌کند. و در نهایت، از آن داده‌ها برای درک بیشتر مخاطبان خود استفاده خواهید کرد.

آنچه یاد خواهید گرفت

  • نحوه تنظیم تست A/B با استفاده از مقادیر پیکربندی از راه دورِ ابزار دقیق
  • نحوه استفاده از ویژگی‌های کاربر گوگل آنالیتیکس به عنوان بخشی از شرایط پذیرش در تست‌های A/B

پیش‌نیازها

آنچه نیاز دارید

  • یونیتی ۲۰۱۹.۱.۰f۱ یا بالاتر با پشتیبانی از ساخت iOS و/یا اندروید

۲. فعال کردن منوی اشکال‌زدایی

یک منوی اشکال‌زدایی (Debug Menu) در پروژه پنهان است و دکمه‌ی دسترسی به این منو در بازی وجود دارد اما در حال حاضر فعال نیست. برای دسترسی به آن، باید دکمه را از پیش‌ساخته MainMenu فعال کنید.

  1. در ویرایشگر Unity، تب Project را انتخاب کنید، سپس در قسمت Assets ، مسیر Hamster > Prefabs > Menus را باز کنید و روی MainMenu کلیک کنید.

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

  1. در سلسله مراتب prefab، زیر-شیء غیرفعال با نام DebugMenuButton را پیدا کنید و روی آن کلیک کنید تا در تب Inspector باز شود.

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

  1. در برگه Inspector ، کادر موجود در گوشه بالا سمت چپ کنار فیلد متنی حاوی DebugMenuButton را علامت بزنید تا فعال شود.

The Inspector tab for DebugMenuButton\nwith checkbox

  1. پیش‌ساخته را ذخیره کنید.

اگر بازی را در ویرایشگر یا روی دستگاه خود اجرا کنید، اکنون باید به منو دسترسی داشته باشید.

۳. زیرمنوی Remote Config را فعال کنید

  1. از تب Project در ویرایشگر Unity، به مسیر Assets > Hamster > Prefabs > Menus بروید و روی شیء DebugMenu دوبار کلیک کنید تا در تب Hierarchy ویرایشگر باز شود.

    DebugMenu item nested under Assets,\nHamster, Prefabs, Menus
  2. در برگه Hierarchy ، سلسله مراتب را گسترش داده و روی زیرشیء زیر DebugMenu > Panel که با عنوان Remote Config Actions مشخص شده است، کلیک کنید.

Remote Config Actions nested under\nCanvas, DebugMenu

  1. در تب Unity Inspector ، با علامت زدن کادر سمت چپ فیلد متنی حاوی نام شیء، گزینه Remote Config Actions را فعال کنید.

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

این شیء دو شیء بازی فرزند به نام‌های Set Bored Of Subtitle و Set Enjoys Subtitle دارد که هر دو طوری پیکربندی شده‌اند که متدهای موجود اما پیاده‌سازی نشده در DebugMenu.cs را فراخوانی کنند.

۴. تنظیمات زیرنویس را به پیش‌فرض درون‌برنامه‌ای برگردانید

در کدآزمای قبلی ، مقدار پیش‌فرض یک پارامتر به عنوان JSON را override کردید و از شرط‌ها برای ارائه انواع مختلف استفاده کردید. به عنوان بخشی از این کدآزمای، شرطی را که ایجاد کرده‌اید حذف کرده و پیش‌فرض درون برنامه را دوباره وارد می‌کنید و فقط آن را با نتیجه تست A/B override خواهید کرد.

برای فعال کردن مجدد پیش‌فرض درون برنامه‌ای:

  1. صفحه Remote Config را در کنسول Firebase باز کنید و روی نماد مداد کنار پارامتر subtitle_override کلیک کنید تا پنل کناری Edit parameter باز شود.
  2. برای حذف شرط، روی آیکون X کنار آن کلیک کنید.
  3. در کنار مقدار پیش‌فرض باقی‌مانده، گزینه‌ی «استفاده از پیش‌فرض درون برنامه» را فعال کنید.

Deleting a condition from the Remote\nConfig parameter editor

  1. برای ذخیره تغییرات، روی ذخیره کلیک کنید، سپس برای انتشار تغییرات، روی انتشار تغییرات کلیک کنید. Publish\nchanges option on the Remote Config page

۵. تنظیم ویژگی‌های کاربر در توابع اشکال‌زدایی

اکنون بدنه‌های تابع را برای برخی از توابع از پیش پیکربندی شده اما پیاده‌سازی نشده گوگل آنالیتیکس در DebugMenu.cs خواهید نوشت (که می‌توانید آنها را در Assets > Hamster > Scripts > States پیدا کنید).

این توابع، ویژگی‌های کاربر را تنظیم می‌کنند ، که روش‌هایی برای توصیف بخش‌هایی از پایگاه کاربری شما هستند و برای ثبت احساس کاربر در مورد زیرنویس بازی استفاده می‌شوند.

با پیدا کردن نسخه‌های موجود SetUserBoredOfSubtitle و SetUserEnjoysSubtitle در DebugMenu.cs و بازنویسی آنها به صورت زیر، SetUserBoredOfSubtitle را پیاده‌سازی کنید:

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 را فشار دهید.

۶. ایجاد یک بُعد سفارشی

در مرحله بعد، انواع مختلف زیرنویس را برای subtitle_override تنظیم خواهید کرد تا ببینید کدام زیرنویس بهتر عمل می‌کند. اما، در تست A/B خود، این انواع را فقط به کاربرانی ارائه خواهید داد که احساسات آنها در مورد زیرنویس فعلی (همانطور که در subtitle_sentiment ثبت شده است) شامل کلمه "کسل کننده" است.

شما از یک بُعد سفارشی برای ایجاد و ردیابی پارامترهای سفارشی در رویدادهای Analytics استفاده خواهید کرد. برای اطلاعات بیشتر به بُعدها و معیارهای سفارشی مراجعه کنید.

برای ایجاد یک بُعد سفارشی جدید:

  1. کنسول فایربیس را باز کنید، منوی آنالیتیکس را باز کنید و تعاریف سفارشی (Custom definition) را انتخاب کنید.
  2. از صفحه تعاریف سفارشی، روی ایجاد ابعاد سفارشی کلیک کنید.
  3. در پنجره‌ی «ابعاد سفارشی جدید» ، نام «ابعاد» را روی «احساس زیرنویس» تنظیم کنید و از منوی کشویی «دامنه»، «کاربر» را انتخاب کنید.
  4. برای فیلد ویژگی کاربر ، subtitle_sentiment.

۷. آزمایش A/B را تنظیم کنید

در مرحله بعد، یک آزمایش تست A/B ایجاد کنید تا مقادیر مختلفی برای subtitle_override تعیین کنید تا با یکدیگر آزمایش شوند تا میزان ماندگاری کاربر دو تا سه روزه بهینه شود.

  1. ابتدا، در صفحه Remote Config کنسول Firebase، گزینه Edit را در پارامتر subtitle_override انتخاب کنید:

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. از آنجایی که فقط می‌خواهید برای کسانی که عبارت فعلی زیرنویسشان شامل «کسل» است، زیرنویس تنظیم کنید، گزینه contains را انتخاب کرده و عبارت bored را تایپ کنید.
  3. به صورت اختیاری، درصدی از مخاطبان را که با معیارهای بالا مطابقت دارند، برای آزمایش انتخاب کنید. برای جلوگیری از تصادفی بودن که به راحتی نمی‌توانید کنترل کنید، ۱۰۰٪ را انتخاب کنید.

A/B Testing Targeting section with\nsubtitle_sentiment selected

  1. در مرحله بعد، هدفی را انتخاب کنید که آزمون سعی در به حداکثر رساندن آن دارد. نرخ ماندگاری (۲-۳ روز) را انتخاب کنید.

A/B Testing Goals section

  1. در مرحله بعد، پارامترهای آزمایش را تنظیم کنید و انواع مختلف زیرنویس ایجاد کنید. این انواع، مقادیر مختلفی هستند که تست A/B به کاربرانی که subtitle_sentiment آنها حاوی 'bored' است، ارائه می‌دهد و تست A/B تعیین می‌کند که کدام نوع برای به حداکثر رساندن ماندگاری بهتر است.
  2. مقدار پارامتر زیر را برای متغیر A وارد کنید:
    {"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. نسبت‌های متغیر را با اعداد صحیح به صورت زیر تنظیم کنید:
    • پایه : ۱
    • نوع الف : ۱۰۰
    • نوع ب : ۱۰۰
    این منجر به وزن‌های کل ۰.۵٪ برای حالت پایه، ۴۹.۸٪ برای حالت الف و ۴۹.۸٪ برای حالت ب خواهد شد. Variant weights configuration\nsection این متغیرها مشخص می‌کنند که از هر ۲۰۱ بار، یک بار تست A/B به طور پیش‌فرض برای کسانی که از زیرنویس‌ها خسته شده‌اند، عمل می‌کند، اما ۲۰۰/۲۰۱ بار، یکی از دو مقدار جدید را اعمال کرده و صفحه عنوان را نادیده می‌گیرد.
  5. با کلیک روی شروع آزمایش ، ذخیره و ارسال کنید، سپس در پنجره تأیید ، روی شروع کلیک کنید. Click Start to start the\nexperiment

۸. متد Set User Property را اجرا کرده و صفحه را refresh کنید.

اکنون ویژگی‌های مختلفی را در مورد کاربر تنظیم کرده‌اید که می‌توانید از آنها برای هدایت منطق یا نحوه‌ی نمایش بازی خود استفاده کنید.

اگر قبلاً متد SetUserProperty را اجرا نکرده‌اید یا آن را روی enjoys تنظیم کرده‌اید، هنگام باز کردن بازی، همچنان باید زیرنویس پیش‌فرض را ببینید.

اگر آن را روی bored تنظیم کرده باشید (قبل از واکشی مجدد)، باید یکی از مقادیر جدید را با نسبت تقریباً ۵۰/۵۰ ببینید.

وقتی دستگاهی وارد آزمایش A/B Testing می‌شود، مقادیری که از آن آزمایش دریافت می‌کند تغییر نمی‌کند و در هر نصب ثابت هستند. در نتیجه، برای دریافت یکی از مقادیر آزمایشی دیگر، باید یک نصب جدید ایجاد کنید، یا با نصب مجدد بازی در همان دستگاه/شبیه‌ساز یا نصب بازی در یک دستگاه/شبیه‌ساز جدید.

در یک تست A/B واقعی که در سراسر پایگاه کاربری شما اجرا می‌شود، باید به خط پایه وزنی مشابه سایر متغیرها بدهید. اما در این حالت، احتمالات بسیار نامتوازنی را برای تأیید صحت آزمایش اختصاص می‌دهید. اگر (در حالت ۱/۲۰۱)، هنوز مقدار پیش‌فرض را دریافت می‌کنید، سعی کنید بازی را دوباره روی دستگاه/شبیه‌ساز خود نصب کنید.

یکی دیگر از تأثیرات این امر این است که تغییر دادن ویژگی کاربر به enjoys مقدار را به حالت اولیه تغییر نمی‌دهد ، اما باز هم می‌توانید این کار را با تغییر به enjoys و نصب مجدد انجام دهید.

۹. تبریک می‌گویم!

شما از تست A/B مربوط به Remote Config برای آزمایش مقادیر مختلف Remote Config و تعیین چگونگی تأثیر هر یک بر معیارهای Analytics استفاده کرده‌اید.

آنچه ما پوشش داده‌ایم

  • نحوه تنظیم تست A/B با استفاده از مقادیر پیکربندی از راه دورِ ابزار دقیق
  • نحوه استفاده از ویژگی‌های کاربر گوگل آنالیتیکس به عنوان بخشی از شرایط پذیرش در آزمایش‌های تست A/B

مراحل بعدی

پس از پایان آزمایش، می‌توانید یکی را از فهرست آزمایش‌های پروژه خود انتخاب کنید تا تصمیم بگیرید که می‌خواهید با آن چه کار کنید. آیا می‌خواهید یکی را به عنوان "برنده" انتخاب کنید یا آزمایش‌های بیشتری انجام دهید؟