ตั้งค่า Google Play Games สำหรับ Unity และตรวจสอบสิทธิ์

เอกสารนี้จะแนะนำวิธีตั้งค่าโปรเจ็กต์ Unity เพื่อใช้ปลั๊กอิน Google Play Games สำหรับ Unity คุณจะได้เรียนรู้วิธีติดตั้งปลั๊กอินและ กำหนดค่าโปรเจ็กต์ Unity เอกสารนี้ยังครอบคลุมถึงวิธียืนยัน บริการตรวจสอบสิทธิ์ด้วย

ก่อนเริ่มต้น

ตรวจสอบข้อกำหนดของซอฟต์แวร์ ตั้งค่า Play Console และติดตั้ง Unity Editor

การติดตั้งปลั๊กอิน

หากต้องการดาวน์โหลดและติดตั้งปลั๊กอิน Google Play Games สำหรับ Unity ให้ทำตามขั้นตอนต่อไปนี้ใน Unity Editor

  1. ดาวน์โหลดที่เก็บ GitHub

  2. ค้นหาไฟล์ unitypackage ในไดเรกทอรี current-build ไฟล์นี้ แสดงถึงปลั๊กอิน เช่น ควรมีลักษณะดังนี้

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

ตั้งค่าโปรเจ็กต์ Unity

หากต้องการตั้งค่าโปรเจ็กต์ Unity ในการตั้งค่าเพลเยอร์ ให้ทำตามขั้นตอนต่อไปนี้

  1. เปิดโปรเจ็กต์เกม

  2. ใน Unity Editor ให้คลิก Assets > Import Package > Custom Package เพื่อนําเข้าไฟล์ unitypackage ไปยังแอสเซตของโปรเจ็กต์

  3. ตรวจสอบว่าแพลตฟอร์มบิลด์ปัจจุบันตั้งค่าเป็น Android

    1. คลิกไฟล์ > การตั้งค่าการสร้างในเมนูหลัก

    2. เลือก Android แล้วคลิกเปลี่ยนแพลตฟอร์ม

    3. คุณควรเห็นรายการเมนูใหม่ในส่วนหน้าต่าง > Google Play Games หากไม่มี ให้รีเฟรชชิ้นงานโดยคลิกชิ้นงาน > รีเฟรช แล้วลองตั้งค่าแพลตฟอร์มบิลด์อีกครั้ง

  4. ใน Unity Editor ให้คลิกFile > Build Settings > Player Settings > Other Settings

  5. เลือกเวอร์ชันในช่องระดับ API เป้าหมาย

  6. ในช่องแบ็กเอนด์การเขียนสคริปต์ ให้ป้อน IL2CPP

  7. เลือกค่าในช่องสถาปัตยกรรมเป้าหมาย

  8. จดชื่อแพ็กเกจ package_name คุณสามารถใช้ข้อมูลนี้ได้ในภายหลัง

การตั้งค่าเพลเยอร์ในโปรเจ็กต์ Unity
การตั้งค่าเพลเยอร์ในโปรเจ็กต์ Unity

สร้างที่เก็บคีย์ใหม่

คุณต้องมีคีย์เพื่อตรวจสอบข้อมูลเข้าสู่ระบบ โปรดทำตามขั้นตอนต่อไปนี้

  1. ใน Unity Editor ให้คลิกFile > Build settings > Player settings
  2. ในส่วนการตั้งค่าการเผยแพร่ ให้คลิกตัวจัดการคีย์สโตร์
    1. ในหน้าต่างตัวจัดการคีย์สโตร์ ให้คลิกคีย์สโตร์ > สร้างใหม่ > ทุกที่
    2. เลือกโฟลเดอร์และตั้งชื่อที่เก็บคีย์
    3. ในช่องรหัสผ่าน ให้ป้อนรหัสผ่านและยืนยัน
    4. คลิกเพิ่มคีย์

จดชื่อโฟลเดอร์ไว้ คุณใช้ชื่อนี้เพื่อ สร้างข้อมูลเข้าสู่ระบบใน Google Cloud ได้

คัดลอกทรัพยากร Android จาก Play Console

รางวัลพิเศษ ลีดเดอร์บอร์ด และกิจกรรมแต่ละรายการที่คุณสร้างใน Play Console จะมีทรัพยากร Android ที่คุณใช้เมื่อตั้งค่าโปรเจ็กต์ Unity

