راه‌اندازی «بازی‌های Google Play» برای Unity و اصالت‌سنجی

این سند شما را در راه‌اندازی پروژه Unity برای استفاده از افزایه «بازی‌های Google Play» برای Unity راهنمایی می‌کند. با نحوه نصب افزایه و پیکربندی پروژه Unity آشنا می‌شوید. این سند همچنین نحوه درستی‌سنجی سرویس اصالت‌سنجی را پوشش می‌دهد.

قبل‌از شروع

ملزومات نرم‌افزار را بررسی کنید. «کنسول Play» را راه‌اندازی کنید و «ویرایشگر Unity» را نصب کنید.

نصب افزایه

برای بارگیری و نصب افزایه «بازی‌های Google Play» برای Unity، این مراحل را در «ویرایشگر Unity» دنبال کنید:

  1. مخزن GitHub را بارگیری کنید.

  2. در دایرکتوری current-build، فایل unitypackage را پیدا کنید. این فایل نشان‌دهنده افزایه است. برای مثال، باید شبیه به موارد زیر باشد:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

راه‌اندازی پروژه Unity

برای راه‌اندازی پروژه Unity در تنظیمات پخش‌کننده، این مراحل را دنبال کنید:

  1. پروژه بازی‌تان را باز کنید.

  2. در «ویرایشگر Unity»، روی دارایی‌ها > وارد کردن بسته > بسته سفارشی کلیک کنید تا فایل unitypackage را به دارایی‌های پروژه خود وارد کنید.

  3. مطمئن شوید که پلاتفرم ساخت فعلی روی Android تنظیم شده باشد.

    1. در منو اصلی، روی فایل > تنظیمات ساخت کلیک کنید.

    2. Android را انتخاب کنید و روی عوض کردن پلاتفرم کلیک کنید.

    3. باید یک مورد منو جدید در پنجره > بازی‌های Google Play وجود داشته باشد. اگر وجود ندارد، دارایی‌ها را با کلیک کردن روی دارایی‌ها > بازآوری بازآوری کنید و سپس دوباره پلاتفرم ساخت را تنظیم کنید.

  4. در «ویرایشگر Unity»، روی File (فایل) > Build Settings (تنظیمات ساخت) > Player Settings (تنظیمات پخش‌کننده) > Other Settings (تنظیمات دیگر) کلیک کنید.

  5. در چارگوش سطح میانای برنامه‌سازی کاربردی هدف، نسخه‌ای را انتخاب کنید.

  6. در چارگوش پشتیبان برنامه‌نویسی، IL2CPP را وارد کنید.

  7. در چارگوش معماری‌های هدف، مقداری را انتخاب کنید.

  8. نام بسته package_name را یادداشت کنید.می‌توانید بعداً از این اطلاعات استفاده کنید.

تنظیمات پخش‌کننده در پروژه Unity
تنظیمات پخش‌کننده در پروژه Unity شما.

ایجاد فروشگاه کلید جدید

برای معتبر کردن اعتبارنامه‌هایتان، به کلید نیاز دارید. این مراحل را دنبال کنید:

  1. در «ویرایشگر Unity»، روی File (فایل) > Build settings (تنظیمات ساخت) > Player settings (تنظیمات پخش‌کننده) کلیک کنید.
  2. در بخش تنظیمات انتشار، روی مدیر کلیدفروشگاه کلیک کنید.
    1. در پنجره مدیر کلیدفروشگاه، روی کلیدفروشگاه > ایجاد جدید > هرجا کلیک کنید.
    2. پوشه‌ای را انتخاب کنید و نامی برای انبار کلید ارائه دهید.
    3. در چارگوش گذرواژه، گذرواژه‌ای وارد کنید و آن را تأیید کنید.
    4. روی افزودن کلید کلیک کنید.

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

کپی کردن منابع Android از «کنسول Play»

