本文將回答關於 SDK 和發布 Google Play 遊戲電腦版的常見問題。
如何新增 VPN?
如果開發人員需要在 Google Play 遊戲電腦版不支援的區域測試遊戲,建議使用 VPN 取得支援區域的 IP 位址。
請務必在 VPN 上啟用 TUN 模式。 如要瞭解如何啟用 TUN 模式及設定防火牆,請參閱 VPN 供應商的操作手冊。
啟用 TUN 模式後,請安裝 Google Play 遊戲電腦版和模擬器,以進行測試。
您是否可以在沒有後端伺服器的情況下使用購買流程?
從安全性的角度來看,一般不建議在沒有後端伺服器的情況下進行處理。
詳情請參閱「不使用後端伺服器的程序」。
如何在 Unity 或 UE 編輯器中,開始為 Google Play 遊戲電腦版開發遊戲?
- 啟用開發人員模式,然後繼續進行測試。
- 新增
manifest.xml和.dll檔案。詳情請參閱開發人員文件。 - 註冊搶先體驗合作夥伴 GUID,以利測試。
使用 Google Play Games 應用程式啟動遊戲時,是否會同步處理 Google 帳戶詳細資料
透過 Google Play Games 用戶端啟動遊戲後,帳戶會自動同步,不需要再次透過 Google 登入程序登入。
使用第三方啟動器提交 Windows App Bundle (WAB) 時,是否需要審查遊戲套件?
您只需提交安裝程式,不必提交整個遊戲套件,審查人員將可使用安裝程式下載遊戲套件。
如果玩家使用第三方啟動器,而非 Google Play 用戶端,系統會自動同步處理他們的 Play Games 服務帳戶嗎?
如要讓 SDK 函式運作,遊戲必須直接透過 Google Play Games 用戶端啟動。如果遊戲是由其他程序 (例如安裝程式或啟動器應用程式) 啟動,則該程序本身必須從 Google Play Games 用戶端啟動。遊戲必須將從用戶端收到的所有參數傳遞至用戶端程序。
SDK 如何處理多個執行個體或帳戶的 Google 帳戶登入作業?
Google Play 遊戲每次啟動遊戲時,系統都會視為「遊戲工作階段」,每個「遊戲工作階段」都可以與帳戶建立關聯。兩者可以不同。 因此,如果使用帳戶 A 啟動遊戲,然後切換至帳戶 B 並重新啟動,兩個帳戶可以同時執行遊戲。
WAB (Windows App Bundle) 檔案大小是否有限制?
WAB 的檔案大小上限為 10 GB。
整合 Google Play 遊戲電腦版 SDK 後,是否仍可使用現有的 API 支付系統?
所有付款事宜都必須由 Google Play 遊戲電腦版 SDK 透過 Google Play 帳款服務處理。您無法在同一款遊戲中使用現有的 API 付款方式。
是否有類似於行動裝置的開放測試或封閉測試環境?
目前我們尚未提供專用的端對端沙箱,但我們瞭解開發人員需要類似正式環境的測試環境。我們很快就會提供更完善的解決方案。
我們無法正確使用在開發人員模式下啟動的購買交易?
在開發人員模式下,購買交易必須在 3 分鐘內完成,否則系統可能會退款。
API (舊版) 和 Google Play 遊戲電腦版 SDK 有什麼不同?
- 舊版僅著重於帳單
- SDK 將支援 Google Desktop Service (GDS) 和完整電腦功能
- 方便開發人員使用的 SDK 介面
- 不必透過瀏覽器登入 Google 帳戶
是否能直接使用遊戲啟動器啟動遊戲,而不透過 Google Play 遊戲電腦版,藉此初始化 SDK?
遊戲必須透過 Google Play 遊戲電腦版用戶端啟動。詳情請參閱開發人員文件
系統不支援週期性付款或訂閱,未來是否會實作這項功能?
我們沒有計畫在應用程式內購以外新增其他購買選項,歡迎提供具體用途的意見回饋。
billingerror 是來自啟動購買流程,還是付款結果?
這是付款結果的回應。LaunchPurchaseFlow 會立即傳回,不會遭到封鎖,但您必須監聽回呼,才能知道何時完成並擷取結果。
有辦法建立捷徑,直接開啟遊戲嗎?
您可以使用下列 URI 直接開啟遊戲:
googleplaygames://launch/?pid=2&id=com.company.gamename
URI 支援偵測 Google Play 遊戲電腦版用戶端是否已開啟。如果用戶端未開啟,系統會先開啟 Google Play Games 用戶端,再執行遊戲/啟動器。您需要管理遊戲/啟動器,防止多個執行個體執行。
QueryProductDetails API 要求限制
單次呼叫 QueryProductDetails API 時,最多可查詢 50 項產品。如果超過這個上限,您必須將要求拆分成多個呼叫。
為什麼上傳第一個 Windows App Bundle (WAB) 後,遊戲沒有安裝或顯示?
如果您的遊戲沒有現有的電腦版,而是首次加入 WAB,系統可能會自動將遊戲設為「控管型發布」保留狀態。這是因為沒有現有基準可供更新。 如要完整發布 WAB 並開放安裝遊戲,您必須前往 Google Play 管理中心,手動執行必要的發布動作 (例如點選「發布變更」)。
如果 Google Play Games 啟動第三方遊戲啟動器,您會如何處理初始化作業?
您不必直接將 SDK 整合至啟動器。不過,您必須將啟動器從 Google Play Games 用戶端收到的所有命令列引數,直接傳遞至產生的子程序 (遊戲執行檔)。如果初始化失敗 (例如傳回 kActionRequiredShutdownClientProcess),則必須終止所有程序 (包括啟動器),Google Play Games 才能嘗試復原並自動重新啟動遊戲。詳情請參閱設定指南中的步驟 5。
如果使用者在購買流程中關閉瀏覽器但未付款,是否會發生逾時錯誤?
是的,這是已知問題,也是目前瀏覽器流程的預期行為。Google 正積極開發無縫購買功能 (以 WebView 為基礎),讓付款流程留在遊戲內,解決逾時問題造成的不便。
原生電腦 SDK 是否支援認證檔案 (PEM) 中的多位元組字元?
是,SDK 支援認證的多位元組字元。
呼叫 BillingClient::QueryPurchases 或 BillingClient::LaunchPurchaseFlow 時,需要哪些參數?
這個函式會接受 QueryPurchasesContinuation,這是具有 std::function<void(QueryPurchasesResult)> 簽章的函式回呼。回呼會將結果連同所有 ProductPurchaseDetails 傳遞給您。這項資訊位於 includes/billing/models.h 檔案的 SDK 標頭檔案中。
產生的 launch_purchase_flow_result 具有 ok() 和 code() 函式。ok() 函式會傳回流程是否成功。code() 函式會傳回 BillingError 列舉 (includes/billing/enums.h),其中有 10 種可能的錯誤情況,例如使用者取消或發生網路錯誤。
呼叫 BillingClient::LaunchPurchaseFlow() 時是否支援傳遞自訂訂單編號?
在目前的 SDK 設計中,無法傳遞自己的酬載。不過,你可以提供 obfuscated_account_id 和 obfuscated_profile_id 的任意組合。你可以不提供任何資訊,也可以提供其中一項或兩項資訊。
offer_token 欄位為必填,用於指定使用者在結帳程序中嘗試購買的購買方案。目前 Google Play 中的每個 SKU 都只有一項優惠 (例如以 $10 美元購買一項商品)。日後,Play 結帳團隊將支援多項優惠。
為確保在購買流程中斷時中繼資料仍與購買交易相關聯,請在啟動購買對話方塊之前,將中繼資料儲存在後端伺服器,並將其與使用者的帳戶 ID、購買時的 SKU 以及目前的時間戳記建立關聯。詳情請參閱「將購買交易與內部資料建立關聯」。
Play Install Referrer 整合功能是否正常運作?
最新版 SDK (25.5.409.0 以上版本) 支援 Play 安裝參照網址 API。詳情請參閱「Play 安裝參照 API」。
使用者是否需要分別登入各個遊戲才能購買商品?
Google Play 遊戲會為每個遊戲工作階段使用前景帳戶,因此您不需要再次登入。遊戲工作階段開始時,您在 Google Play Games 中使用的帳戶,就是發出 API 呼叫的帳戶。在瀏覽器中啟動購買流程時,您必須登入並使用與遊戲工作階段相同的帳戶。如果使用者登入的帳戶不同,網頁流程會提示他們切換帳戶。
如要從使用 OAuth 的 Google 帳單切換至使用 DLL 的原生 Google 帳單,有哪些先決條件?
遊戲可以繼續使用 Google 帳戶的 OAuth 登入功能管理已登入的帳戶,但 Google 建議您停止使用舊版 REST 結帳 API。從 REST 帳單 API (使用 OAuth2 登入) 切換至 SDK 流程時,可以將這項作業標示為功能旗標,因此在遊戲切換期間,兩者可以並存一段時間。
付款要求 API (LaunchPurchaseFlow) 是否透過網頁瀏覽器處理?
是,目前只能透過瀏覽器處理。Google 計畫透過 SDK 完成整個流程,不必離開遊戲。
初始化參數可以重複使用嗎?
只要 Google Play Games 用戶端正在執行,且登入資訊有效,即可進行這項操作。不過,在指南所述的情況中,當使用者關閉遊戲或遊戲因 SDK 初始化失敗 (例如 kActionRequiredShutdownClientProcess) 而結束時,遊戲啟動的所有程序都必須終止。
是否可以使用 HKEY_CURRENT_USER 下的登錄機碼,而非 HKEY_LOCAL_MACHINE?
您應根據根 Hive 建立登錄機碼。您可以根據用途和資料性質,將根 Hive 設為 HKEY_LOCAL_MACHINE 或 HKEY_CURRENT_USER。本指南以 HKEY_LOCAL_MACHINE Hive 為例。
遊戲可以同時支援原生 SDK 和舊版付款系統嗎?
付款系統會根據遊戲二進位檔版本,採用雙向流程模式運作。舊版建構版本的使用者會繼續沿用現有流程,新版建構版本的使用者則會改用以 SDK 為基礎的付款方式。轉換期間,兩種付款流程的使用者會並存。
如何上傳 WAB 進行內部測試?
將許可清單帳戶提供給 Google,以便 Google 啟用這些帳戶進行內部測試。Google 收到清單後,會確保這些使用者納入新手上路流程。
在哪裡新增測試人員?
Google 聯絡窗口會為每個 PC 專案建立電子郵件群組,並在其中加入測試人員的 Google 帳戶。只有這個電子郵件群組的成員,才能在 Google Play 遊戲中下載測試套件。
正式推出前,應將官方電腦套件上傳至何處?
您可以在第一個問題中提及的位置上傳 WAB 套件。 但無法手動發布。您必須向 Google 後端人員提供精確的 UTC 時間 (精確到小時)。Google 會設定發布時間表,確保內容準時發布。
正式推出後,您如何處理升級和維護事宜?
後續升級和維護作業必須透過啟動器進行。 Google Play Games 用戶端不支援更新功能,因此啟動器必須能夠更新遊戲和啟動器本身。
Google 審查電腦套裝組合時有哪些規定?
電腦套件會經過惡意軟體掃描,之後審查員只會測試遊戲安裝、成功啟動和解除安裝程序。
是否需要整合所有 API?
雖然不一定要使用其他 API,但這麼做有幾點好處。google::play::billing,才能提供應用程式內購項目和銷售數位內容。google::play::install_referrer:追蹤推薦資料,瞭解哪些流量來源帶來的下載次數最多。google::play::games::integrity:偵測可能存在風險的裝置和不明模擬器,保護應用程式免於惡意行為者侵害。
為什麼關閉 Google Play Games 用戶端時,有些遊戲程序會終止,有些則不會?
Google 不會控管執行中遊戲的子程序或程序。行為取決於遊戲是 Android 模擬遊戲還是原生電腦遊戲。模擬遊戲會安裝在自己的環境中,因此行為主要取決於模擬器的初始化和關機。
您應該使用 Google Play Games 解除安裝功能,還是自訂解除安裝程式?
Google 建議使用 Google Play Games 解除安裝功能。
是否能使用用戶端購買功能,在 Google Play 遊戲電腦版中購買商品?
Google 建議使用伺服器端購買交易和驗證程序。如要處理用戶端應用程式的購買交易,遊戲必須在許可清單中。如果遊戲需要存取權,請與 Google 合作夥伴聯絡。 詳情請參閱「不使用後端伺服器進行處理」。