Google Play Games را برای Unity راه‌اندازی کنید و احراز هویت کنید

این سند شما را در راه‌اندازی پروژه یونیتی خود برای استفاده از افزونه Google Play Games برای یونیتی راهنمایی می‌کند. شما یاد می‌گیرید که چگونه افزونه را نصب و پروژه یونیتی خود را پیکربندی کنید. این سند همچنین نحوه تأیید سرویس احراز هویت را پوشش می‌دهد.

قبل از اینکه شروع کنی

پیش‌نیازهای نرم‌افزار را بررسی کنید. کنسول Play را راه‌اندازی کرده و Unity Hub را نصب کنید.

نصب افزونه

برای دانلود و نصب افزونه Google Play Games برای Unity، این مراحل را در Unity Hub دنبال کنید:

  1. مخزن گیت‌هاب را دانلود کنید.

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

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

راه اندازی پروژه یونیتی

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

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

  2. در Unity Hub، روی Assets > Import Package > Custom Package کلیک کنید تا فایل unitypackage را به asset های پروژه خود وارد کنید.

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

    1. در منوی اصلی، روی File > Build Settings کلیک کنید.

    2. اندروید را انتخاب کنید و روی «تغییر پلتفرم» کلیک کنید.

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

  4. در Unity Hub، روی File > Build Settings > Player Settings > Other Settings کلیک کنید.

  5. در کادر Target API level ، یک نسخه را انتخاب کنید.

  6. در کادر Scripting backend ، IL2CPP را وارد کنید.

  7. در کادر Target architectures ، یک مقدار انتخاب کنید.

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

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

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

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

  1. در Unity Hub، روی File > Build settings > Player settings کلیک کنید.
  2. در بخش تنظیمات انتشار ، روی مدیریت کلید (Keystore manager) کلیک کنید.
    1. در پنجره‌ی مدیریت Keystore ، روی Keystore > Create new > Anywhere کلیک کنید.
    2. یک پوشه انتخاب کنید و نامی برای keystore تعیین کنید.
    3. در کادر رمز عبور ، یک رمز عبور وارد کنید و آن را تأیید کنید.
    4. روی افزودن کلید کلیک کنید.

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

کپی کردن منابع اندروید از کنسول پلی

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

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

  1. در کنسول گوگل پلی ، بازی را باز کنید.

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

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

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

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

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

  1. در Unity Hub، روی Window > Google Play Games > Setup > Android Setup کلیک کنید.

    • در فیلد «دایرکتوری برای ذخیره ثابت‌ها» ، نام پوشه مربوط به فایل ثابت‌ها را وارد کنید.
    • در فیلد نام کلاس Constants ، نام کلاس C# مورد نظر برای ایجاد، شامل فضای نام (namespace) را وارد کنید.

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

    • در فیلد تعریف منابع (Resources definition )، داده‌های منابع اندروید (فایل AndroidManifest.xml ) را که از کنسول گوگل پلی کپی کرده‌اید، جای‌گذاری (paste) کنید.

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

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

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

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

  2. در Unity Hub، روی Window > Google Play Games > Setup > Nearby Connections Setup کلیک کنید.

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

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

    • روی تنظیم کلیک کنید.

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

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

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

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

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

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

  1. متد PlayGamesPlatform.Activate را فراخوانی کنید.
  2. اگر Xyz نام متدی است که آن را روی کلاس Social فراخوانی می‌کنید، آن را Social.Xyz صدا نزنید. در عوض، PlayGamesPlatform.Instance.Xyz را صدا بزنید.
  3. هنگام تعامل با سرویس‌های بازی‌های گوگل پلی، به جای 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 است.

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

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

اگر نسخه افزونه 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).
      }
    }

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

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

  using GooglePlayGames;

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

تا زمانی که مقدار بازگشتی موفقیت‌آمیزی از Authenticate دریافت نکنید، نمی‌توانید هیچ فراخوانی API مربوط به سرویس‌های بازی‌های گوگل پلی انجام دهید. در نتیجه، توصیه می‌کنیم بازی‌ها تا زمان فراخوانی callback، یک صفحه آماده به کار نمایش دهند تا مطمئن شویم که کاربران نمی‌توانند بازی را شروع کنند تا زمانی که احراز هویت کامل شود.

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

گوگل با استفاده از Play App Signing، کلید امضای برنامه شما را مدیریت و محافظت می‌کند. می‌توانید از Play App Signing برای امضای بهینه و توزیع فایل‌های Android APP Bundle استفاده کنید. Play App Signing کلید امضای برنامه شما را در زیرساخت امن گوگل ذخیره می‌کند. برای استفاده از Play App Signing، ابتدا باید یک فایل AAB از Unity Hub ایجاد و دانلود کنید. سپس می‌توانید فایل AAB را در Play Console آپلود کنید و یک نسخه آزمایشی داخلی ایجاد کنید.

ایجاد فایل AAB

برای ایجاد فایل AAB در Unity Hub، مراحل زیر را دنبال کنید:

  1. در Unity Hub، روی File > Build settings کلیک کنید.
  2. گزینه ساخت بسته نرم‌افزاری (گوگل پلی) را انتخاب کنید.

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

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

  4. فایل AAB را از Unity Hub دانلود کنید.

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

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

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

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

  8. در قسمت «نشانی اینترنتی بازخورد» یا «آدرس ایمیل» ، یک نشانی اینترنتی بازخورد یا یک آدرس ایمیل برای ارائه بازخورد وارد کنید.

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

اعتبارنامه‌های امضای برنامه خود را تأیید کنید

  1. در کنسول گوگل پلی ، یک بازی را انتخاب کنید.
  2. به صفحه تست و انتشار ( تنظیمات > امضای برنامه ) بروید.
  3. اعتبارنامه‌های امضای برنامه خود را تأیید کنید.

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

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

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

کدهای احراز هویت سرور را بازیابی کنید

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

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

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

    1. در هاب یونیتی، Google Play Games را برای یونیتی تنظیم کرده و احراز هویت کنید .
    2. در هاب یونیتی، به مسیر Window > Google Play Games > Setup > Android Setup بروید.
    3. مقدار شناسه مشتری را وارد کنید.
  3. کد احراز هویت سرور را برای محدوده‌های اضافی بازیابی کنید.

    سی شارپ

    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...
    });

تنظیم و افزودن ویژگی‌ها