XUserHandle de la API XUserAddResult (del tema Autenticación y propiedad del usuario).
Seguimiento del progreso de los logros
En la API de Steam, puede usar la APIISteamUserStats::GetStat/ISteamUser::SetStat para realizar un seguimiento del progreso de un usuario hacia un logro, lo que hace que los valores almacenados en la API de estadísticas de Steam sean la fuente de verdad del valor de progreso actual.
Con los logros administrados por el título, su juego es la única fuente de verdad y debe realizar el seguimiento del progreso actual del usuario por su cuenta. La actualización del progreso actual en la nube con una llamada a la API se realiza como una especie de “registro” (check in) y se usa para mostrar el progreso de un usuario en algunas superficies del ecosistema de XBOX. No hay una guía específica sobre dónde debe residir el valor de progreso actual, pero muchos juegos eligen almacenarlo en su archivo de guardado (y en la nube), mientras que otros podrían almacenarlo en su propio servicio back-end. Asegúrese de mantener sincronizados entre sí los valores de la nube y los del sistema interno de administración de estadísticas de su juego.
Enumeración de todos los logros
Para obtener todas las estadísticas de un usuario con la API de Steamworks, normalmente llamaría aISteamUserStats::RequestUserStats para extraer las estadísticas más recientes del servidor. Una vez disparada la devolución de llamada correspondiente, podría iterar por cada logro mediante su nombre de API usando las funciones ISteamUserStats::GetStat/ISteamUserStats::GetAchievement e inicializando el estado del juego con los datos que devolvieran.
Con el XBOX Game Development Kit (GDK), puede usar simplemente la función XblAchievementsGetAchievementsForTitleIdAsync y, a continuación, usar los datos de cada objeto de logro de la matriz proporcionada como parámetro de salida (Out) de XblAchievementsResultGetAchievements para inicializar el estado de su juego. Cada logro se proporciona como una estructura XblAchievement. Para obtener más información sobre los datos que contiene, consulte su tema de referencia.
Steamworks
XBOX Game Development Kit (GDK)
Actualización del progreso de un logro y desbloqueo de logros
En el XBOX Game Development Kit (GDK) y en Steam, el código del juego determina cuándo debe desbloquearse un logro. Con el XBOX Game Development Kit (GDK), establecer un logro con un progreso de 100 lo desbloquea. Las secciones siguientes describen los pasos necesarios para actualizar el progreso de un usuario en un logro especificado con ambas API. A continuación se muestra un ejemplo de código de un métodoUpdateAchievement, implementado en ambos SDK, que recibe un identificador/nombre de API del logro (y el nombre de API de la estadística en Steam), cuánto incrementar el logro y cuál es el valor objetivo para desbloquear ese logro, y actualiza el progreso y desbloquea el estado del logro en consecuencia.
Steamworks
XBOX Game Development Kit (GDK)
Logros sin conexión
Desbloquear un logro de XBOX no requiere una conexión de red. Se desbloquea automáticamente con el servidor más adelante, sin código adicional, si el usuario no está conectado a la red de XBOX (también conocida como XBOX Live).Obtención de los logros de otro usuario
Para obtener los logros de otro usuario, puede llamar simplemente a las funciones XblAchievementsGetAchievementsForTitleAsync/XblAchievementsGetAchievementAsync con el identificador de usuario de XBOX (XUID) del usuario cuyos logros quiere recuperar. Esto es similar a usar las funcionesISteamUser::RequestUserStats, ISteamUserStats::GetUserStat e ISteamUserStats::GetUserAchievement en Steam.
Restablecimiento de logros
A diferencia deISteamUserStats::ResetAllStats de la API de Steamworks, que puede usarse para restablecer el progreso del usuario en todas sus estadísticas y, si se especifica, en sus logros, el XBOX Game Development Kit (GDK) no tiene ninguna capacidad documentada para restablecer mediante programación el progreso o el estado de desbloqueo de los logros. Intentar llamar a XblAchievementsUpdateAchievementAsync con un valor de progreso de 0 deja el valor de progreso sin cambios. Sin embargo, puede usar la herramienta Player Data Reset (XblPlayerDataReset.exe) durante las pruebas para lograrlo.
