XUserHandle da API XUserAddResult (do tópico Autenticação de usuários e propriedade).
Acompanhando o progresso das conquistas
Na API do Steam, você pode usar a APIISteamUserStats::GetStat/ISteamUser::SetStat para acompanhar o progresso de um usuário em direção a uma conquista, tornando os valores armazenados na API Steam Stats a fonte de verdade para o valor de progresso atual.
Com as conquistas gerenciadas pelo título, seu jogo é a única fonte de verdade e deve acompanhar o progresso atual do usuário por conta própria. A atualização do progresso atual na nuvem com uma chamada de API é feita como uma espécie de “check-in” e é usada para mostrar o progresso de um usuário em algumas superfícies do ecossistema XBOX. Não há orientação específica sobre onde o valor de progresso atual deve ficar, mas muitos jogos optam por armazená-lo no arquivo de salvamento (e na nuvem), enquanto outros podem armazená-lo no próprio serviço de back-end. Certifique-se de manter os valores entre a nuvem e o sistema interno de gerenciamento de estatísticas do seu jogo sincronizados entre si.
Enumerando todas as conquistas
Para obter todas as estatísticas de um usuário com a API do Steamworks, normalmente você chamariaISteamUserStats::RequestUserStats para extrair as estatísticas mais recentes do servidor. Depois que o retorno de chamada correspondente fosse disparado, você poderia iterar por cada conquista pelo nome da API usando as funções ISteamUserStats::GetStat/ISteamUserStats::GetAchievement e inicializar o estado do jogo usando os dados retornados.
Com o XBOX Game Development Kit (GDK), você pode simplesmente usar a função XblAchievementsGetAchievementsForTitleIdAsync e, em seguida, usar os dados de cada objeto de conquista na matriz fornecida como parâmetro de saída de XblAchievementsResultGetAchievements para inicializar o estado do jogo. Cada conquista é fornecida como uma struct XblAchievement. Para obter mais informações sobre os dados que ela contém, consulte o tópico de referência.
Steamworks
XBOX Game Development Kit (GDK)
Atualizando o progresso de uma conquista e desbloqueando conquistas
No XBOX Game Development Kit (GDK) e no Steam, o código do jogo determina quando uma conquista deve ser desbloqueada. Com o XBOX Game Development Kit (GDK), definir o progresso de uma conquista como 100 a desbloqueia. As seções a seguir descrevem as etapas necessárias para atualizar o progresso de um usuário em uma conquista especificada com as duas APIs. Veja a seguir um exemplo de código de um métodoUpdateAchievement, implementado nos dois SDKs, que recebe uma ID/nome de API da conquista (e o nome de API da estatística no Steam), o quanto incrementar a conquista e qual é o valor de destino para desbloquear essa conquista, e atualiza o progresso e o status de desbloqueio da conquista de acordo.
Steamworks
XBOX Game Development Kit (GDK)
Conquistas offline
Desbloquear uma conquista do XBOX não exige uma conexão de rede. Ela é desbloqueada automaticamente no servidor mais tarde, sem código adicional, se o usuário não estiver conectado à rede XBOX (também conhecida como XBOX Live).Obtendo as conquistas de outro usuário
Para obter as conquistas de outro usuário, você pode simplesmente chamar as funções XblAchievementsGetAchievementsForTitleAsync/XblAchievementsGetAchievementAsync com a XBOX User ID (XUID) do usuário cujas conquistas você deseja buscar. Isso é semelhante a usar as funçõesISteamUser::RequestUserStats, ISteamUserStats::GetUserStat e ISteamUserStats::GetUserAchievement no Steam.
Redefinindo conquistas
Ao contrário deISteamUserStats::ResetAllStats da API do Steamworks, que pode ser usada para redefinir o progresso do usuário em todas as estatísticas e, se especificado, nas conquistas, o XBOX Game Development Kit (GDK) não tem nenhuma capacidade documentada de redefinir programaticamente o progresso ou o status de desbloqueio das conquistas. Tentar chamar XblAchievementsUpdateAchievementAsync com um valor de progresso 0 deixa o valor de progresso inalterado. No entanto, você pode usar a ferramenta Player Data Reset (XblPlayerDataReset.exe) durante os testes para fazer isso.