هر دستاورد، تابلوی امتیازات، و رویدادی که در «کنسول Play» ایجاد می‌کنید شامل منبع Android است که هنگام راه‌اندازی پروژه Unity از آن استفاده می‌کنید.

برای دریافت منابع Android برای بازی‌تان، این مراحل را دنبال کنید:

  1. در کنسول Google Play، بازی را باز کنید.

  2. در صفحه سرویس‌های بازی Play - پیکربندی (رشد دادن تعداد کاربران > سرویس‌های بازی Play > راه‌اندازی و مدیریت > پیکربندی)، روی دریافت منابع کلیک کنید.

  3. در پنجره منابع، روی برگه Android(XML) کلیک کنید.

  4. محتوای منابع Android (AndroidManifest.xml) را انتخاب و کپی کنید.

منابع Android را به پروژه Unity خود اضافه کنید

منابع Android زیر را به پروژه Unity خود اضافه کنید:

  1. در «ویرایشگر Unity»، روی Window (پنجره) > Google Play Games > Setup (راه‌اندازی) > Android Setup (راه‌اندازی Android) کلیک کنید.

    • در فیلد دایرکتوری برای ذخیره کردن ثابت‌ها، نام پوشه فایل ثابت‌ها را وارد کنید.
    • در فیلد نام کلاس ثابت‌ها، نام کلاس C# را برای ایجاد کردن، ازجمله فضای نام، وارد کنید.

      برای مثال، اگر کلاس C# id.cs باشد و در دارایی‌ها > پروژه من > دستورگان > id.cs وجود داشته باشد. نام کلاس ثابت می‌تواند myproject.scripts.id باشد.

    • در فیلد تعریف منابع، داده‌های منابع Android (فایل AndroidManifest.xml) را که از «کنسول Google Play» کپی کرده‌اید جای‌گذاری کنید.

    • اختیاری: در فیلد شناسه کارخواه، شناسه کارخواه برنامه وب پیوندشده را وارد کنید.

      برای دریافت شناسه کارخواه بازی‌تان از Google Cloud، به ایجاد شناسه‌های کارخواه مراجعه کنید.

      این فقط درصورتی لازم است که برای بازی‌تان زیرینه مبتنی بر وب داشته باشید و برای مبادله کد اصالت‌سنجی سرور با کد دسترسی توسط سرور زیرینه به کد اصالت‌سنجی سرور نیاز داشته باشید، یا اگر برای بازیکن به کد شناسایی نیاز دارید تا بتواند تماس‌های API غیربازی دیگری برقرار کند.

    • روی راه‌اندازی کلیک کنید. این کار بازی شما را با شناسه مشتری پیکربندی می‌کند و کلاس C# ‎ را تولید می‌کند که حاوی ثابت‌هایی برای هریک از منابع Android شما است.

  2. در «ویرایشگر Unity»، روی Window (پنجره) > Google Play Games > Setup (راه‌اندازی) > Nearby Connections Setup (راه‌اندازی اتصالات نزدیک) کلیک کنید.

    • در فیلد شناسه سرویس اتصال اطراف، package_name را وارد کنید.

      از همان package_name که در راه‌اندازی پروژه Unity استفاده کردید استفاده کنید.

    • روی راه‌اندازی کلیک کنید.

انتخاب پلاتفرم اجتماعی

افزایه «سرویس‌های بازی Google Play» میانای اجتماعی Unity را برای سازگاری با بازی‌هایی که هنگام یکپارچه‌سازی با پلاتفرم‌های دیگر از این میانای استفاده می‌کنند پیاده‌سازی می‌کند. بااین‌حال، برخی‌از ویژگی‌ها مختص «بازی‌های Play» هستند و به‌عنوان افزونه‌هایی برای میانای اجتماعی استاندارد ارائه‌شده توسط Unity ارائه می‌شوند.

