Skip to content

Logros y Clasificaciones

Clasificaciones

Crear una Clasificación

Esta sección explica cómo crear una clasificación para un juego nuevo o existente. El límite máximo es 20, y cada ID de clasificación debe ser único dentro de un juego.

Para crear una clasificación para su juego, navegue a la página de administración GameRank correspondiente a su juego, seleccione Extensión > Agregar y haga clic en el botón Crear Clasificación. alt text Luego, simplemente complete la información requerida para esta clasificación.

Formato de Puntuación

  • Las Clasificaciones Numéricas muestran las puntuaciones como números. Estas puntuaciones se pueden mostrar como números enteros o de punto flotante, por ejemplo, 3.14159, 3141.59 o 314159; tenga en cuenta que los valores no deben ser excesivamente grandes, actualmente solo se admite precisión simple.
  • Las Clasificaciones de Tiempo muestran las puntuaciones en un formato horas/minutos/segundos/centésimas de segundo o en un formato de reloj tradicional (como HH:MM:SS), por ejemplo, 66032, 1:06:3.
  • Las Puntuaciones Formateadas muestran las puntuaciones usando un formato personalizado. Envíe puntuaciones con unidades monetarias como $19.95. Por ejemplo, $19.95.

Directrices para la Imagen de Fondo

La imagen de fondo para la clasificación debe crearse como un archivo JPEG de 1024 x 1024 píxeles. Esto es opcional; si no se carga, se utilizará la imagen predeterminada de la plataforma. La misma imagen de fondo se utiliza para todos los idiomas y regiones, por lo que recomendamos evitar cualquier texto o contenido localizado dentro de la imagen.

Ajustar Clasificaciones

Para la lista de entradas en una clasificación, los desarrolladores pueden manejar jugadores anómalos:

  • Eliminar: Eliminar los datos actualmente mostrados del jugador de la clasificación.
  • Agregar a la Lista Negra: Descalificar posteriormente al jugador para participar en todas las clasificaciones del juego actual. Después de ser agregado a la lista negra, la lista de cuentas en la lista negra se puede ver en la sección 'Todas las Clasificaciones', donde también puede eliminar una cuenta de jugador de la lista negra.
  • Editar Datos: Haga clic para abrir la página Editar Clasificación.
  • Eliminar Clasificación: Haga clic para eliminar la lista de clasificación especificada.

Campos de Envío de Datos de Clasificación

Si los datos de un jugador en el juego califican para una clasificación definida, puede llamar a la interfaz de envío de datos de clasificación para enviar los datos correspondientes de la clasificación al servicio backend de Jogos. El jugador puede entonces abrir la ventana de clasificaciones en la plataforma Jogos para ver las clasificaciones del juego y su propia posición.

Nota: El nombre de la clasificación y el tipo de datos en los parámetros de la interfaz deben coincidir estrictamente con el nombre y tipo de datos definidos en el Centro de Desarrolladores.

El backend del desarrollador puede crear los siguientes tres tipos de tipos de datos de envío:

  • Puntuación Numérica: number
  • Puntuación de Tiempo: time
  • Puntuación Formateada: custom

Los datos enviados son un par clave-valor, donde el valor solo puede ser un número, una cadena o una fecha. Esto debe ser consistente con el formato de datos configurado en el Centro de Desarrolladores.

Interfaz de Envío de Datos de Clasificación

Interfaz de envío de datos de clasificación: JOGOS_SDK.game.commitRankingData

== HTML5

javascript
/**
 * Enviar datos de clasificación
 *
 * @param rankingName ID de la clasificación
 * @param data Datos de la clasificación
 */
await window.JOGOS_SDK.game.commitRankingData(rankingName: string, data: { [key: string]: any });

== Cocos

javascript
/**
 * Enviar datos de clasificación
 *
 * @param rankingName ID de la clasificación
 * @param data Datos de la clasificación
 */
await JOGOS_SDK.game.commitRankingData(rankingName: string, data: { [key: string]: any });

== Unity

Interfaz de envío de datos de clasificación: JogosSDK.Game.CommitRankingData

