面向 C++ 的 Play 游戲服務(wù)使用入門

來源: Google Developers
作者:Google Developers
時(shí)間:2020-12-10
16788
Google Play游戲服務(wù)C++SDK提供了可與Google Play游戲服務(wù)配合使用的C++API,專為已有C++游戲?qū)崿F(xiàn)的開發(fā)者而設(shè)計(jì)。

f4a222aa685f8e18c3a2233ca1b4efbc215eda37.jpg

注意:要下載最新版Google Play游戲服務(wù)C++SDK,請(qǐng)參閱SDK下載頁面。

Google Play游戲服務(wù)C++SDK提供了可與Google Play游戲服務(wù)配合使用的C++API,專為已有C++游戲?qū)崿F(xiàn)的開發(fā)者而設(shè)計(jì)。

該SDK目前實(shí)現(xiàn)了以下服務(wù):

·授權(quán)

·成就

·排行榜

·回合制多人游戲

·實(shí)時(shí)多人游戲

·活動(dòng)和任務(wù)

·游戲存檔

·附近連接(僅限Android)

·玩家統(tǒng)計(jì)信息

概念

大體上講,您需要執(zhí)行以下步驟來使用SDK:

1.為Android設(shè)置平臺(tái)配置。

2.使用GameServices::Builder配置和構(gòu)建一個(gè)GameServices對(duì)象。GameServices對(duì)象會(huì)自動(dòng)嘗試登錄,并通過OnAuthActionFinished()回調(diào)返回結(jié)果。記下回調(diào)所返回的結(jié)果。如果自動(dòng)登錄嘗試失敗,您可以顯示一個(gè)按鈕供用戶手動(dòng)登錄。

3.收到OnAuthActionFinished()結(jié)果后,您可以使用GameServices對(duì)象及其子對(duì)象管理器來進(jìn)行Play游戲服務(wù)調(diào)用,包括:

·登錄(授權(quán)失敗后):StartAuthorizationUI()

·解鎖成就:Achievements().Unlock()

·使用內(nèi)置界面顯示成就:Achievements().ShowAllUI()

·提交最高得分:Leaderboards().SubmitScore()

·退出:SignOut()

4.當(dāng)您使用完GameServices對(duì)象時(shí),請(qǐng)將其重置或銷毀。

詳細(xì)來說,您需要執(zhí)行以下步驟:

1.初始化平臺(tái)配置:這是一個(gè)包含平臺(tái)特定初始化信息的對(duì)象。在Android上,平臺(tái)配置包含Java虛擬機(jī)和指向當(dāng)前Activity的指針:

//In android_main(),create a platform configuration

//and bind the object activity.

//Alternately,attach the activity in JNI_Onload().

gpg::AndroidPlatformConfiguration platform_configuration;

platform_configuration.SetActivity(state->activity->clazz);

2.構(gòu)建一個(gè)GameServices對(duì)象:該對(duì)象是Google Play游戲服務(wù)功能的主要入口點(diǎn)。使用GameServices::Builder創(chuàng)建GameServices實(shí)例。

在大多數(shù)實(shí)現(xiàn)中,只要您的C環(huán)境持續(xù)存在,給定GameServices對(duì)象就會(huì)持續(xù)存在;在Android Activity暫停和恢復(fù)時(shí),您無需重新初始化該對(duì)象。

//Creates a GameServices object that has lambda callbacks.

game_services_=gpg::GameServices::Builder()

.SetDefaultOnLog(gpg::LogLevel::VERBOSE)

.SetOnAuthActionStarted([started_callback](gpg::AuthOperation op){

is_auth_in_progress_=true;

started_callback(op);

})

.SetOnAuthActionFinished([finished_callback](gpg::AuthOperation op,

gpg::AuthStatus status){

LOGI("Sign in finished with a result of%d",status);

is_auth_in_progress_=false;

finished_callback(op,status);

})

.Create(pc);

3.使用管理器類來管理GameServices對(duì)象。管理器可通過GameServices實(shí)例訪問,用于將相關(guān)功能集合在一起,例如成就管理器和排行榜管理器。它們本身不含用戶可見狀態(tài)。管理器由引用返回,所含的GameServices實(shí)例可控制其生命周期。您的客戶端絕不應(yīng)保留管理器引用,而應(yīng)保留GameServices實(shí)例。

管理器通過常量值類型的對(duì)象返回?cái)?shù)據(jù)。這些值可一致地反映執(zhí)行查詢所對(duì)應(yīng)時(shí)刻的基礎(chǔ)數(shù)據(jù)情況。

//Submit a high score

game_services_->Leaderboards().SubmitScore(leaderboard_id,score);

//Show the default Achievements UI

game_services_->Achievements().ShowAllUI();

4.當(dāng)您使用完GameServices對(duì)象后,通過以下方式進(jìn)行清理:在擁有該對(duì)象的unique_ptr上調(diào)用reset(),或者在超出使用期限后讓unique_ptr自動(dòng)銷毀它。

線程模型

除非另有說明,否則所有GameServices和管理器方法都擁有線程安全異步實(shí)現(xiàn)。它們可在任何線程上調(diào)用,無需外部鎖定,并且執(zhí)行順序與其調(diào)用順序一致。

訪問器方法(讀取狀態(tài)的方法)具有兩種主要變體。第一種方法(名稱類似FetchProperty())以異步方式將其結(jié)果提供給所提供的回調(diào);第二種方法(名稱類似FetchPropertyBlocking())以同步方式將其結(jié)果返回給調(diào)用線程。

//Blocking callback

gpg::AchievementManager::FetchAllResponse fetchResponse=

game_services_->Achievements().FetchAllBlocking(std::chrono::milliseconds(1000));

//Non-blocking callback

game_services_->Achievements().FetchAll(gpg::DataSource::CACHE_OR_NETWORK,

[](gpg::AchievementManager::FetchAllResponse response){

LogI("Achievement response status:%d",response.status);});

所有用戶回調(diào)均在一個(gè)專用回調(diào)線程上調(diào)用。該線程可能不同于“主線程”或“界面線程”的任何平臺(tái)概念。您還應(yīng)盡力確保用戶回調(diào)能快速執(zhí)行;回調(diào)線程停止可能會(huì)引起用戶可見問題(例如,注銷請(qǐng)求延遲完成)。

平臺(tái)特定信息

要開始在Android上使用Play游戲C++SDK,請(qǐng)繼續(xù)閱讀快速入門指南。

深入閱讀

務(wù)必閱讀Google Play游戲服務(wù)C++SDK自帶的類文檔以了解更多詳情,并查看演示SDK使用方法的示例。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Google Developers,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家