تماس‌های استاندارد میانای برنامه‌سازی کاربردی را می‌توان ازطریق شیء Social.Active، که مرجعی به رابط ISocialPlatform است، دردسترس قرار داد. افزونه‌های غیرمعمولی «خدمات بازی Google Play» را می‌توان با پخش کردن شیء Social.Active به کلاس PlayGamesPlatform دردسترس قرار داد، جایی که روش‌های اضافی دردسترس هستند.

استفاده از افزایه بدون ملغی کردن پلاتفرم اجتماعی پیش‌فرض

وقتی با PlayGamesPlatform.Activate تماس می‌گیرید، «خدمات بازی‌های Play» به پیاده‌سازی پلاتفرم اجتماعی پیش‌فرض شما تبدیل می‌شود. این یعنی افزایه «خدمات بازی‌های Google Play» تماس‌های ایستا با روش‌های Social و Social.Active برقرار می‌کند که رفتار موردانتظار برای اکثر بازی‌هایی است که از افزایه استفاده می‌کنند.

بااین‌حال، اگر به هر دلیلی می‌خواهید پیاده‌سازی پیش‌فرض دسترسی‌پذیر بماند (برای مثال، برای استفاده از آن برای ارسال دستاوردها و جدول‌های رده‌بندی به پلاتفرم اجتماعی دیگر)، می‌توانید از افزایه «خدمات بازی‌های Google Play» بدون جایگزین کردن افزایه پیش‌فرض استفاده کنید. برای انجام این کار:

  1. روش PlayGamesPlatform.Activate را فراخوانی کنید.
  2. اگر Xyz نام روشی است که در کلاس Social فراخوانی می‌کنید، Social.Xyz را فراخوانی نکنید. درعوض، با PlayGamesPlatform.Instance.Xyz تماس بگیرید.
  3. هنگام تعامل با «خدمات بازی Google Play»، به‌جای Social.Active از PlayGamesPlatform.Instance دارایی استفاده کنید.

به این ترتیب، می‌توانید امتیازات و دستاوردها را به‌طور هم‌زمان به دو یا چند پلاتفرم اجتماعی ارسال کنید:

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

درستی‌سنجی سرویس اصالت‌سنجی

وقتی بازی‌تان باز می‌شود، به‌طور خودکار بااستفاده از اصالت‌سنجی پلاتفرم سعی می‌شود به «خدمات بازی‌های Play» متصل شوید. اگر اتصال موفقیت‌آمیز باشد، بازی شما پیام‌واره ورود به سیستم را نمایش می‌دهد و آماده استفاده از افزایه «خدمات بازی‌های Google Play» برای Unity است.

اگر کاربری هرگز از «خدمات بازی‌های Google Play» در دستگاهش استفاده نکرده باشد، به‌طور خودکار به صفحه راه‌اندازی یک‌باره هدایت می‌شود تا حساب «بازی‌های Play» ایجاد کند.

در روش Start در نوشتار خود، به نتیجه تلاش برای اصالت‌سنجی خودکار گوش دهید، وضعیت اصالت‌سنجی را واکشی کنید، و اگر کاربر اصالت‌سنجی نشده است، ویژگی‌های «خدمات بازی‌های Play» را غیرفعال کنید.

اگر نسخه افزایه Unity قبل‌از v11 باشد، نمی‌توانید از ویژگی اصالت‌سنجی استفاده کنید.

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to authenticate. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

کد نتیجه یک شمارشی است که می‌توانید از آن برای شناسایی دلیل و عدم موفقیت در اصالت‌سنجی استفاده کنید.

اگر ترجیح می‌دهید از پلاتفرم اجتماعی Unity استفاده کنید، می‌توانید از کد زیر استفاده کنید:

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

تا زمانی که مقدار برگشتی موفقیت‌آمیز از Authenticate دریافت نکنید، نمی‌توانید هیچ تماسی با Google Play Games Services API برقرار کنید. درنتیجه، توصیه می‌کنیم بازی‌ها تا زمانی که تماس برگشتی برقرار شود، صفحه آماده‌به‌کار نمایش دهند تا کاربران نتوانند تا قبل‌از تکمیل اصالت‌سنجی بازی را شروع کنند.

