XUserHandle provenant de l’API XUserAddResult (voir la rubrique Authentification et propriété des utilisateurs).
Suivi de la progression des succès
Dans l’API Steam, vous pouvez utiliser l’APIISteamUserStats::GetStat/ISteamUser::SetStat pour suivre la progression d’un utilisateur vers un succès, ce qui fait des valeurs stockées dans l’API Steam Stats la source de vérité pour la valeur de progression actuelle.
Avec les succès gérés par le titre, votre jeu est la source unique de vérité et doit suivre lui-même la progression actuelle de l’utilisateur. La mise à jour de la progression actuelle dans le cloud au moyen d’un appel d’API constitue une sorte de « point de contrôle » et sert à afficher la progression d’un utilisateur à différents endroits de l’écosystème XBOX. Il n’existe pas de recommandation précise sur l’emplacement de stockage de la valeur de progression actuelle, mais de nombreux jeux choisissent de la stocker dans leur fichier de sauvegarde (et dans le cloud), tandis que d’autres peuvent la stocker sur leur propre service back-end. Veillez à maintenir la synchronisation des valeurs entre le cloud et le système de gestion interne des statistiques de votre jeu.
Énumération de tous les succès
Pour obtenir toutes les statistiques d’un utilisateur avec l’API Steamworks, vous appelez généralementISteamUserStats::RequestUserStats pour récupérer les dernières statistiques depuis le serveur. Une fois le rappel correspondant déclenché, vous pouvez parcourir chaque succès par son nom d’API à l’aide des fonctions ISteamUserStats::GetStat/ISteamUserStats::GetAchievement et initialiser l’état du jeu à partir des données renvoyées.
Avec le XBOX Game Development Kit (GDK), vous pouvez simplement utiliser la fonction XblAchievementsGetAchievementsForTitleIdAsync, puis utiliser les données de chaque objet succès du tableau fourni comme paramètre de sortie de XblAchievementsResultGetAchievements pour initialiser l’état de votre jeu. Chaque succès est fourni sous la forme d’une struct XblAchievement. Pour plus d’informations sur les données qu’elle contient, consultez sa rubrique de référence.
Steamworks
XBOX Game Development Kit (GDK)
Mise à jour de la progression d’un succès et déverrouillage des succès
Dans le XBOX Game Development Kit (GDK) comme dans Steam, c’est le code du jeu qui détermine quand un succès doit être déverrouillé. Avec le XBOX Game Development Kit (GDK), définir la progression d’un succès sur 100 le déverrouille. Les sections suivantes décrivent les étapes nécessaires pour mettre à jour la progression d’un utilisateur sur un succès donné avec les deux API. Voici un exemple de code d’une méthodeUpdateAchievement, implémentée dans les deux SDK, qui prend en entrée un ID/nom d’API de succès (et un nom d’API de statistique dans Steam), la valeur d’incrémentation du succès et la valeur cible pour déverrouiller ce succès, puis met à jour la progression et déverrouille le succès en conséquence.
Steamworks
XBOX Game Development Kit (GDK)
Succès hors connexion
Le déverrouillage d’un succès XBOX ne nécessite pas de connexion réseau. Si l’utilisateur n’est pas connecté au réseau XBOX (également appelé XBOX Live), le succès se synchronise automatiquement avec le serveur plus tard, sans code supplémentaire.Obtention des succès d’un autre utilisateur
Pour obtenir les succès d’un autre utilisateur, vous pouvez simplement appeler les fonctions XblAchievementsGetAchievementsForTitleAsync/XblAchievementsGetAchievementAsync avec l’ID utilisateur XBOX (XUID) de l’utilisateur dont vous souhaitez récupérer les succès. Cela revient à utiliser les fonctionsISteamUser::RequestUserStats, ISteamUserStats::GetUserStat et ISteamUserStats::GetUserAchievement dans Steam.
Réinitialisation des succès
Contrairement àISteamUserStats::ResetAllStats de l’API Steamworks, qui permet de réinitialiser la progression de l’utilisateur sur toutes ses statistiques et, si cela est spécifié, sur ses succès, le XBOX Game Development Kit (GDK) n’offre aucune fonctionnalité documentée pour réinitialiser par programmation la progression ou l’état de déverrouillage des succès. Appeler XblAchievementsUpdateAchievementAsync avec une valeur de progression de 0 laisse la valeur de progression inchangée. Toutefois, vous pouvez utiliser l’outil Player Data Reset (XblPlayerDataReset.exe) pendant les tests pour y parvenir.
