Play Games PC SDK का इस्तेमाल करके, अपने गेम को बेहतर बनाना

Play Games PC SDK की मदद से, पीसी पर गेम बनाने और उससे कमाई करने के लिए, Google Play की सेवाओं को ऐक्सेस किया जा सकता है. Play Billing का इस्तेमाल करके डिजिटल कॉन्टेंट बेचें, Play Games का इस्तेमाल करके आसानी से साइन-इन करें, और Play Integrity की मदद से यह पुष्टि करें कि आपके उपयोगकर्ताओं के पास आपके ऐप्लिकेशन का मान्य एनटाइटलमेंट है.

क्या आप शुरू करने के लिए तैयार हैं?

ज़रूरी शर्तें

  • Play Console में ऐप्लिकेशन की एंट्री बनाएं और Play पैकेज के नाम पर दावा करें.

  • Google Play Games for PC डाउनलोड और इंस्टॉल करें. इसके बाद, अपने Google खाते से साइन इन करें.

पहला चरण: अपने प्रोजेक्ट में एसडीके जोड़ना

C++

  • Play Games PC C++ SDK डाउनलोड करें.

  • एपीआई हेडर फ़ोल्डर includes/ को अपने ऐप्लिकेशन के कोडबेस में कॉपी करें.

  • imports/ डायरेक्ट्री से, फिर से डिस्ट्रिब्यूट की जा सकने वाली फ़ाइलों को अपने ऐप्लिकेशन के प्रोजेक्ट में कॉपी करें. यह आपके टारगेट आर्किटेक्चर पर निर्भर करता है:

  • 64-बिट (x64) के लिए: imports/x64/ से फ़ाइलें कॉपी करें.

  • 32-बिट (x86) के लिए: imports/x86/ से फ़ाइलें कॉपी करें.

  • अपने प्रोजेक्ट को play_pc_sdk.lib से लिंक करें, ताकि play_pc_sdk.dll के कॉन्टेंट को ऐक्सेस किया जा सके.

C#

  • Play Games PC C# SDK को .unitypackage फ़ॉर्मैट में डाउनलोड करें.

  • इस फ़ाइल को सीधे तौर पर, Unity Editor की Assets विंडो के प्रोजेक्ट सेक्शन में खींचें और छोड़ें

  • आपको Import Unity Package विंडो दिखेगी. सभी विकल्पों को चुने हुए रहने दें और Import पर क्लिक करें

  • अब एसडीके टूल इंस्टॉल हो गया है. यह Assets/Plugins/PlayPcSdkManaged फ़ोल्डर में मौजूद है

दूसरा चरण: मेनिफ़ेस्ट फ़ाइल जोड़ना

अपने गेम में एसडीके का इस्तेमाल करने से पहले, आपको अपने गेम के एक्ज़ीक्यूटेबल को उस Play पैकेज के नाम से जोड़ना होगा जिस पर आपने Play Console में दावा किया है. इसके लिए, आपको manifest.xml फ़ाइल को उसी डायरेक्ट्री में जोड़ना होगा जिसमें आपके गेम की एक्ज़ीक्यूटेबल फ़ाइल मौजूद है.

उदाहरण manifest.xml के कॉन्टेंट:

<?xml version="1.0" encoding="utf-8"?>
<Manifest version="1">
    <Application>
        <PackageName>com.example.package</PackageName>
    </Application>
</Manifest>

manifest.xml प्लेसमेंट का उदाहरण:

C:\Program Files
└───Example Game
    ├───Game.exe
    └───manifest.xml

तीसरा चरण: अपने गेम पर डिजिटल हस्ताक्षर करना

एसडीके का इस्तेमाल करने से पहले, गेम के एक्ज़ीक्यूटेबल पर Authenticode Digital Signature का इस्तेमाल करके, डिजिटल हस्ताक्षर किया जाना चाहिए. किसी एक्ज़ीक्यूटेबल पर हस्ताक्षर करने का तरीका जानने के लिए, SignTool के बारे में दस्तावेज़ देखें .

गेम पर डिजिटल हस्ताक्षर करने की प्रोसेस पूरी करने के बाद, कॉन्फ़िगरेशन के लिए अपने Google प्रतिनिधि को सर्टिफ़िकेट की जानकारी भेजें.

चौथा चरण: एसडीके टूल को शुरू करना