جلوگیری از ایجاد نمایه خودکار

می‌توانید پیام‌واره‌های ایجاد نمایه خودکار را ازطریق فایل مانیفست غیرفعال کنید. این کار به کاربرانی که نمایه «خدمات بازی‌های Play» ندارند امکان می‌دهد بدون اینکه از آن‌ها خواسته شود نمایه «خدمات بازی‌های Play» ایجاد کنند، بازی را بار کنند. برای اطلاعات بیشتر، گزینه‌های ایجاد نمایه را ببینید.

برای استفاده از این ویژگی، مطمئن شوید شرایط زیر رعایت شده باشد:

  1. در فایل AndroidManifest.xml، برچسب com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION را در عنصر <meta-data> و مشخصه‌ها را به عنصر <application> اضافه کنید:

    <application>
        ...
        <meta-data
            android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION"
            android:value="true" />
        ...
    </application>

    تنظیم این پرچم روی «درست» به «خدمات بازی‌های Play» اطلاع می‌دهد که بازی شما فرایند ایجاد نمایه را مدیریت خواهد کرد. درنتیجه، «خدمات بازی‌های Play» به‌طور خودکار میانای کاربر ایجاد نمایه را برای کاربرانی که در دستگاه نمایه «خدمات بازی‌های Play» موجود ندارند نمایش نخواهد داد.

  2. برای مدیریت مواردی که کاربر به‌دلیل نداشتن نمایه «خدمات بازی‌های Play» اصالت‌سنجی نشده است، می‌توانید از PlayGamesPlatform.Instance.IsAuthenticated() استفاده کنید. این روش false را برمی‌گرداند زیرا نمایه ایجاد نمی‌شود. برای حل کردن این مشکل، فرایند ایجاد نمایه را با فراخواندن PlayGamesPlatform.Instance.ManuallyAuthenticate() شروع کنید.

    
    if (!PlayGamesPlatform.Instance.IsAuthenticated()) {
      // The user is unauthenticated, likely due to a missing Play Games profile.
      // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger
      // the profile creation UI.
      PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => {
        // ...
      });
    }
    

  3. پس‌از افزودن برچسب سرکوب، از پنجره logcat برای درستی‌سنجی افزودن استفاده کنید. برونداد logcat حاوی پیامی مشابه پیام زیر است: «بازی از پیام‌واره ایجاد خودکار نمایه (بااستفاده از مانیفست) انصراف داد».

استفاده از «امضای برنامه Play»

‫Google بااستفاده از «امضای برنامه Play» کلید امضای برنامه‌تان را مدیریت و از آن محافظت می‌کند. می‌توانید از «امضای برنامه Play» برای امضای توزیع بهینه‌سازی‌شده فایل‌های Android APP Bundle (AAB) استفاده کنید. «امضای برنامه» Play کلید امضای برنامه شما را در زیرساخت امن Google ذخیره می‌کند. برای استفاده از «امضای برنامه Play»، ابتدا باید فایل AAB را در Unity Editor ایجاد و بارگیری کنید. سپس می‌توانید فایل AAB را در کنسول Play بارگذاری کنید و نسخه پخش آزمایش داخلی ایجاد کنید.

ایجاد فایل AAB

برای ایجاد فایل AAB در «ویرایشگر Unity»، این مراحل را دنبال کنید:

  1. در «ویرایشگر Unity»، روی File (فایل) > Build settings (تنظیمات ساخت) کلیک کنید.
  2. ساختن بسته برنامه ( Google Play) را انتخاب کنید.

    برای اطلاعات بیشتر، به مرجع تنظیمات ساخت Android مراجعه کنید.

  3. روی ساختن کلیک کنید.

  4. فایل AAB را از «ویرایشگر Unity» بارگیری کنید.

ایجاد نسخه پخش آزمایش داخلی

