Play Games PC SDK ช่วยให้คุณเข้าถึงบริการของ Google Play เพื่อสร้างและสร้างรายได้จากเกมบน PC ได้ ขายเนื้อหาดิจิทัลโดยใช้ Play Billing, ลงชื่อเข้าใช้อย่างราบรื่นโดยใช้ Play Games และยืนยันว่าผู้ใช้มีสิทธิ์ที่ถูกต้องในแอปพลิเคชันของคุณด้วย Play Integrity
หากพร้อมที่จะเริ่มแล้ว
สิ่งที่ต้องมีก่อน
สร้างรายการแอปภายใน Play Console และรับสิทธิ์ชื่อแพ็กเกจของ Play
ดาวน์โหลดและติดตั้ง Google Play Games บน PC แล้วลงชื่อเข้าใช้ด้วย บัญชี Google
ขั้นตอนที่ 1: เพิ่ม SDK ลงในโปรเจ็กต์
C++
ดาวน์โหลด Play Games PC C++ SDK
คัดลอกโฟลเดอร์ส่วนหัวของ API
includes/ลงในฐานโค้ดของแอปพลิเคชันคัดลอกไฟล์ที่แจกจ่ายซ้ำได้จากไดเรกทอรี
imports/ลงในโปรเจ็กต์ของแอปพลิเคชัน โดยขึ้นอยู่กับสถาปัตยกรรมเป้าหมายสำหรับ 64 บิต (x64): คัดลอกไฟล์จาก
imports/x64/สำหรับ 32 บิต (x86): คัดลอกไฟล์จาก
imports/x86/ลิงก์โปรเจ็กต์กับ
play_pc_sdk.libเพื่อให้เข้าถึงเนื้อหาของplay_pc_sdk.dllได้
C#
ดาวน์โหลด Play Games PC Unity SDK เป็นไฟล์ tarball (.tgz)
SDK จะเผยแพร่เป็นไฟล์ tarball (.tgz) ที่เข้ากันได้กับ Unity Package Manager (UPM) หากต้องการนำเข้าแพ็กเกจ โปรดดูหัวข้อ ติดตั้งแพ็กเกจ UPM จากไฟล์ tar ในเครื่อง
ดูเอกสารประกอบโดยละเอียด คำแนะนำในการตั้งค่า และคำแนะนำเพิ่มเติมได้ที่ หน้า แพ็กเกจ Play PC Unity
ขั้นตอนที่ 2: เพิ่มไฟล์ Manifest
คุณจะต้องเชื่อมโยงไฟล์ปฏิบัติการของเกมกับชื่อแพ็กเกจของ Play ที่คุณรับสิทธิ์ภายใน Play Console ก่อนจึงจะใช้ SDK จากภายในเกมได้ โดยการเพิ่มไฟล์ 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
ขั้นตอนที่ 3: ลงนามดิจิทัลในเกม
เกมต้องลงนามดิจิทัลในไฟล์ปฏิบัติการของเกมโดยใช้ ลายเซ็นดิจิทัล Authenticodeก่อนจึงจะใช้ SDK ได้ ดูวิธีการลงนามในไฟล์ปฏิบัติการได้ในเอกสารประกอบเกี่ยวกับ SignTool
เมื่อดำเนินการตามกระบวนการลงนามดิจิทัลในเกมเสร็จแล้ว ให้ส่งข้อมูลใบรับรองไปยังตัวแทนของ Google เพื่อทำการกำหนดค่า
ขั้นตอนที่ 4: เริ่มต้น SDK
เริ่มต้น SDK ระหว่างลำดับการเริ่มต้นของเกม การดำเนินการนี้ควรทำโดยอัตโนมัติโดยไม่ต้องให้ผู้ใช้โต้ตอบ และขอแนะนำให้ยืนยันว่าการเริ่มต้นสำเร็จก่อนแสดงหน้าต่างเกม ซึ่งจะมอบประสบการณ์การใช้งานที่ดีที่สุดแก่ผู้ใช้ด้วยการแสดงและแก้ไขข้อผิดพลาดโดยเร็วที่สุด และหลีกเลี่ยงไม่ให้หน้าต่างเกมปรากฏขึ้นชั่วครู่ในกรณีที่กระบวนการของเกมต้องออก
เริ่มใช้ SDK โดยเรียก
GooglePlayInitialize (C++) /
GooglePlayInitialization.InitializeAsync (C#)
เพื่อเริ่มต้น API ซึ่งจะตั้งค่าสถานะส่วนกลาง เชื่อมต่อกับรันไทม์ของ SDK และยืนยันว่าแอปพลิเคชันเริ่มต้นอย่างถูกต้อง คุณต้อง เรียกใช้ฟังก์ชันนี้และให้ฟังก์ชันเรียกกลับการดำเนินการต่อเสร็จสมบูรณ์โดยมี InitializeResult::ok() (C++) / Result.IsOk (C#) เท่ากับ true ก่อนจึงจะใช้ API อื่นๆ ได้
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#) ให้ออกกระบวนการของเกมโดยเร็วที่สุด รันไทม์ของ SDK จะพยายามช่วยเหลือผู้ใช้โดยที่เกมของคุณไม่ต้องดำเนินการเพิ่มเติม เช่น หากผู้ใช้ไม่มีใบอนุญาตที่ถูกต้องสำหรับเกม Google Play Games จะแจ้งให้ผู้ใช้ซื้อสำเนา สำหรับข้อผิดพลาดอื่นๆ คุณควรออกจากกระบวนการของเกมด้วย เนื่องจากคุณจะไม่สามารถใช้ SDK เพื่อดำเนินการที่สำคัญ เช่น การยืนยันว่าผู้ใช้มีใบอนุญาตที่ถูกต้องสำหรับเกม
การตอบกลับที่ไม่สำเร็จอาจบ่งบอกถึงเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้
ไม่ได้ติดตั้งรันไทม์ของ SDK, ไม่ได้ทำงานบนอุปกรณ์ หรือเป็นเวอร์ชันเก่าที่ไม่เข้ากันกับ SDK ที่ผสานรวมอยู่ในเกม
รันไทม์ของ SDK ยืนยันข้อมูลประจำตัวของแอปพลิเคชันของเกมไม่ได้ ซึ่งอาจเกิดจาก
manifest.xmlไม่ถูกต้อง หรือใช้ SDK โดยไม่ได้เปิดใช้ โหมดนักพัฒนาแอป เมื่อพัฒนา หากไม่มีการดำเนินการนี้ คุณจะต้องลงนามดิจิทัลในไฟล์ปฏิบัติการของเกมด้วยใบรับรองดิจิทัลที่ลงทะเบียนกับชื่อแพ็กเกจของ Playไม่ได้เปิดใช้ไฟล์ปฏิบัติการของเกมผ่านไคลเอ็นต์ Google Play Games
ผู้ใช้ที่ใช้งานอยู่ใน Google Play Games ไม่มีใบอนุญาตสำหรับแอปพลิเคชัน
ขั้นตอนที่ 5: (ไม่บังคับ) การรองรับกระบวนการของเกมหลายรายการ
ทำตามขั้นตอนการผสานรวมเพิ่มเติมเหล่านี้หากเกมของคุณใช้กระบวนการหลายรายการ และกระบวนการอื่นที่ไม่ใช่กระบวนการที่เปิดใช้โดย Google Play Games บน PC ใช้ Play Games PC SDK เช่น หาก Google Play Games บน PC เปิดใช้ Launcher ของเกม จากนั้น Launcher จะเริ่มกระบวนการของเกมที่จะโต้ตอบกับ SDK
กระบวนการที่เปิดใช้โดย Google Play Games บน PC โดยตรงต้อง ยืนยันว่าการเริ่มต้น Play Games PC SDK สำเร็จ
ซึ่งจะมอบประสบการณ์การใช้งานที่ดีที่สุดแก่ผู้ใช้ด้วยการแสดงข้อผิดพลาดโดยเร็วที่สุด โปรดทราบว่ากระบวนการย่อยที่ใช้ SDK ต้องทำการเริ่มต้นด้วย นอกเหนือจากกระบวนการที่เปิดใช้โดยตรง
หากต้องการใช้ 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 บน PC (
GooglePlayGames.exe) เปิดใช้เกม (YourGameLauncher.exe) โดยมีพารามิเตอร์ตัวอย่าง (--gpg_args=abc --your_args=123) จากนั้นเกมจะสร้างกระบวนการย่อย (YourGame.exe) ซึ่งใช้ Play Games PC SDK เพื่อให้ดำเนินการนี้ได้ กระบวนการของเกมที่เปิดใช้โดย Google Play Games บน PC จะส่งต่อพารามิเตอร์บรรทัดคำสั่งที่ได้รับไปยังกระบวนการย่อยออกกระบวนการทั้งหมดเมื่อเกมหยุดทำงาน
เมื่อผู้ใช้ปิดเกมหรือเกมออกเนื่องจากการเริ่มต้น SDK ล้มเหลว เช่น
kActionRequiredShutdownClientProcessให้ปิดกระบวนการทั้งหมดที่เกมสร้างขึ้น ซึ่งจะช่วยให้แน่ใจว่าการเปลี่ยนแปลงใหม่ๆ เช่น การเปลี่ยนไปใช้บัญชีที่ใช้งานอยู่บัญชีอื่นจะมีผลในครั้งถัดไปที่ไคลเอ็นต์ Google Play Games บน PC เปิดใช้เกม
ขั้นตอนถัดไป
ใช้ SDK ขณะพัฒนาใน IDE โดยทำดังนี้
- เปิดใช้โหมดนักพัฒนาแอป
เพิ่มฟีเจอร์ Google Play บน PC ลงในแอปโดยทำดังนี้
- ขายสินค้าดิจิทัลด้วย Play Billing
- วัดผลการตลาดด้วย Play Install Referrer
- ปกป้องเกมของคุณด้วย Play Integrity สำหรับ PC