Resumen
Utiliza los logros para recompensar a los jugadores por alcanzar ciertos hitos o por interactuar con tu juego de maneras específicas.Nivel de integración
Toma 10 minutos y menos de 10 líneas de código. Requiere integración con el SDK de Steamworks.Introducción
Los logros pueden utilizarse para motivar y recompensar a los jugadores por interactuar con tu juego y alcanzar hitos dentro de él. A menudo se usan para marcar el número de enemigos eliminados, la distancia recorrida, los cofres abiertos u otras acciones comunes en tu juego, pero también pueden servir para ayudar a los jugadores a descubrir diferentes formas de jugar a él. Cuando se desbloquean, estos logros aparecen en una esquina de la ventana y quedan registrados en la página de logros del jugador.
A medida que tu juego crece, puedes organizar sus logros en
sets de logros. Los sets te permiten agrupar logros de formas que tengan sentido para tu juego, añadir logros para DLC sin que afecte al estado de completado del juego base y retirar logros de contenido eliminado sin quitárselos a los jugadores que ya los desbloquearon. Consulta
Sets de logros más abajo para conocer más detalles.
Nota: Los sets de logros se encuentran actualmente en fase beta. Continuaremos realizando mejoras durante la beta, y esta documentación se irá actualizando a medida que haya cambios.
Resumen técnico
La siguiente es una guía rápida paso a paso para integrar logros de Steam muy básicos en tu aplicación en menos de 10 minutos y con menos de 10 líneas de código integradas en tu código base. El
SDK de Steamworks incluye una excelente aplicación de ejemplo llamada
«Spacewar», la cual muestra toda la gama de características de Steam y debería ser tu primera parada para verlas en acción. Para que todo sea lo más sencillo posible, este tutorial resume la información que se encuentra en «Spacewar» y en la API de estadísticas y logros, y la reduce a lo estrictamente necesario para las estadísticas de Steam. Ten en cuenta que existe un considerable solapamiento entre las estadísticas y los logros, por lo que, si vas a integrar ambos, debes saber que muchas llamadas pueden unificarse.
Los sets de logros se configuran íntegramente en Steamworks. No requieren ningún código adicional, y tu juego desbloquea los logros de un set utilizando los mismos nombres de API y llamadas que se describen en esta guía.
Paso 1: Definir los logros del juego
Los logros son específicos de cada aplicación y se establecen en la página de
configuración de logros del backend del administrador de la aplicación en Steamworks. La siguiente es la lista de logros de «Spacewar», la aplicación de muestra de Steamworks:

