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

1. معرفی

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

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

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

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

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

چیزی که یاد خواهید گرفت

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

پیش نیازها

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

  • Unity 2019.1.0f1 یا بالاتر با پشتیبانی از ساخت iOS و/یا Android

2. فعال کردن منوی Debug

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

  1. در ویرایشگر Unity، تب Project را انتخاب کنید، سپس در قسمت Assets ، Hamster > Prefabs > Menu را باز کنید و روی 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. در برگه Inspector ، کادر گوشه سمت چپ بالای کنار فیلد متنی حاوی DebugMenuButton را علامت بزنید تا فعال شود.

The Inspector tab for DebugMenuButton\nwith checkbox

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

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

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

  1. از تب Project در Unity Editor، Assets > Hamster > Prefabs > Menu را باز کنید و روی شی DebugMenu دوبار کلیک کنید تا در تب Hierarchy ویرایشگر باز شود.

    DebugMenu item nested under Assets,\nHamster, Prefabs, Menus
  2. در برگه سلسله مراتب ، سلسله مراتب را گسترش دهید و روی شی فرعی در 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

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

4. لغو زیرنویس را به حالت پیش فرض درون برنامه بازنشانی کنید

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

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

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

Deleting a condition from the Remote\nConfig parameter editor

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

5. ویژگی های کاربر را در توابع Debug تنظیم کنید

اکنون بدنه های تابع را برای برخی از توابع Google Analytics از پیش پیکربندی شده اما اجرا نشده در DebugMenu.cs می نویسید (که در Assets > Hamster > Scripts > State یافت می شود).

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

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 ثبت شده است) شامل کلمه "bored" است.

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

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

  1. کنسول Firebase را باز کنید، منوی Analytics را باز کنید و تعاریف سفارشی را انتخاب کنید.
  2. از صفحه تعاریف سفارشی، روی ایجاد ابعاد سفارشی کلیک کنید.
  3. در پنجره ابعاد سفارشی جدید ، نام Dimension را روی "Subtitle Sentiment" تنظیم کنید و از منوی کشویی Scope ، User را انتخاب کنید.
  4. برای قسمت ویژگی User ، subtitle_sentiment.

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

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

  1. ابتدا Edit را روی پارامتر 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. سپس روی And کلیک کنید تا یک شرط جدید اضافه کنید، سپس User Property را انتخاب کنید و 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 Testing برای کاربرانی که subtitle_sentiment حاوی «bored» است ارائه می‌کند، و A/B Testing تعیین می‌کند که کدام نوع برای به حداکثر رساندن ماندگاری بهتر است.
  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. نسبت های متغیر را با اعداد کامل به صورت زیر تنظیم کنید:
    • خط مبنا : 1
    • نوع A : 100
    • نوع B : 100
    این منجر به وزن کل 0.5٪ برای خط پایه، 49.8٪ برای نوع A و 49.8٪ برای نوع B خواهد شد. Variant weights configuration\nsection این گونه‌ها مشخص می‌کنند که یکی از 201 بار، A/B Testing به‌طور پیش‌فرض برای کسانی که از زیرنویس‌ها خسته شده‌اند استفاده می‌کند، اما 200/201 بار، یکی از دو مقدار جدید را ارائه می‌کند و صفحه عنوان را لغو می‌کند.
  5. با کلیک بر روی شروع آزمایش، ذخیره و ارسال کنید، سپس روی Start در پنجره تأیید کلیک کنید. Click Start to start the\nexperiment

8. متد Set User Property را اجرا کرده و Refresh کنید

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

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

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

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

در یک تست واقعی A/B که در پایه کاربر شما راه اندازی می شود، باید به خط پایه وزن مشابهی با سایر انواع بدهید. اما در این مورد، شما احتمالات بسیار ناهنجاری را برای تایید اینکه آزمایش کار می کند اختصاص می دهید. اگر (در مورد 1/201)، همچنان مقدار پیش فرض را دریافت می کنید، سعی کنید بازی را دوباره در دستگاه/شبیه ساز خود نصب کنید.

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

9. تبریک!

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

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

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

مراحل بعدی

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