หากต้องการรับทรัพยากร Android สำหรับเกม ให้ทำตามขั้นตอนต่อไปนี้

  1. ใน Google Play Console ให้ เปิดเกม

  2. ในหน้าบริการเกมของ Play - การกำหนดค่า (เพิ่มผู้ใช้ > บริการเกมของ Play > การตั้งค่าและการจัดการ  > การกำหนดค่า) ให้คลิกรับทรัพยากร

  3. ในหน้าต่างทรัพยากร ให้คลิกแท็บ Android(XML)

  4. เลือกและคัดลอกเนื้อหาของทรัพยากร Android (AndroidManifest.xml)

เพิ่มทรัพยากร Android ลงในโปรเจ็กต์ Unity

เพิ่มทรัพยากร Android ต่อไปนี้ลงในโปรเจ็กต์ Unity

  1. ใน Unity Editor ให้คลิก Window > Google Play Games > Setup > การตั้งค่า Android

    • ในช่องไดเรกทอรีที่จะบันทึกค่าคงที่ ให้ป้อนชื่อโฟลเดอร์สำหรับ ไฟล์ค่าคงที่
    • ในช่องชื่อคลาสค่าคงที่ ให้ป้อนชื่อคลาส C# ที่จะสร้าง รวมถึงเนมสเปซ

      เช่น หากคลาส C# คือ id.cs และอยู่ใน Assets > myproject > scripts > id.cs ชื่อคลาสค่าคงที่อาจเป็น myproject.scripts.id

    • ในช่องคำจำกัดความของทรัพยากร ให้วางข้อมูลทรัพยากร Android (ไฟล์ AndroidManifest.xml) ที่คัดลอกจาก Google Play Console

    • ไม่บังคับ: ในช่องรหัสไคลเอ็นต์ ให้ป้อนรหัสไคลเอ็นต์ของ เว็บแอปที่ลิงก์

      หากต้องการรับรหัสไคลเอ็นต์สำหรับเกมจาก Google Cloud โปรดดูการสร้างรหัสไคลเอ็นต์

      คุณจะต้องดำเนินการนี้ในกรณีที่มีแบ็กเอนด์บนเว็บ สำหรับเกมและต้องใช้รหัสการให้สิทธิ์เซิร์ฟเวอร์เพื่อแลกเป็นโทเค็นเพื่อการเข้าถึง โดยเซิร์ฟเวอร์แบ็กเอนด์ หรือหากคุณต้องใช้โทเค็นรหัสสำหรับผู้เล่นเพื่อทำการเรียก API อื่นๆ ที่ไม่ใช่เกม

    • คลิกตั้งค่า ซึ่งจะกำหนดค่าเกมด้วยรหัสไคลเอ็นต์และสร้างคลาส C# ที่มีค่าคงที่สำหรับทรัพยากร Android แต่ละรายการ

  2. ใน Unity Editor ให้คลิก Window > Google Play Games > Setup > Nearby Connections Setup

    • ในช่องรหัสบริการการเชื่อมต่อในบริเวณใกล้เคียง ให้ป้อน package_name

      ใช้ package_name เดียวกันกับที่ใช้ใน ตั้งค่าโปรเจ็กต์ Unity

    • คลิกตั้งค่า

เลือกแพลตฟอร์มโซเชียล

ปลั๊กอินบริการเกมของ Google Play จะใช้อินเทอร์เฟซโซเชียลของ Unity เพื่อให้เข้ากันได้กับเกมที่ใช้อินเทอร์เฟซดังกล่าวอยู่แล้วเมื่อผสานรวม กับแพลตฟอร์มอื่นๆ อย่างไรก็ตาม ฟีเจอร์บางอย่างมีเฉพาะใน Play Games และเป็นส่วนขยายของอินเทอร์เฟซโซเชียลมาตรฐานที่ Unity มีให้

การเรียก API มาตรฐานสามารถเข้าถึงได้ผ่านออบเจ็กต์ Social.Active ซึ่งเป็นข้อมูลอ้างอิงถึงอินเทอร์เฟซ ISocialPlatform ส่วนขยายบริการเกมของ Google Play ที่ไม่ใช่มาตรฐาน สามารถเข้าถึงได้โดยการแคสต์ออบเจ็กต์ Social.Active ไปยังคลาส PlayGamesPlatform ซึ่งจะมีเมธอดเพิ่มเติม ให้ใช้งาน

ใช้ปลั๊กอินโดยไม่ต้องลบล้างแพลตฟอร์มโซเชียลเริ่มต้น

