XUserHandle(來自使用者驗證和擁有權主題)來完成此動作。
追蹤成就進度
在 Steam API 中,您可以使用ISteamUserStats::GetStat/ISteamUser::SetStat API 追蹤使用者在成就上的進度,使儲存在 Steam Stats API 中的值成為目前進度值的事實來源。
使用遊戲管理的成就時,您的遊戲是唯一的事實來源,必須自行追蹤使用者的目前進度。透過 API 呼叫更新雲端中的目前進度,是一種「簽入」動作,用於在 XBOX 生態系統的某些介面中顯示使用者的進度。關於目前進度值應存放在何處並沒有特定指引,但許多遊戲選擇將它儲存在存檔中(以及雲端中),而其他遊戲則可能儲存在自己的後端服務上。請務必讓雲端與遊戲內部統計資料管理系統之間的值保持同步。
列舉所有成就
若要使用 Steamworks API 取得使用者的所有統計資料,您通常會呼叫ISteamUserStats::RequestUserStats 從伺服器提取最新的統計資料。在它引發對應的回呼之後,您就可以使用 ISteamUserStats::GetStat/ISteamUserStats::GetAchievement 函式依 API 名稱逐一查看每個成就,並使用它們傳回的資料初始化遊戲狀態。
使用 XBOX Game Development Kit (GDK) 時,您只要使用 XblAchievementsGetAchievementsForTitleIdAsync 函式,然後使用 XblAchievementsResultGetAchievements 之 Out 參數所提供陣列中每個成就物件的資料來初始化遊戲狀態即可。每個成就都以 XblAchievement 結構提供。如需其所包含資料的詳細資訊,請參閱其參考主題。
Steamworks
XBOX Game Development Kit (GDK)
更新成就進度和解除鎖定成就
在 XBOX Game Development Kit (GDK) 和 Steam 中,都是由遊戲的程式碼決定何時應解除鎖定成就。使用 XBOX Game Development Kit (GDK) 時,將成就的進度設定為 100 即可解除鎖定。下列各節說明使用這兩個 API 更新使用者在指定成就上之進度所需的步驟。 以下是在兩個 SDK 中實作的UpdateAchievement 方法程式碼範例,它會接收成就識別碼/API 名稱(在 Steam 中還有統計資料 API 名稱)、成就要遞增的數量,以及解除鎖定該成就的目標值,並據此更新成就的進度和解除鎖定狀態。
Steamworks
XBOX Game Development Kit (GDK)
離線成就
解除鎖定 XBOX 成就不需要網路連線。如果使用者未連線到 XBOX 網路(也稱為 XBOX Live),成就稍後會自動與伺服器同步解除鎖定,不需要額外的程式碼。取得其他使用者的成就
若要取得其他使用者的成就,您只要使用要擷取其成就之使用者的 XBOX 使用者識別碼 (XUID) 呼叫 XblAchievementsGetAchievementsForTitleAsync/XblAchievementsGetAchievementAsync 函式即可。這類似於在 Steam 中使用ISteamUser::RequestUserStats、ISteamUserStats::GetUserStat 和 ISteamUserStats::GetUserAchievement 函式。
重設成就
Steamworks API 的ISteamUserStats::ResetAllStats 可用來重設使用者在所有統計資料上的進度,以及(如有指定)成就;但與此不同,XBOX Game Development Kit (GDK) 沒有記載以程式設計方式重設成就進度或解除鎖定狀態的功能。嘗試以進度值 0 呼叫 XblAchievementsUpdateAchievementAsync 會讓進度值保持不變。不過,您可以在測試時使用玩家資料重設工具 (XblPlayerDataReset.exe) 來達成此目的。