برای ایجاد نسخه پخش آزمایشی داخلی و افزودن آزمونگران در کنسول Play، مراحل زیر را انجام دهید:

  1. در کنسول Google Play، بازی‌ای را انتخاب کنید.
  2. به صفحه آزمایش کردن و منتشر کردن (آزمایش > آزمایش داخلی) پیمایش کنید.
  3. روی بارگذاری کلیک کنید و فایل AAB را انتخاب کنید.
  4. در فیلد جزئیات نسخه پخش، نامی وارد کنید.
  5. روی بعدی کلیک کنید و جزئیات نسخه پخش را مرور کنید.
  6. روی ذخیره و منتشر کردن کلیک کنید.
  7. در زبانه آزمایش‌گران، روی ایجاد فهرست ایمیل کلیک کنید تا حداکثر ۱۰۰ آزمایش‌گر اضافه کنید.

    برای اطلاعات بیشتر، آزمایش داخلی: مدیریت حداکثر ۱۰۰ آزمایش‌گر را ببینید.

  8. در نشانی وب یا نشانی ایمیل بازخورد، نشانی وب یا نشانی ایمیل بازخورد را برای ارائه بازخورد وارد کنید.

  9. روی ذخیره کلیک کنید.

درستی‌سنجی اطلاعات اعتباری «امضای برنامه»

  1. در کنسول Google Play، بازی‌ای را انتخاب کنید.
  2. به صفحه آزمایش کردن و منتشر کردن (راه‌اندازی > امضای برنامه) پیمایش کنید.
  3. اطلاعات اعتباری «امضای برنامه» خود را درستی‌سنجی کنید.

ساختن و اجرای پروژه

در این مرحله می‌توانید پروژه بازی را بسازید و اجرا کنید. وقتی بازی شروع می‌شود، تلاش برای اصالت‌سنجی خودکار را می‌بینید.

به دستگاه فیزیکی Android با اشکال‌زدایی USB فعال یا شبیه‌سازی که بتواند پروژه توسعه‌یافته را اجرا کند نیاز دارید.

بازیابی کدهای اصالت‌سنجی سرور

برای دسترسی به Google APIs در سرور وب زیرینه ازطرف بازیکن فعلی، باید کد اصالت‌سنجی را از برنامه کارخواه دریافت کنید و آن را به برنامه سرور وب خود منتقل کنید. سپس می‌توان کد را با کد دسترسی برای فراخوانی میاناهای برنامه‌سازی کاربردی مختلف مبادله کرد. برای اطلاعات درباره گردش کار، ورود به سیستم با Google برای وب را ببینید.

برای دریافت کد دسترسی سمت سرور:

  1. شناسه کارخواه وب را برای بازی‌تان در «کنسول Play» اضافه کنید.
    1. در کنسول Google Play، بازی‌تان را انتخاب کنید.
    2. در صفحه پیکربندی (رشد دادن تعداد کاربران > خدمات بازی‌های Play > راه‌اندازی و مدیریت > پیکربندی)، روی افزودن اطلاعات اعتباری کلیک کنید.
    3. در صفحه افزودن اطلاعات اعتباری، سرور بازی را انتخاب کنید.
    4. شناسه کارخواه OAuth 2.0 تولید کنید.
    5. مقدار شناسه کارخواه را یادداشت کنید. باید این مقدار را بعداً ارائه دهید.
  2. شناسه کارخواه وب را به مرکز Unity اضافه کنید.

    1. در مرکز Unity، «بازی‌های Google Play برای Unity» را راه‌اندازی و اصالت‌سنجی کنید.
    2. در مرکز Unity، به Window > Google Play Games > Setup > Android Setup بروید.
    3. مقدار شناسه کارخواه را وارد کنید.
  3. کد اصالت‌سنجی سرور را برای دامنه‌های اضافی بازیابی کنید.

    C#‎

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

راه‌اندازی و افزودن ویژگی‌ها