เมื่อคุณเรียกใช้ PlayGamesPlatform.Activate บริการเกมของ Google Play จะกลายเป็นการใช้งานแพลตฟอร์มโซเชียลเริ่มต้นของคุณ ซึ่งหมายความว่า ปลั๊กอินบริการเกมของ Google Play จะทำการเรียกแบบคงที่ไปยังเมธอดใน Social และ Social.Active ซึ่งเป็นลักษณะการทำงานที่คาดไว้สำหรับเกมส่วนใหญ่ที่ใช้ปลั๊กอิน

อย่างไรก็ตาม หากคุณต้องการใช้การติดตั้งใช้งานเริ่มต้นต่อไปด้วยเหตุผลบางประการ (เช่น เพื่อใช้ส่งรางวัลพิเศษและลีดเดอร์บอร์ดไปยัง แพลตฟอร์มโซเชียลอื่น) คุณสามารถใช้ปลั๊กอินบริการเกมของ Google Play โดยไม่ต้อง ลบล้างปลั๊กอินเริ่มต้น หากต้องการทำสิ่งต่อไปนี้

  1. เรียกใช้เมธอด PlayGamesPlatform.Activate
  2. หาก Xyz เป็นชื่อของเมธอดที่คุณเรียกใช้ในคลาส Social อย่าเรียกใช้ Social.Xyz แต่ให้โทรหา PlayGamesPlatform.Instance.Xyz แทน
  3. ใช้พร็อพเพอร์ตี้ PlayGamesPlatform.Instance แทน Social.Active เมื่อโต้ตอบกับบริการเกมของ Google Play

วิธีนี้จะช่วยให้คุณส่งคะแนนและความสำเร็จไปยังแพลตฟอร์มโซเชียล 2 แพลตฟอร์มขึ้นไปพร้อมกันได้

    // 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 Games

ใน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).
      }
    }

รหัสผลลัพธ์คือ Enum ที่คุณใช้เพื่อระบุสาเหตุและ การตรวจสอบสิทธิ์ล้มเหลวได้

หากต้องการใช้แพลตฟอร์มโซเชียลของ Unity คุณสามารถใช้โค้ดต่อไปนี้แทนได้

  using GooglePlayGames;

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

คุณจะเรียกใช้บริการเกมของ Google Play API ไม่ได้จนกว่าจะได้รับค่าที่สำเร็จจาก Authenticate ด้วยเหตุนี้ เราจึงขอแนะนำให้เกมแสดง หน้าจอสแตนด์บายจนกว่าจะมีการเรียกใช้แฮนเดิลการเรียกกลับ เพื่อให้มั่นใจว่าผู้ใช้จะเริ่มเล่น เกมไม่ได้จนกว่าการตรวจสอบสิทธิ์จะเสร็จสมบูรณ์

ป้องกันการสร้างโปรไฟล์ที่ทริกเกอร์โดยอัตโนมัติ

คุณปิดใช้ข้อความแจ้งการสร้างโปรไฟล์ที่ทริกเกอร์อัตโนมัติได้ ผ่านไฟล์ Manifest ซึ่งจะช่วยให้ผู้ใช้ที่ไม่มีโปรไฟล์บริการเกมของ 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 มีข้อความคล้ายกับข้อความต่อไปนี้ "เกมเลือกไม่ใช้ข้อความแจ้งการสร้างโปรไฟล์อัตโนมัติ (ใช้ไฟล์ Manifest)"

ใช้ Play App Signing

Google จัดการและปกป้องคีย์ Signing ของแอปโดยใช้ Play App Signing คุณสามารถใช้ Play App Signing เพื่อลงนามในไฟล์ Android App Bundle (AAB) ที่เพิ่มประสิทธิภาพสำหรับการเผยแพร่ Play App Signing จะจัดเก็บ คีย์ App Signing ของคุณไว้ในโครงสร้างพื้นฐานที่ปลอดภัยของ Google หากต้องการใช้ Play App Signing คุณต้องสร้างและดาวน์โหลดไฟล์ AAB จาก Unity Editor ก่อน จากนั้นคุณสามารถอัปโหลดไฟล์ AAB ไปยัง Play Console และสร้างรุ่นทดสอบภายใน

สร้างไฟล์ AAB

หากต้องการสร้างไฟล์ AAB ใน Unity Editor ให้ทำตามขั้นตอนต่อไปนี้

  1. ใน Unity Editor ให้คลิกไฟล์ > การตั้งค่าการสร้าง
  2. เลือกสร้าง App Bundle ( Google Play)

    ดูข้อมูลเพิ่มเติมได้ที่ ข้อมูลอ้างอิงการตั้งค่าการสร้าง Android

  3. คลิกสร้าง

  4. ดาวน์โหลดไฟล์ AAB จาก Unity Editor