csharp
/// <summary>
 /// Enviar datos de clasificación
 /// </summary>
 /// <param name="rankingName"></param> ID de la clasificación
 /// <param name="rankingData"></param> Datos a enviar
 /// <param name="action"></param> Callback que indica si el envío fue exitoso
 public void CommitRankingData(string rankingName, string rankingData, Action<bool> action)

//Ejemplo:
JsonObject json = new JsonObject();
json["number"] = 1;
JogosSDK.Game.CommitRankingData("LevelRank", json.ToString(), (isSucc) =>
{
	Debug.Log("CommitRankingData isSucc:"+ isSucc);
});

:::

Interfaz para Abrir la Interfaz de Clasificación:

Interfaz para abrir la interfaz de clasificación: JOGOS_SDK.game.openRankingDialog Si desea mostrar una clasificación específica (en lugar de todas las clasificaciones), puede pasar un nombre de clasificación a este método (debe coincidir con el nombre creado en el backend del desarrollador);

== HTML5

javascript
/**
 * Abrir la ventana de clasificaciones
 *
 * @param rankingName Nombre de la clasificación
 */
await window.JOGOS_SDK.game.openRankingDialog(rankingName: string);

== Cocos

javascript
/**
 * Abrir la ventana de clasificaciones
 *
 * @param rankingName Nombre de la clasificación
 */
await JOGOS_SDK.game.openRankingDialog(rankingName: string);

== Unity

csharp
/// <summary>
 /// Abrir la interfaz de clasificaciones
 /// </summary>
 /// <param name="rankingName"></param> Nombre de la clasificación
 /// <param name="action"></param> Callback para abrir la interfaz
 public void OpenRankingDialog(string rankingName, Action<bool> action)

//Ejemplo:
 JogosSDK.Game.OpenRankingDialog("LevelRank", (isSucc) =>
 {
     Debug.Log("OpenRankingDialog isSucc:" + isSucc);
 });

:::

Integración de Logros

Si un jugador logra un determinado objetivo, puede llamar a la interfaz de envío de datos de logros del jugador para enviar los datos correspondientes al servicio backend de Jogos. El jugador puede entonces abrir la ventana de logros del jugador en la plataforma Jogos para ver los logros que ha desbloqueado.

Nota: El nombre del logro en los parámetros de la interfaz es el nombre definido en el Centro de Desarrolladores y debe coincidir exactamente.

Para logros que NO son incrementales (basados en pasos):

  • El informe es necesario solo cuando el logro se desbloquea realmente (es decir, el logro no muestra progreso; informar implica que el logro está desbloqueado).
  • Si el logro está configurado como un logro incremental (basado en pasos): El progreso progress debe corresponder al ID del paso que se está informando. Por ejemplo, informe progress = 2 al completar el paso 2.

Crear Logros

En el Backend del Desarrollador, en el servicio GameService - página Logros, seleccione Crear Logro. En la página Agregar Logro, complete el formulario.

alt text