अपने गेम के स्टार्टअप सीक्वेंस के दौरान, SDK टूल को सेटअप करें. यह प्रोसेस अपने-आप होनी चाहिए. इसमें उपयोगकर्ता के किसी इंटरैक्शन की ज़रूरत नहीं होनी चाहिए. हमारा सुझाव है कि गेम विंडो रेंडर करने से पहले, यह पुष्टि कर लें कि SDK सही तरीके से शुरू हो गया है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है. ऐसा इसलिए, क्योंकि गड़बड़ियों का पता चलने पर उन्हें तुरंत ठीक किया जाता है. साथ ही, इससे उन मामलों में गेम विंडो के कुछ समय के लिए दिखने की समस्या से बचा जा सकता है जहां गेम प्रोसेस को बंद करने की ज़रूरत होती है.

एपीआई को शुरू करने के लिए, GooglePlayInitialize (C++) / GooglePlayInitialization.InitializeAsync (C#) को कॉल करके, एसडीके टूल का इस्तेमाल शुरू करें. इससे ग्लोबल स्टेट सेट अप हो जाएगी. साथ ही, यह एसडीके के रनटाइम से कनेक्ट हो जाएगी. इसके अलावा, यह पुष्टि करेगी कि ऐप्लिकेशन सही तरीके से शुरू हुआ है. किसी अन्य एपीआई का इस्तेमाल करने से पहले, इस फ़ंक्शन को कॉल करना ज़रूरी है. साथ ही, इसमें InitializeResult::ok() (C++) / Result.IsOk (C#) के बराबर true के साथ कंटिन्यूएशन कॉलबैक पूरा होना चाहिए.

C++

  // Initialize the SDK as part of the startup sequence of your application.
  auto promise = std::make_shared<std::promise<InitializeResult>>();
  GooglePlayInitialize(
    [promise](InitializeResult result) {
      promise->set_value(std::move(result));
    });

  auto initialize_result = promise->get_future().get();
  if (initialize_result.ok()) {
    // The SDK succeeded with initialization. Continue with the startup sequence
    // of the game.
    // ...
  } else if (initialize_result.code() == InitializationError::kActionRequiredShutdownClientProcess) {
    // The SDK failed to initialize and has requested that your game process exit
    // as soon as possible.
    exit(1);
  } else {
    // The SDK failed to initialize for an alternative reason. It is still
    // generally recommended that you exit the game process as soon as possible,
    // because it won't be possible to access any APIs in the SDK. Critical
    // operations such as verifying the user owns a valid license to your game
    // won't be possible.
    // ...
  }

C#

  // SDK Clients
  private BillingClient _billingClient;
  private IntegrityClient _integrityClient;

  // Stored product information
  private string _offerToken;

  private async void InitializeSDK()
  {
      // The factory provides the necessary handler for initialization.
      var initializationHandler = PlayPcSdkFactory.InitializationHandler;
      var result = await GooglePlayInitialization.InitializeAsync(initializationHandler);

      if (result.IsOk)
      {
          // Use the factory to get Unity-compatible instances of the clients
          _billingClient = PlayPcSdkFactory.CreateBillingClient();
          _integrityClient = PlayPcSdkFactory.CreateIntegrityClient();

          // SDK is ready for use
      }
      else
      {
          // Handle specific, actionable errors
          if (result.Code == InitializationError.ActionRequiredShutdownClientProcess)
          {
              Log("This game must be launched through the Google Play Games client. Please exit all game processes immediately, GPG will relaunch the game safely.");
              Application.Quit();
          }
      }
  }

अगर kActionRequiredShutdownClientProcess (C++) / InitializationError.ActionRequiredShutdownClientProcess (C#) कोड के साथ शुरू नहीं किया जा सकता, तो गेम प्रोसेस को जल्द से जल्द बंद करें. एसडीके का रनटाइम, उपयोगकर्ता की मदद करने की कोशिश करेगा. इसके लिए, आपके गेम को कोई और कार्रवाई करने की ज़रूरत नहीं होगी. उदाहरण के लिए, अगर उपयोगकर्ता के पास गेम का मान्य लाइसेंस नहीं है, तो Google Play Games उसे गेम की कॉपी खरीदने के लिए कहेगा. अन्य गड़बड़ियों के लिए, आपको गेम प्रोसेस से भी बाहर निकल जाना चाहिए. ऐसा इसलिए, क्योंकि एसडीके टूल का इस्तेमाल करके ज़रूरी कार्रवाइयां नहीं की जा सकेंगी. जैसे, यह पुष्टि करना कि उपयोगकर्ता के पास आपके गेम का मान्य लाइसेंस है.

अगर आपको कोई जवाब नहीं मिलता है, तो इसका मतलब इनमें से कोई एक हो सकता है:

  • एसडीके रनटाइम इंस्टॉल नहीं है, डिवाइस पर नहीं चल रहा है या यह एक पुराना वर्शन है, जो आपके गेम में इंटिग्रेट किए गए एसडीके टूल के साथ काम नहीं करता.

  • SDK रनटाइम, गेम की ऐप्लिकेशन पहचान की पुष्टि नहीं कर सका. ऐसा अमान्य manifest.xml की वजह से हो सकता है. इसके अलावा, ऐसा तब भी हो सकता है, जब डेवलपमेंट के दौरान डेवलपर मोड चालू किए बिना एसडीके टूल का इस्तेमाल किया जा रहा हो. इसके बिना, आपके गेम के एक्ज़ीक्यूटेबल पर, आपके Play पैकेज के नाम से रजिस्टर किए गए डिजिटल सर्टिफ़िकेट से डिजिटल हस्ताक्षर करना ज़रूरी है.

  • गेम के एक्ज़ीक्यूटेबल को Google Play Games क्लाइंट के ज़रिए लॉन्च नहीं किया गया था.

  • Google Play Games में सक्रिय उपयोगकर्ता के पास ऐप्लिकेशन का लाइसेंस नहीं है.

पांचवां चरण: (ज़रूरी नहीं) एक से ज़्यादा गेम-प्रोसेस को सपोर्ट करना

अगर आपका गेम एक से ज़्यादा प्रोसेस का इस्तेमाल करता है और Play Games PC SDK टूल का इस्तेमाल, Google Play Games on PC से लॉन्च की गई प्रोसेस के अलावा किसी दूसरी प्रोसेस से किया जाता है, तो इंटिग्रेशन के इन अतिरिक्त चरणों को पूरा करें. उदाहरण के लिए, अगर Google Play Games on PC आपके गेम का लॉन्चर लॉन्च करता है, तो आपका लॉन्चर गेम की प्रोसेस शुरू करेगा. यह प्रोसेस, SDK के साथ इंटरैक्ट करेगी.

  1. Google Play Games for PC से सीधे तौर पर लॉन्च की गई प्रोसेस को, Play Games PC SDK के चालू होने की पुष्टि करनी होगी.

    इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है, क्योंकि गड़बड़ियों के बारे में उन्हें जल्द से जल्द पता चल जाता है. ध्यान दें कि एसडीके का इस्तेमाल करने वाली चाइल्ड-प्रोसेस को भी सीधे तौर पर लॉन्च की गई प्रोसेस के अलावा, इनिशियलाइज़ेशन करना होगा.

  2. चाइल्ड-प्रोसेस में Play Games PC SDK का इस्तेमाल करने के लिए, कमांड लाइन पैरामीटर को स्पॉन की गई चाइल्ड-प्रोसेस पर फ़ॉरवर्ड करें.

    कमांड लाइन पैरामीटर फ़ॉरवर्ड करने का उदाहरण:

    Processes hierarchy tree:
    
    GooglePlayGames.exe
    └───YourGameLauncher.exe --gpg_args=abc --your_args=123
        └───YourGame.exe --gpg_args=abc --your_args=123
    

    इस उदाहरण में, प्रोसेस के क्रम को दिखाया गया है. इसमें Google Play Games on PC (GooglePlayGames.exe) कुछ उदाहरण पैरामीटर (--gpg_args=abc --your_args=123) के साथ गेम (YourGameLauncher.exe) लॉन्च करता है. इसके बाद, गेम एक चाइल्ड-प्रोसेस (YourGame.exe) बनाता है, जो Play Games PC SDK का इस्तेमाल करती है. इसकी अनुमति देने के लिए पीसी के लिए Google Play Games से लॉन्च की गई गेम प्रोसेस, कमांड लाइन पैरामीटर को चाइल्ड-प्रोसेस को फ़ॉरवर्ड करती है.

  3. गेम बंद होने पर, सभी प्रोसेस बंद कर दें.

    जब कोई व्यक्ति आपका गेम बंद कर देता है या एसडीके शुरू न हो पाने की वजह से गेम बंद हो जाता है, जैसे कि kActionRequiredShutdownClientProcess, तो अपने गेम से जुड़ी सभी प्रोसेस बंद करें. इससे यह पक्का होता है कि अगली बार जब Google Play Games for PC क्लाइंट से आपका गेम लॉन्च किया जाए, तो नए बदलाव लागू हो जाएं. जैसे, किसी दूसरे चालू खाते पर स्विच करना.

अगले चरण

अपने आईडीई में डेवलपमेंट करते समय, SDK टूल का इस्तेमाल करें:

अपने ऐप्लिकेशन में Google Play PC की सुविधाएं जोड़ें:

  • Play Billing का इस्तेमाल करके डिजिटल सामान बेचना
  • Play Install Referrer की मदद से, मार्केटिंग की परफ़ॉर्मेंस मेज़र करना
  • Play Integrity for PC का इस्तेमाल करके, अपने गेम को सुरक्षित रखें