สร้างรุ่นสำหรับการทดสอบภายใน

หากต้องการสร้างรุ่นการทดสอบภายในและเพิ่มผู้ทดสอบใน Play Console ให้ทำตามขั้นตอนต่อไปนี้

  1. เลือกเกมใน Google Play Console
  2. ไปที่หน้าทดสอบและเผยแพร่ (การทดสอบ > การทดสอบภายใน)
  3. คลิกอัปโหลด แล้วเลือกไฟล์ AAB
  4. ป้อนชื่อในช่องรายละเอียดผลงาน
  5. คลิกถัดไป แล้วตรวจสอบรายละเอียดผลงาน
  6. คลิกบันทึกและเผยแพร่
  7. ในแท็บผู้ทดสอบ ให้คลิกสร้างรายชื่ออีเมลเพื่อเพิ่มผู้ทดสอบได้สูงสุด 100 คน

    ดูข้อมูลเพิ่มเติมได้ที่การทดสอบภายใน: จัดการผู้ทดสอบได้สูงสุด 100 คน

  8. ใน URL หรืออีเมลสำหรับแสดงความคิดเห็น ให้ป้อน URL หรืออีเมลสำหรับแสดงความคิดเห็น

  9. คลิกบันทึก

ยืนยันข้อมูลเข้าสู่ระบบ App Signing ของคุณ

  1. เลือกเกมใน Google Play Console
  2. ไปที่หน้าทดสอบและเผยแพร่ (การตั้งค่า > App Signing)
  3. ยืนยันข้อมูลเข้าสู่ระบบ App Signing ของคุณ

สร้างและเรียกใช้โปรเจ็กต์

คุณสร้างและเรียกใช้โปรเจ็กต์เกมได้ในตอนนี้ เมื่อเกมเริ่ม คุณจะเห็นความพยายามในการตรวจสอบสิทธิ์อัตโนมัติ

คุณต้องมีอุปกรณ์จริงที่ใช้ระบบ Android ซึ่งเปิดใช้การแก้ไขข้อบกพร่อง USB หรือโปรแกรมจำลองที่เรียกใช้โปรเจ็กต์ที่พัฒนาแล้วได้

ดึงรหัสการตรวจสอบสิทธิ์ของเซิร์ฟเวอร์

หากต้องการเข้าถึง Google APIs ในเว็บเซิร์ฟเวอร์แบ็กเอนด์ในนามของผู้เล่นปัจจุบัน คุณต้องรับรหัสการตรวจสอบสิทธิ์จากแอปพลิเคชันไคลเอ็นต์และ ส่งรหัสนี้ไปยังแอปพลิเคชันเว็บเซิร์ฟเวอร์ จากนั้นสามารถแลกรหัสเป็น โทเค็นเพื่อการเข้าถึงเพื่อทำการเรียกไปยัง API ต่างๆ ดูข้อมูลเกี่ยวกับเวิร์กโฟลว์ได้ที่ลงชื่อเข้าใช้ด้วย Google สำหรับเว็บ

วิธีรับรหัสการเข้าถึงฝั่งเซิร์ฟเวอร์

  1. เพิ่มรหัสไคลเอ็นต์เว็บสำหรับเกมของคุณใน Play Console
    1. เลือกเกมใน Google Play Console
    2. ในหน้าการกำหนดค่า (เพิ่มผู้ใช้ > บริการเกมของ Play > การตั้งค่าและการจัดการ > การกำหนดค่า) ให้คลิกเพิ่มข้อมูลเข้าสู่ระบบ
    3. ในหน้าเพิ่มข้อมูลเข้าสู่ระบบ ให้เลือกเซิร์ฟเวอร์เกม
    4. สร้างรหัสไคลเอ็นต์ OAuth 2.0
    5. จดค่ารหัสไคลเอ็นต์ คุณจะต้องระบุค่านี้ในภายหลัง
  2. เพิ่มรหัสไคลเอ็นต์เว็บลงใน Unity Hub

    1. ใน Unity Hub ให้ตั้งค่า Google Play Games สำหรับ Unity และตรวจสอบสิทธิ์
    2. ใน Unity Hub ให้ไปที่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...
    });

ตั้งค่าและเพิ่มฟีเจอร์