Cada logro tiene los siguientes elementos básicos asociados:

  • ID del Logro: Admite combinaciones alfanuméricas. Se utiliza para coincidir con los informes de los jugadores en el juego y mostrar el logro en el sitio web. Este valor debe ser único para un solo juego.
  • Nombre: El nombre del logro (por ejemplo, "Pieman").
  • Condición de Desbloqueo: La descripción de cómo desbloquear el logro. Normalmente, este valor informa al jugador cómo conseguirlo.
  • Icono: El icono cuadrado asociado a su logro. Necesita cargar imágenes bloqueadas y desbloqueadas.
  • Tipo de Logro (Achievement Types), admite 3 tipos, selección única. Los logros se muestran en listas separadas en el frontend según su orden de tipo:
    • Logros de Exploración para Principiantes (Beginner's Exploration Achievements), se pueden crear hasta 900.
    • Logros de Desafío Intermedios (Intermediate Challenge Achievements), se pueden crear hasta 50.
    • Logros de Gloria Avanzados (Advanced Glory Achievements), se pueden crear hasta 10.

Estado: Un logro puede estar en uno de tres estados diferentes:

  • Logros Ocultos significa que los detalles del logro están ocultos para el jugador. Los Servicios de Juego Jogos proporcionarán una descripción genérica y un icono de marcador de posición para los logros en estado oculto. Recomendamos establecer un logro como oculto si contiene spoilers del juego que no desea revelar prematuramente (por ejemplo, "¡Descubrir que eras un fantasma todo el tiempo!").
  • Logros Revelados indican que el jugador es consciente del logro pero aún no lo ha desbloqueado. La mayoría de los logros comienzan en estado revelado.
  • Logros Desbloqueados indican que el jugador ha logrado con éxito el objetivo. Los jugadores pueden desbloquear logros sin conexión. Cuando el juego esté en línea, se sincronizará con los Servicios de Juego Jogos para actualizar el estado de desbloqueo de los logros.

Logros Incrementales (Basados en Pasos)

  • Puede designar un logro como estándar o incremental. Normalmente, un logro incremental es aquel en el que el jugador trabaja hacia la finalización durante un período de tiempo más largo. A medida que el jugador progresa en un logro incremental, puede informar el progreso completado a los Servicios de Juego Jogos.
  • Los servicios Jogos rastrean la información de progreso, notifican al juego cuando el jugador cumple las condiciones requeridas para desbloquear el logro e informan al jugador qué tan lejos está de alcanzar el objetivo.

Directrices para Iconos

Los iconos deben crearse como archivos PNG, JPEG o JPG de 512 x 512 píxeles. Solo necesita proporcionarnos el icono para el logro desbloqueado. Recomendamos incluir elementos de color en sus iconos de logros para que los usuarios puedan distinguir entre logros mostrados y desbloqueados. El mismo icono se utiliza para todos los idiomas y regiones, por lo que recomendamos evitar cualquier texto o contenido localizado dentro del icono.

Interfaz de Informe de Logros

== HTML5

javascript
/**
 * Enviar datos de logros del jugador
 *
 * @param name ID del logro
 * @param progress Progreso de finalización
 * @param hidden Marca de oculto
 */
await window.JOGOS_SDK.game.commitAchievementsData(name: string, progress: number, hidden: boolean);

== Cocos

javascript
/**
 * Enviar datos de logros del jugador
 *
 * @param name ID del logro
 * @param progress Progreso de finalización
 * @param hidden Marca de oculto
 */
await JOGOS_SDK.game.commitAchievementsData(name: string, progress: number, hidden: boolean);

== Unity Interfaz de Informe:

csharp
/// <summary>
/// Informar datos de logro
/// </summary>
/// <param name="name"></param> ID del logro
/// <param name="progress"></param> Progreso
/// <param name="hidden"></param> Si es un logro oculto
/// <param name="action"></param> Callback que indica si el informe fue exitoso
public void CommitAchievementData(string name, int progress, bool hidden, Action<bool> action)

//Ejemplo:
 JogosSDK.Game.CommitAchievementData("level", 1, false,(isSucc)=>
{
		Debug.Log("CommitAchievementData level,isSucc:"+ isSucc);
});

Si el logro está configurado como un logro incremental: Informar el logro de paso correspondiente:

csharp
JogosSDK.Game.CommitAchievementData("Event", 1, false,null);

Al informar un logro de paso, también se debe informar el progreso general del logro: Progreso progress: Por ejemplo, si el número total de pasos es 3 y se han completado 2 (en cualquier orden), informe el progreso como 2.

csharp
JogosSDK.Game.CommitAchievementData("Root", 2, false,null);

:::

Interfaz para Abrir la Interfaz de Logros:

La plataforma Jogos proporciona la funcionalidad de abrir la ventana de logros del jugador. Si es necesario, también puede llamar a una interfaz dentro del juego para abrir la ventana de logros del jugador.

== HTML5

javascript
// Abrir la ventana de logros del jugador
await window.JOGOS_SDK.game.openAchievementsDialog();

== Cocos

javascript
// Abrir la ventana de logros del jugador
await JOGOS_SDK.game.openAchievementsDialog();

== Unity Interfaz para abrir logros: JogosSDK.Game.OpenAchievementsDialog

csharp
/// <summary>
 /// Abrir la interfaz de logros
 /// </summary>
 /// <param name="action">Callback para abrir la interfaz</param>
 public void OpenAchievementsDialog(Action<bool> action)

//Ejemplo:
JogosSDK.Game.OpenAchievementsDialog((isSucc) =>
{
	Debug.Log("OpenAchievementsDialog isSucc:"+ isSucc);
});

:::