Acceder al editor de logros
Los logros se crean y administran en el editor de logros:
- Desde la página de administración de tu aplicación en Steamworks, selecciona Editar ajustes de Steamworks.
- Selecciona Estadísticas y logros > Logros.
- Haz clic en el banner en la parte superior de la página para abrir el nuevo editor de logros.
Necesitas permisos para editar la información de la aplicación para poder usar el editor de logros.
El editor tiene dos pestañas:
- Gestionar logros: crea, edita y organiza tus sets y logros.
- Importación/exportación en bloque: exporta e importa tus logros como archivos CSV y carga iconos por lotes. Consulta Importación/exportación en bloque más abajo.
La parte superior del editor muestra cuántos logros y sets está utilizando tu juego respecto a tus límites, junto con enlaces para previsualizar tus logros en tu propia página de logros.
Crear y editar logros
Todos tus logros pertenecen al set de
logros del juego base a menos que los asignes a otro set. Para crear un logro, haz clic en
Crear logro dentro del set al que deba pertenecer. Para editar un logro, selecciónalo en la tabla de logros.
| Campo | Descripción |
|---|
| Nombre de la API | Un nombre único que tu juego envía a la API de Steamworks, como ACH_WIN_ONE_GAME. Obligatorio. |
| Nombre visible | El nombre del logro que se muestra a los jugadores. Se puede traducir. |
| Descripción | La descripción del logro que se muestra a los jugadores. Se puede traducir. |
| Iconos | El icono de logro desbloqueado y el icono de logro bloqueado. Consulta Iconos más abajo. |
| Establecido por | Quién puede desbloquear el logro: el cliente, un servidor de juego o un servidor de juego oficial. |
| Estadística de progreso | Una estadística opcional utilizada para mostrar el progreso hacia este logro, junto con el rango de la estadística que mide del 0 % al 100 % del progreso. |
| Visibilidad | Se puede establecer como Visible o Espóiler (para ocultar los detalles del logro hasta que se desbloquee). |
| Estado opcional | Se puede establecer como Disponible o Archivado (si el logro ya no se puede obtener). |
| En el set | El set al que pertenece este logro. |
La tabla de logros también muestra el id. de cada logro, su set, cómo se establece y su tasa de desbloqueo global. Usa la casilla de
Filtrar en la barra de herramientas para buscar logros por nombre, descripción o nombre de API.
Eliminar un logro lo suprime para todo el mundo, incluidos los jugadores que ya lo hayan desbloqueado. Si los jugadores ya han desbloqueado un logro, el editor recomendará archivarlo en su lugar. Consulta
Archivado más abajo.
Iconos
Para obtener los mejores resultados, los iconos de los logros deben ser imágenes en formato PNG de 256 × 256 píxeles. Pueden ser de un tamaño mínimo de 64 × 64, pero recomendamos utilizar el tamaño mayor. Los iconos deben ser cuadrados, y los iconos más grandes se reducirán a 256 × 256. También se aceptan imágenes en formato JPG.
Recomendamos que los iconos de los logros desbloqueados sean a color y los de los bloqueados en escala de grises. No es necesario que crees un icono de logro bloqueado por tu cuenta: haz clic en
Generar en el editor de logros o usa la opción
Generar automáticamente los iconos de los logros bloqueados al cargarlos en bloque para crear un icono de logro bloqueado en escala de grises a partir del icono de logro desbloqueado. Puedes sustituir el icono generado por el tuyo propio en cualquier momento.
Localización
Usa el selector de
Idioma en la barra de herramientas para ver y editar tus logros en cada uno de los idiomas que están disponibles en tu juego. Se mostrará un icono de advertencia en la barra de herramientas cuando a algunos idiomas les falte texto localizado, y cada logro o set al que le falte texto aparecerá marcado en el editor.
Para elegir en qué idiomas están disponibles tus logros, haz clic en el botón de editar junto a
Idioma en la barra de herramientas, o haz clic en
Configurar idiomas en la pestaña
Importación/exportación en bloque. Estos idiomas se utilizan en el editor y en los archivos CSV de localización. Cuando consultas logros a través de la API, Steam devuelve el texto para el idioma solicitado.
Límites
| Elemento | Límite |
|---|
| Logros por aplicación | 5000 (100 para aplicaciones que aún no se han verificado). |
| Sets por aplicación | 40, incluyendo el set del juego base. |
Los logros archivados también cuentan para el límite de logros.
Paso 2: Encapsular los logros
El código que sigue es independiente del juego y puedes añadirlo al tuyo como mejor te parezca. La clase es perfectamente funcional tal cual, pero se puede ampliar fácilmente para dar respuesta a cualquier necesidad adicional. Todo este código se ha tomado directamente de los archivos de ejemplo de «Spacewar»
StatsAndAchievements.cpp/h.
Archivo de encabezado
En primer lugar, definimos una estructura para contener los datos de logros recibidos de Steam y proporcionamos una macro para crear objetos de ese tipo. Estos datos se corresponden directamente con lo que aparece en la página de
configuración de logros.
#define _ACH_ID( id, name ) { id, #id, name, "", 0, 0 }
struct Achievement_t
{
int m_eAchievementID;
const char *m_pchAchievementID;
char m_rgchName[128];
char m_rgchDescription[256];
bool m_bAchieved;
int m_iIconImage;
};
A continuación, definimos una clase auxiliar que encapsulará todas las llamadas a la API de estadísticas de Steam, además de crear todas las
funciones callback de Steam.
class CSteamAchievements
{
private:
int64 m_iAppID; // Nuestro id. de aplicación actual.
Achievement_t *m_pAchievements; // Datos de logros.
int m_iNumAchievements; // El número de logros.
bool m_bInitialized; // ¿Estamos listos para utilizar la API?
public:
CSteamAchievements(Achievement_t *Achievements, int NumAchievements);
~CSteamAchievements();
bool Initialize();
bool SetAchievement(const char* ID);
STEAM_CALLBACK( CSteamAchievements, OnUserStatsStored, UserStatsStored_t,
m_CallbackUserStatsStored );
STEAM_CALLBACK( CSteamAchievements, OnAchievementStored,
UserAchievementStored_t, m_CallbackAchievementStored );
};
Archivo de código
Constructor
Parámetros: el constructor toma un puntero a una matriz de logros junto con la longitud de esta. El formato de esa matriz se abordará más adelante en el código principal del juego.
Devuelve: N/A.
Efecto: el constructor inicializa varios miembros y obtiene el id. de aplicación con el que estamos operando actualmente. Además, enlaza los métodos de función callback para gestionar llamadas asíncronas realizadas a Steam. Finalmente, hace una llamada inicial a
Initialize() para comprobar que la API esté lista.
CSteamAchievements::CSteamAchievements(Achievement_t *Achievements, int NumAchievements):
m_iAppID( 0 ),
m_bInitialized( false ),
m_CallbackUserStatsStored( this, &CSteamAchievements::OnUserStatsStored ),
m_CallbackAchievementStored( this, &CSteamAchievements::OnAchievementStored )
{
m_iAppID = SteamUtils()->GetAppID();
m_pAchievements = Achievements;
m_iNumAchievements = NumAchievements;
m_bInitialized = Initialize();
}
Initialize()
Parámetros: ninguno.
Devuelve: un valor booleano que representa si la llamada tuvo éxito o no. Si la llamada falló, lo más probable es que Steam no esté inicializado. Asegúrate de tener un cliente de Steam abierto cuando intentes hacer esta llamada y de que previamente se haya llamado a
SteamAPI_Init.
Efecto: se asegura de que Steam esté cargado y de que haya iniciada una sesión con un contexto de usuario.
bool CSteamAchievements::Initialize()
{
// ¿Está cargado Steam? Si no, no podemos obtener estadísticas.
if ( NULL == SteamUserStats() || NULL == SteamUser() )
{
return false;
}
// ¿Ha iniciado sesión el usuario? Si no, no podemos acceder a las estadísticas.
if ( !SteamUser()->BLoggedOn() )
{
return false;
}
return true;
}
SetAchievement()
Parámetros: el identificador de cadena del logro que quieres establecer (por ejemplo, «ACH_WIN_ONE_GAME»).
Devuelve: un valor booleano que representa si la llamada tuvo éxito o no. Si la llamada falló, Steam no está inicializado.
Efecto: este método establece un logro dado como desbloqueado y envía los resultados a Steam. Puedes establecer un determinado logro varias veces, por lo que no necesitas preocuparte por configurar solo los logros que aún no se hayan establecido. Se trata de una llamada asíncrona que activará dos funciones callback:
OnUserStatsStored() y
OnAchievementStored().
bool CSteamAchievements::SetAchievement(const char* ID)
{
// ¿Hemos recibido ya una función callback de Steam?
if (m_bInitialized)
{
SteamUserStats()->SetAchievement(ID);
return SteamUserStats()->StoreStats();
}
// Si no es así, aún no podemos establecer logros.
return false;
}
OnUserStatsStored()
Parámetros: N/A.
Devuelve: nada.
Efecto: este método es una función callback que se llama cada vez que intentas almacenar estadísticas en Steam.
void CSteamAchievements::OnUserStatsStored( UserStatsStored_t *pCallback )
{
// Puede que recibamos funciones callback de estadísticas de otros juegos; ignóralas.
if ( m_iAppID == pCallback->m_nGameID )
{
if ( k_EResultOK == pCallback->m_eResult )
{
OutputDebugString( "Estadísticas de Steam almacenadas\n" );
}
else
{
char buffer[128];
_snprintf( buffer, 128, "StatsStored falló, %d\n", pCallback->m_eResult );
OutputDebugString( buffer );
}
}
}
OnAchievementStored()
Parámetros: N/A.
Devuelve: nada.
Efecto: este método es una función callback que se llama cada vez que se almacenan logros correctamente en Steam.
void CSteamAchievements::OnAchievementStored( UserAchievementStored_t *pCallback )
{
// Puede que recibamos funciones callback de estadísticas de otros juegos; ignóralas.
if ( m_iAppID == pCallback->m_nGameID )
{
OutputDebugString( "Logro de Steam almacenado\n" );
}
}
Paso 3: Integrar en el juego
La siguiente es una lista completa de los fragmentos de código que necesitarías integrar en tu juego en las ubicaciones adecuadas.
Definiciones y globales
Lo que sigue es la lista de inclusiones necesarias para trabajar con logros, una enumeración de los logros específicos de nuestro juego y un puntero global a nuestro objeto auxiliar. Ten en cuenta que los logros deben coincidir con los de la página del administrador en Steamworks.
...
#include "steam_api.h"
// Definición de nuestros logros.
enum EAchievements
{
ACH_WIN_ONE_GAME = 0,
ACH_WIN_100_GAMES = 1,
ACH_TRAVEL_FAR_ACCUM = 2,
ACH_TRAVEL_FAR_SINGLE = 3,
};
// Matriz de logros que almacenará datos sobre los logros y su estado.
Achievement_t g_Achievements[] =
{
_ACH_ID( ACH_WIN_ONE_GAME, "Ganador" ),
_ACH_ID( ACH_WIN_100_GAMES, "Campeón" ),
_ACH_ID( ACH_TRAVEL_FAR_ACCUM, "Interestelar" ),
_ACH_ID( ACH_TRAVEL_FAR_SINGLE, "Orbitador" ),
};
// Acceso global al objeto Achievements.
CSteamAchievements* g_SteamAchievements = NULL;
...
Inicialización
La llamada a
SteamAPI_Init inicializa todo Steam y debe realizarse antes que nada. Si la llamada se completa, creamos el objeto auxiliar pasando la matriz de logros junto con el tamaño de esta.
...
// Inicializa Steam.
bool bRet = SteamAPI_Init();
// Crea el objeto SteamAchievements si Steam se inicializó correctamente.
if (bRet)
{
g_SteamAchievements = new CSteamAchievements(g_Achievements, 4);
}
...
Procesar funciones callback
Para asegurarnos de procesar todas las funciones callback de Steam, debemos comprobar regularmente si hay nuevos mensajes. Esto se consigue añadiendo esta llamada al bucle del juego.
...
SteamAPI_RunCallbacks();
...
Activar logros
Activar un logro es tan simple como hacer una sola llamada pasando el identificador del logro.
...
if (g_SteamAchievements)
g_SteamAchievements->SetAchievement("ACH_WIN_100_GAMES");
...
Nota: Steam no desbloqueará un logro perteneciente a un set de DLC para un jugador que no pueda jugar a dicho DLC, ni un logro perteneciente a un set archivado. Asegúrate de que tu juego solo otorgue logros de DLC a jugadores que posean el DLC correspondiente, y de que deje de conceder logros una vez que los archives. Consulta
Sets de logros más abajo.
Cierre
La llamada a
SteamAPI_Shutdown es algo que probablemente ya tienes en tu código. Esta cierra Steam y debe llamarse antes de que la aplicación se cierre. Por último, borramos el objeto auxiliar que creamos.
...
// Cierra Steam.
SteamAPI_Shutdown();
// Borra el objeto SteamAchievements.
if (g_SteamAchievements)
delete g_SteamAchievements;
...
Paso 4: Realizar pruebas y solucionar problemas
Para establecer o borrar estadísticas o un logro sin añadir código al juego, puedes usar la consola del cliente de Steam. Ejecuta steam.exe -console y luego escribe:
- achievement_clear <id. de aplicación> <nombre del logro>
- reset_all_stats <id. de aplicación>
Vista previa y publicación
Los cambios que realizas en el editor de logros se guardan en el borrador de la configuración de tu aplicación. Para que sean visibles para todo el mundo, publica tus cambios desde la pestaña
Publicar en
Editar ajustes de Steamworks, al igual que con cualquier otra configuración de Steamworks.
Antes de publicarlos, puedes previsualizar tus logros en tu propia página de logros de Steam, accesible a través del enlace que se encuentra en la parte superior del editor. Utiliza sets exclusivos para desarrolladores para probar nuevos logros sin mostrárselos a los jugadores.
Para habilitar por completo los logros y completar tu lista de verificación para el lanzamiento, también debes marcar la opción
Logros de Steam en
Características admitidas dentro de la información básica de tu página de la tienda. Para completar la lista de verificación para el lanzamiento, cada logro debe tener un nombre en cada uno de los idiomas configurados y debe contar con un icono.
Sets de logros
Los sets de logros te permiten organizar los logros de tu juego en grupos con nombre, registrar el estado de completado por set y añadir o retirar logros con el tiempo sin perjudicar el porcentaje de desbloqueo de los jugadores. Con los sets de logros, puedes:
- Agrupar logros de maneras que tengan sentido para tu juego, como por modo, personaje, capítulo o evento.
- Añadir logros para DLC que solo cuenten para el estado de completado de aquellos jugadores que tengan dicho DLC.
- Archivar logros y sets correspondientes a contenido retirado, sin eliminárselos a los jugadores que ya los desbloquearon.
- Crear y probar logros en sets exclusivos para desarrolladores que permanecen ocultos para los jugadores.
- Administrar definiciones de logros, asignaciones de sets, iconos y localización en bloque mediante archivos CSV e imágenes.
Set del juego base
Cada juego tiene un set de
logros del juego base. Los logros que no se asignen a otro set pertenecerán al set del juego base, por lo que si no creas sets adicionales, todos tus logros estarán en el set del juego base. Para la mayoría de los juegos, este set contendrá la mayor parte de tus logros.
El set del juego base no se puede renombrar, eliminar ni reordenar. Siempre se muestra en primer lugar, a menos que esté vacío, en cuyo caso no se mostrará (pero seguirá contando para el límite).
Sets personalizados
Puedes crear sets adicionales para organizar tus logros. Cada set tiene un nombre, que se muestra a los jugadores, y una restricción opcional:
| Restricción | Quién puede obtener logros en el set |
|---|
| Todos los jugadores del juego | Cualquiera que juegue al juego. |
| Quienes tengan (DLC) | Solo los jugadores que puedan jugar al DLC seleccionado. |
Los jugadores ven el progreso de cada set, y el porcentaje de desbloqueo de un set se registra de manera independiente al del resto del juego.
Sets de DLC
Un set restringido a los propietarios de un DLC es un
set de DLC. Los sets de DLC:
- Todos los jugadores pueden explorarlos en la página de logros del juego, pero solo los jugadores que jueguen al DLC pueden desbloquearlos.
- No cuentan para el estado de completado del juego base ni de ningún otro set.
- Permanecerán ocultos para los jugadores hasta que el DLC se publique. Esto te permite configurar y probar logros para próximos DLC antes del lanzamiento.
- Utilizan el material gráfico y el enlace de la tienda del DLC en la página de logros. Si el DLC no tiene una página de la tienda publicada, se utilizarán en su lugar el material gráfico y el enlace del juego base (y el editor te advertirá de ello).
- Se muestran en un panel de logros dentro de la página de la tienda del DLC.
El nombre del set se mostrará con un prefijo «DLC», por lo que no es necesario que incluyas «DLC» por tu cuenta en el nombre.
Sets exclusivos para desarrolladores
Un set que esté marcado como
Solo para desarrolladores solo lo pueden ver los desarrolladores de la aplicación, esté o no publicada dicha aplicación. Solo los desarrolladores pueden desbloquear logros en un set exclusivo para desarrolladores. Los sets exclusivos para desarrolladores son útiles para crear y probar nuevos logros antes de que estén listos para publicarse.
Archivado
A veces se reemplaza un modo de juego, finaliza un evento de temporada o un logro ya no se puede desbloquear. En lugar de eliminar logros que los jugadores ya hayan desbloqueado, puedes archivarlos.
- Los logros archivados siguen siendo visibles para los jugadores que los desbloquearon y todavía pueden destacarlos en sus perfiles. Los jugadores que no hayan desbloqueado un logro archivado no lo verán, y tampoco se descontará de su estado de completado del set al que pertenece.
- Los sets archivados solo los verán los jugadores que hayan desbloqueado previamente un logro en ellos. No se puede desbloquear ningún logro en un set archivado. Los jugadores que hayan desbloqueado logros en un set archivado aún podrán ver todos los logros de dicho set.
Archivar no altera tu juego. Cuando archives un logro, asegúrate de que tu juego ya no lo otorgue.
Logros con espóiler
Los logros marcados anteriormente como
ocultos ahora se denominan logros con
espóiler. Para evitar revelar detalles de tu juego, el nombre y la descripción de un logro con espóiler no se muestran a los jugadores hasta que lo desbloquean o eligen revelarlos. Los logros con espóiler y los archivados no se muestran en el panel de logros de tu página de la tienda.
Estado de completado
El estado de completado se registra por set:
- Un jugador completa un set al desbloquear todos los logros que estén disponibles en él. Los logros archivados que el jugador no haya desbloqueado no son necesarios.
- Una vez que un jugador completa un set, este permanece completado, incluso si más adelante añades nuevos logros a dicho set.
- Los sets de DLC solo cuentan para el estado de completado de un jugador si este tiene el DLC.
Los jugadores pueden presumir de cuántos juegos y sets han completado en su perfil de Steam. Un juego cumple los requisitos para aparecer en el expositor de completista del perfil de un jugador cuando este completa cualquiera de los sets del juego.
Crear un set
- En la pestaña Gestionar logros, haz clic en Crear nuevo set.
- Introduce un nombre para el set. Dicho nombre se muestra a los jugadores.
- En Restricciones, elige Todos los jugadores del juego o selecciona un DLC para restringir el set a quienes tengan dicho DLC. La lista de DLC incluye los DLC listados para tu juego junto con sus ids. de aplicación.
- Opcionalmente, marca el set como Solo para desarrolladores.
- Guarda el set.
Un set sin logros no se mostrará a nadie.
Editar un set
Abre el menú del set y selecciona
Editar set para cambiar su nombre, sus restricciones, su estado de solo para desarrolladores o para marcarlo como
Archivado.
Cada set muestra su
visibilidad en el editor:
| Visibilidad | Significado |
|---|
| Visible | Los jugadores pueden ver este set. |
| Oculto por restricciones | Los jugadores aún no pueden ver este set (por ejemplo, porque es solo para desarrolladores o porque su DLC aún no se ha lanzado). |
| Visible cuando se publique | Los jugadores podrán ver este set una vez que publiques tus cambios. |
Reordenar sets
Haz clic en
Reordenar sets en la barra de herramientas y luego arrastra y suelta tus sets para elegir el orden en que los verán los jugadores. El set del juego base no se puede mover.
Eliminar un set
Abre el menú del set y selecciona
Eliminar set. Debes mover o eliminar todos los logros que contenga un set antes de poder eliminarlo. Si quieres retirar un set sin quitarles los logros a los jugadores que ya los desbloquearon, archívalo en su lugar.
Mover logros entre sets
Para mover un solo logro, modifica su campo
En el set. Para mover varios logros a la vez, usa la opción
Movimiento en bloque:
- Haz clic en Movimiento en bloque en el encabezado de la tabla de logros.
- Marca los logros que quieres mover. El número de logros seleccionados se muestra en la parte inferior de la página.
- Elige un set de destino o selecciona Crear nuevo set... para crear uno.
- Haz clic en Mover.
Por ejemplo, puedes activar el modo de movimiento en bloque, usar la casilla de búsqueda para filtrar los logros por nombre de API y luego hacer clic en la casilla de verificación en los encabezados de columna para seleccionar y mover todo un grupo visible de logros. Este flujo de trabajo es relativamente sencillo y puede ahorrar bastante tiempo.
El editor te advertirá antes de realizar un movimiento que pueda afectar a los jugadores:
- Mover logros de un set visible a un set oculto o que aún no se ha publicado provocará que dejen de verlos aquellos jugadores que ya los hayan desbloqueado.
- Mover logros a un set en el que los jugadores ya tengan progresos podría afectar a su estado de completado.
Nota: Añadir un logro a un set que ya se haya publicado no afectará al estado de completado de los jugadores, pero es posible que no se muestre de forma natural. Valora la posibilidad de añadir un nuevo set en su lugar.
Importación/exportación en bloque
La pestaña
Importación/exportación en bloque te permite gestionar tus logros como archivos: exporta archivos CSV, edítalos en una herramienta de hojas de cálculo y vuelve a cargarlos junto con tus iconos.
Flujo de trabajo
- Haz clic en Exportar definiciones (.csv), Exportar localización (.csv) o Exportar localización de sets (.csv) para descargar tus datos actuales.
- Edita los archivos. Las filas de encabezado incluyen notas entre paréntesis que describen cada columna; por ejemplo:
spoiler (true o false). Estas notas se ignoran al cargar el archivo.
- Arrastra tus archivos
CSV y PNG al recuadro para cargar o haz clic en Seleccionar archivos.... Puedes cargar varios archivos a la vez.
- Revisa la lista de Archivos cargados por si hubiera algún error. Eliminar un archivo anula todos los cambios que aportó. Para reemplazar un archivo, corrígelo y vuelve a cargarlo.
- Revisa los Cambios pendientes. No se guardará nada hasta que hagas clic en Guardar datos importados.
Si tu juego aún no tiene logros, las exportaciones de definiciones y localización consistirán en plantillas que contienen un par de filas de ejemplo que empiezan por
EXAMPLE_. Puedes sobrescribirlas, eliminarlas o cargar la plantilla tal cual para comprobar cómo funciona el proceso de importación.
CSV de definiciones de logros
Se exporta con el nombre
<appid>-achievements-definitions.csv. Cada fila define un logro.
| Columna | Descripción |
|---|
api_name | Obligatorio y único. El nombre que tu juego pasa a la API. |
setid | Opcional. El id. de un set existente. Déjalo en blanco para asignarlo al set del juego base. |
permission | Uno de los siguientes valores: Client, GameServer u OfficialGameServer. |
spoiler | true o false. |
archived | true o false. |
progress_stat_name | Opcional. El nombre de una estadística existente para usarla en una barra de progreso. Déjalo en blanco si no quieres mostrar barra de progreso. |
progress_stat_min | Un número, no inferior al mínimo de la propia estadística. Debe ser un entero si la estadística es de tipo número entero. |
progress_stat_max | Un número, superior a progress_stat_min y no mayor que el propio máximo de la estadística. Debe ser un entero si la estadística es de tipo número entero. |
Cuando cargas un CSV de definiciones, los logros se comparan con tus logros existentes por el nombre de la API:
- Por añadir: las filas que no coincidan con ningún nombre de API existente se añaden como logros nuevos. Si querías renombrar el nombre de API de un logro existente, cámbialo primero en el editor; de lo contrario, se borrarán los datos anteriores.
- Por modificar: se actualizan los logros existentes cuyos valores hayan cambiado.
- Sin modificar: los logros existentes cuyos valores no hayan cambiado se dejan tal cual.
- Faltantes en el archivo CSV: los logros existentes que no figuren en el archivo se conservan, a menos que marques la casilla Borrar estos logros. Piénsatelo bien antes de eliminar logros, ya que no puedes simplemente volver a añadirlos después de haberlos borrado.
Nota: Los nombres y las descripciones de los logros no forman parte del CSV de definiciones. Utiliza el CSV de localización para configurarlos.
Nota: La estadística de progreso ya debe existir y contar con el mismo permiso que el logro. Para crear estadísticas nuevas, edita tus estadísticas antes.
CSV de localización de logros
Se exporta con el nombre
<appid>-achievements-localization.csv. Cada logro tiene dos filas: una para su nombre y otra para su descripción.
| Columna | Descripción |
|---|
api_name | Obligatorio. Debe coincidir con un api_name del CSV de definiciones o con el de un logro existente. En este campo, los nombres de API distinguen entre mayúsculas y minúsculas. |
field | name o description. |
| (una columna por idioma) | El texto para ese idioma, por ejemplo, english, french o german. |
Las columnas de idioma se corresponden con los idiomas configurados para tus logros. Si estás empezando a traducir, configura primero los idiomas para que el archivo CSV exportado incluya esas columnas.
Si cargas a la vez un CSV de definiciones y un CSV de localización, los textos de aquellos logros que no aparezcan en el CSV de definiciones no se actualizarán.
CSV de localización de sets
Se exporta con el nombre
<appid>-achievement-sets-localization.csv. Cada fila contiene el nombre de un set.
| Columna | Descripción |
|---|
setid | Obligatorio. El id. de un set existente. |
| (una columna por idioma) | El nombre del set en ese idioma (english es obligatorio). |
Los sets deben crearse previamente en el editor para que puedas traducirlos aquí. El set del juego base no se puede renombrar.
Archivos de iconos
Nombra los archivos de imagen de los iconos con el nombre de API del logro seguido de
_ACHIEVED o
_UNACHIEVED (por ejemplo,
LEVEL_20_ACHIEVED.png y
LEVEL_20_UNACHIEVED.png). Los iconos se asignan automáticamente al logro correspondiente.
Marca
Generar automáticamente los iconos de los logros bloqueados para crear una versión en escala de grises de cualquier icono de desbloqueado que cargues.
Si cargas un CSV de definiciones junto con tus iconos, estos solo se asignarán a los logros que estén incluidos en dicho CSV. Si quieres cargar únicamente iconos, hazlo sin adjuntar ningún archivo CSV de definiciones.
Qué ven los jugadores
Página de logros
Los jugadores ven tus logros en la página de logros de Steam, tanto en el cliente de Steam como en el sitio web de la comunidad de Steam. La página de logros:
- Muestra el progreso y el estado de completado de cada set, incluidos los sets de DLC.
- Permite a los jugadores comparar sus logros con un máximo de 3 amigos.
- Muestra la tasa de desbloqueo global de cada logro y destaca los logros raros.
- Permite a los jugadores buscar logros y filtrarlos por estado de desbloqueo o por set.
Puedes compartir un enlace directo a logros de tu juego con los demás jugadores:
| URL | Muestra |
|---|
https://steamcommunity.com/achievements/<id_de_aplicación> | Los logros de tu juego, sin mostrar el progreso de un jugador en particular. Está disponible tanto si el jugador tiene el juego como si no. |
|
Páginas de la tienda
El panel de logros de tu página de la tienda muestra los logros de tu juego, salvo los archivados y los logros con espóiler. La página de la tienda de un DLC muestra los logros pertenecientes al set de ese DLC.
Perfiles
Los jugadores pueden lucir la cantidad de juegos y sets que han completado en el expositor de logros de su perfil, y pueden destacar juegos en el expositor de completista una vez que hayan completado cualquiera de los sets del juego.
Prácticas recomendadas
- Añade nuevos sets para el contenido nuevo. Añadir logros a un set que los jugadores ya habían completado puede resultar confuso, ya que el set seguirá figurando como completado pero tendrá logros bloqueados. Crear un set nuevo para el contenido adicional (como un DLC, una actualización o un nuevo modo) mantiene el progreso claro para los jugadores.
- Archiva en vez de eliminar. Si los jugadores ya han desbloqueado un logro, archívalo en lugar de borrarlo para que conserven ese estado.
- Usa sets de DLC para los logros de DLC. Esto mantiene el progreso del juego base por separado, de modo que los jugadores que no tengan el DLC no vean bloqueada su posibilidad de completar el juego.
- Procura que los nombres de los sets sean cortos y descriptivos. Los nombres se muestran a los usuarios en muchos sitios, incluido el cliente de Steam.
- Traduce los nombres de los sets a cada idioma que esté disponible en tu juego mediante el CSV de localización de sets o a través del editor.
- Haz pruebas con sets solo para desarrolladores antes de publicar nuevos logros de cara al público.
Preguntas frecuentes
¿Tengo que actualizar mi juego o el SDK de Steamworks para usar sets de logros?
R. No. Los sets se configuran en Steamworks, y tu juego desbloquea los logros utilizando los mismos nombres de API y llamadas que antes.
¿Qué pasa con mis logros actuales?
Todos están en el set del juego base. Si no creas ningún otro set, los jugadores verán tus logros en una única lista en la nueva página de logros.
¿Perderán los jugadores su estado de completado si añado logros nuevos?
Los jugadores que ya hayan completado un set conservarán ese estado. Sin embargo, añadir logros a un set que ya está publicado hará que los jugadores que aún no lo habían terminado tengan más tareas pendientes, por lo que recomendamos añadir sets nuevos para el contenido adicional.
¿Cuál es la diferencia entre archivar y eliminar un logro?
Los logros archivados siguen siendo visibles para quienes ya los desbloquearon y dejan de restar porcentaje a quienes no lo hicieron. Los logros eliminados se borran para todo el mundo.
¿Puedo mover un logro a otro set después de haberlo publicado?
Sí, pero el editor te advertirá si moverlo pudiera ocultarle el logro a quienes ya lo desbloquearon o afectar al estado de completado de los jugadores.
¿Cuántos sets puedo crear?
Hasta 40, incluido el set del juego base.