Play Games PC SDK ช่วยให้คุณเข้าถึงบริการของ Google Play เพื่อสร้างและ สร้างรายได้จากเกมบน PC ได้ ขายเนื้อหาดิจิทัลโดยใช้การเรียกเก็บเงินของ Play, ลงชื่อเข้าใช้โดยใช้ Play Games ได้อย่างราบรื่น และยืนยันว่าผู้ใช้มีสิทธิ์ที่ถูกต้องในแอปพลิเคชันของคุณด้วย Play Integrity
หากพร้อมที่จะเริ่มแล้ว
สิ่งที่ต้องมีก่อน
สร้างข้อมูลแอปภายใน Play Console และอ้างสิทธิ์ชื่อแพ็กเกจ Play
ดาวน์โหลดและติดตั้ง Google Play Games สำหรับ PC แล้วลงชื่อเข้าใช้ด้วย บัญชี Google ของคุณ
ขั้นตอนที่ 1: เพิ่ม SDK ลงในโปรเจ็กต์
C++
ดาวน์โหลด SDK ของ Play Games PC C++
คัดลอกโฟลเดอร์ส่วนหัวของ API
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
ลากและวางไฟล์นี้ลงในส่วน
Assetsของหน้าต่างโปรเจ็กต์ใน Unity Editor โดยตรงหน้าต่าง
Import Unity Packageจะปรากฏขึ้น ให้เลือกทุกอย่างไว้และคลิกImportตอนนี้ SDK ได้รับการติดตั้งแล้ว โดยจะอยู่ในโฟลเดอร์
Assets/Plugins/PlayPcSdkManaged
ขั้นตอนที่ 2: เพิ่มไฟล์ Manifest
ก่อนที่จะใช้ SDK จากภายในเกมได้ คุณจะต้อง
เชื่อมโยงไฟล์ปฏิบัติการของเกมกับชื่อแพ็กเกจ 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
ขั้นตอนที่ 3: ลงนามดิจิทัลในเกม
ก่อนที่เกมจะใช้ SDK ได้ ไฟล์ปฏิบัติการของเกมต้องได้รับการลงนามแบบดิจิทัล โดยใช้ลายเซ็นดิจิทัล Authenticode ดูวิธีการลงนามในไฟล์ที่เรียกใช้งานได้ที่เอกสารประกอบเกี่ยวกับ 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: (ไม่บังคับ) รองรับกระบวนการเกมหลายรายการ
ทำตามขั้นตอนการผสานรวมเพิ่มเติมเหล่านี้หากเกมของคุณใช้หลายกระบวนการ และกระบวนการอื่นใช้ Play Games PC SDK นอกเหนือจากกระบวนการที่ Google Play Games บน PC เปิดใช้ เช่น หาก Google Play Games บน PC เปิดตัว Launcher ของเกม แล้ว Launcher จะเริ่มกระบวนการของเกม ซึ่งจะโต้ตอบกับ SDK
กระบวนการที่ Google Play Games สำหรับ PC เปิดใช้โดยตรงต้อง ยืนยันการเริ่มต้น SDK ของ Play Games สำหรับ PC ที่สำเร็จ
ซึ่งจะมอบประสบการณ์การใช้งานที่ดีที่สุดให้แก่ผู้ใช้ด้วยการแสดงข้อผิดพลาดโดยเร็วที่สุด โปรดทราบว่ากระบวนการย่อยที่ใช้ 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