In breve
Usa gli achievement come ricompensa per i giocatori che raggiungono certi traguardi o che interagiscono con il tuo gioco in modi particolari.Livello d'integrazione
10 minuti e meno di 10 linee di codice. È necessaria l'integrazione con l'SDK di Steamworks.Introduzione
Gli achievement possono essere usati per incoraggiare i giocatori a interagire con il tuo gioco e raggiungere determinati traguardi. Spesso vengono usati per segnalare il numero di uccisioni, i chilometri percorsi, i forzieri aperti o altre azioni tipiche nel tuo gioco, ma possono anche aiutare i giocatori a scoprire nuovi modi di giocare al tuo titolo. Quando sbloccati, gli achievement compariranno in un angolo della finestra di gioco e verranno registrati nella pagina degli achievement del giocatore.
Man mano che il tuo gioco cresce, puoi organizzare i suoi achievement in
set di achievement. I set ti permettono di raggruppare gli achievement in modo sensato per il tuo gioco, di aggiungere achievement per i DLC senza effetti sul completamento del gioco di base e di ritirare gli achievement relativi a contenuti che sono stati rimossi senza toglierli ai giocatori che li hanno ottenuti. Per i dettagli, vedi
Set di achievement di seguito.
Nota: i set di achievement sono attualmente in versione beta. Continueremo ad apportare miglioramenti durante la beta e questa documentazione verrà aggiornata man mano che apporteremo modifiche.
Panoramica tecnica
Quella che segue è una guida rapida per aiutarti a integrare gli achievement di Steam più basilari nella tua applicazione in meno di 10 minuti e con meno di 10 righe nel tuo codice di base. L'
SDK di Steamworks include un'ottima applicazione esemplificativa denominata
Spacewar che mostra l'intera gamma delle funzionalità di Steam e consente di vederle in azione. In questo tutorial, le informazioni disponibili in Spacewar e nell'API delle statistiche e degli achievement vengono sintetizzate e ridotte al necessario per rendere il procedimento il più semplice possibile. Ti facciamo notare che statistiche e achievement presentano forti sovrapposizioni: se desideri integrare entrambi, molte delle chiamate all'API potranno essere accorpate.
I set di achievement vengono configurati interamente in Steamworks. Non richiedono codice aggiuntivo e il tuo gioco sblocca gli achievement di un set utilizzando gli stessi nomi API e le stesse chiamate descritti in questa guida.
Passaggio 1: definizione degli achievement del gioco
Gli achievement sono diversi per ogni applicazione e possono essere configurati nella pagina di
configurazione degli achievement, disponibile nel back-end dell'amministrazione dell'applicazione su Steamworks. Di seguito è illustrato l'elenco degli achievement di Spacewar, l'applicazione esemplificativa di Steamworks:

Accedere all'editor degli achievement
Gli achievement vengono creati e gestiti nell'editor degli achievement:
- Dalla pagina principale della tua applicazione in Steamworks, seleziona Modifica le impostazioni di Steamworks.
- Seleziona Statistiche e achievement > Achievement.
- Clicca sul banner nella parte superiore della pagina per aprire il nuovo editor degli achievement.
È necessaria l'autorizzazione per modificare le informazioni dell'applicazione per poter usare l'editor degli achievement.
L'editor ha due schede:
- Gestisci achievement - Crea, modifica e organizza i tuoi set e i tuoi achievement.
- Importa/esporta in blocco - Esporta e importa i tuoi achievement come file CSV e carica le icone in blocco. Vedi Importa/esporta in blocco di seguito.
La parte superiore dell'editor mostra quanti achievement e set il tuo gioco sta utilizzando rispetto ai tuoi limiti, oltre a link per visualizzare l'anteprima dei tuoi achievement sulla tua pagina degli achievement.
Creare e modificare gli achievement
Tutti i tuoi achievement appartengono al set
Achievement del gioco di base, a meno che tu non li assegni a un altro set. Per creare un achievement, clicca su
Crea achievement nel set a cui deve appartenere. Per modificare un achievement, selezionalo nella tabella degli achievement.
| Campo | Descrizione |
|---|
| Nome API | Un nome univoco che il tuo gioco passa all'API di Steamworks, ad esempio ACH_WIN_ONE_GAME. Richiesto. |
| Nome visualizzato | Il nome dell'achievement mostrato ai giocatori. Localizzabile. |
| Descrizione | La descrizione dell'achievement mostrata ai giocatori. Localizzabile. |
| Icone | L'icona Ottenuto e l'icona Non ottenuto. Vedi Icone di seguito. |
| Impostato da | Chi può sbloccare l'achievement: il client, un server di gioco o un server di gioco ufficiale. |
| Statistica di avanzamento | Facoltativamente, una statistica usata per mostrare i progressi verso questo achievement, insieme all'Intervallo della statistica che corrisponde allo 0% e al 100% di avanzamento. |
| Visibilità | Visibile oppure Spoiler per nascondere i dettagli dell'achievement finché non viene sbloccato. |
| Stato facoltativo | Disponibile oppure Archiviato se l'achievement non può più essere ottenuto. |
| Set | Il set a cui appartiene questo achievement. |
La tabella degli achievement mostra inoltre l'ID di ogni achievement, il suo set, come viene impostato e il suo tasso di sblocco globale. Usa la casella
Filtro nella barra degli strumenti per trovare gli achievement per nome, descrizione o nome API.
L'eliminazione di un achievement lo rimuove per tutti, compresi i giocatori che lo hanno già sbloccato. Se un achievement è già stato ottenuto dai giocatori, l'editor consiglierà di archiviarlo. Vedi
Archiviazione più sotto.
Icone
Per ottenere i risultati migliori, le icone degli achievement devono essere immagini PNG di dimensione 256x256 pixel. Possono essere anche di 64x64 pixel, ma consigliamo di utilizzare dimensioni maggiori. Le icone devono essere quadrate; le icone più grandi vengono ridimensionate a 256x256. Sono accettate anche immagini JPG.
Consigliamo di rendere le icone ottenute a colori e le icone non ottenute in scala di grigi. Non è necessario creare personalmente un'icona per gli achievement non ottenuti: clicca su
Genera nell'editor degli achievement, oppure utilizza l'opzione
Genera automaticamente icone "Non sbloccato" durante il caricamento in blocco per creare un'icona in scala di grigi per l'achievement non ottenuto a partire dall'icona dell'achievement ottenuto. Puoi sostituire l'icona generata con una personalizzata in qualsiasi momento.
Localizzazione
Usa il selettore
Lingua nella barra degli strumenti per visualizzare e modificare i tuoi achievement in ciascuna delle lingue del tuo gioco. Nella barra degli strumenti viene visualizzata un'icona di avviso quando alcune lingue non hanno il testo localizzato, e ogni achievement o set a cui manca il testo viene contrassegnato nell'editor.
Per scegliere quali lingue sono supportate dai tuoi achievement, clicca sul pulsante di modifica accanto a
Lingua nella barra degli strumenti, oppure clicca su
Configura lingue nella scheda
Importa/esporta in blocco. Queste lingue vengono utilizzate nell'editor e nei file CSV di localizzazione. Quando esegui una query sugli achievement tramite l'API, Steam restituisce il testo nella lingua richiesta.
Limiti
| Elemento | Limite |
|---|
| Achievement per applicazione | 5.000 (100 per le applicazioni che non sono ancora state verificate) |
| Set per applicazione | 40, incluso il set del gioco di base |
Gli achievement archiviati contano ai fini del limite di achievement.
Passaggio 2: incapsulamento degli achievement
Il codice presentato di seguito non dipende dal gioco e può essere aggiunto al tuo titolo come meglio credi. La classe è già completamente funzionante, ma può essere estesa per soddisfare qualsiasi ulteriore necessità. L'intero codice è stato estratto direttamente dai file di esempio di Spacewar
StatsAndAchievements.cpp/h.
File di intestazione
In primo luogo, definiamo una struttura che conservi i dati degli achievement ricevuti da Steam e una macro per la creazione di oggetti di questo tipo. Questi dati corrispondono esattamente a quelli nella pagina di
configurazione degli achievement.
#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;
};
Definiamo quindi una classe helper in grado di incapsulare tutte le chiamate all'API delle statistiche di Steam e di creare tutte le
callback di Steam.
class CSteamAchievements
{
privato:
int64 m_iAppID; // Il nostro appID attuale
Achievement_t *m_pAchievements; // Dati achievement
int m_iNumAchievements; // Il numero di achievement
bool m_bInitialized; // Siamo pronti a usare l'API?
pubblico:
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 );
};
File del codice
Costruttore
Parametri: il costruttore riceve un puntatore a un array di achievement e la lunghezza dell'array stesso. Il formato di questo array verrà trattato in seguito nel codice principale del gioco.
Restituisce: nessun valore.
Funzione: il costruttore inizializza alcuni membri e ottiene l'appID attualmente in esecuzione. Inoltre, associa i metodi di callback per gestire le chiamate asincrone effettuate a Steam. Infine, effettua una chiamata iniziale a
Initialize() per verificare che l'API sia pronta.
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()
Parametri: nessuno.
Restituisce: una variabile booleana indicante la riuscita o il fallimento della chiamata. Se la chiamata non è riuscita, molto probabilmente Steam non è stato inizializzato. Assicurati di aprire un client di Steam prima di effettuare la chiamata e di aver precedentemente chiamato la funzione
SteamAPI_Init.
Funzione: - Si assicura che Steam sia caricato e che sia presente un contesto di utente con sessione iniziata.
bool CSteamAchievements::Initialize()
{
// Steam è caricato? Altrimenti non possiamo ottenere le statistiche.
if ( NULL == SteamUserStats() || NULL == SteamUser() )
{
return false;
}
// L'utente ha eseguito l'accesso? In caso di risposta negativa, non sarà possibile ottenere le statistiche.
if ( !SteamUser()->BLoggedOn() )
{
return false;
}
return true;
}
SetAchievement()
Parametri: la stringa che identifica l'achievement che vuoi impostare (ad esempio, "ACH_WIN_ONE_GAME").
Restituisce: una variabile booleana indicante la riuscita o il fallimento della chiamata. Se la chiamata non è riuscita, Steam non è stato inizializzato.
Funzione: questo metodo imposta un dato achievement come completato e invia i risultati a Steam. Un achievement può essere impostato più volte, quindi non devi preoccuparti di impostare solo quelli non ancora completati. Questa è una chiamata asincrona che attiverà due callback:
OnUserStatsStored() e
OnAchievementStored().
bool CSteamAchievements::SetAchievement(const char* ID)
{
// Abbiamo già ricevuto una callback da Steam?
if (m_bInitialized)
{
SteamUserStats()->SetAchievement(ID);
return SteamUserStats()->StoreStats();
}
// In caso di risposta negativa, non possiamo ancora impostare gli achievement
return false;
}
OnUserStatsStored()
Parametri: nessuno.
Restituisce: nessun valore.
Funzione: questo metodo è una callback chiamata a ogni tentativo di salvataggio delle statistiche su Steam.
void CSteamAchievements::OnUserStatsStored( UserStatsStored_t *pCallback )
{
// Ignoriamo eventuali callback in arrivo per le statistiche di altri giochi
if ( m_iAppID == pCallback->m_nGameID )
{
if ( k_EResultOK == pCallback->m_eResult )
{
OutputDebugString( "Statistiche memorizzate per Steam\n" );
}
else
{
char buffer[128];
_snprintf( buffer, 128, "StatsStored - failed, %d\n", pCallback->m_eResult );
OutputDebugString( buffer );
}
}
}
OnAchievementStored()
Parametri: nessuno.
Restituisce: nessun valore.
Funzione: questo metodo è una callback chiamata ogni volta che gli achievement vengono salvati correttamente su Steam.
void CSteamAchievements::OnAchievementStored( UserAchievementStored_t *pCallback )
{
// Ignoriamo eventuali callback in arrivo per le statistiche di altri giochi
if ( m_iAppID == pCallback->m_nGameID )
{
OutputDebugString( "Achievement salvato su Steam\n" );
}
}
Passaggio 3: integrazione nel gioco
Di seguito è riportato l'elenco completo dei frammenti di codice che è necessario integrare al posto giusto all'interno del tuo gioco.
Definizioni e variabili globali
Di seguito elenchiamo le direttive "include" necessarie per lavorare con gli achievement, un'enumerazione con gli achievement specifici del gioco e un puntatore globale al nostro oggetto helper. Ricorda che gli achievement corrisponderanno a quelli definiti nella pagina di amministrazione su Steamworks.
...
#include "steam_api.h"
// Definizione dei nostri achievement
enum EAchievements
{
ACH_WIN_ONE_GAME = 0,
ACH_WIN_100_GAMES = 1,
ACH_TRAVEL_FAR_ACCUM = 2,
ACH_TRAVEL_FAR_SINGLE = 3,
};
// Un array che conterrà tutti i dati sugli achievement e sul loro stato
Achievement_t g_Achievements[] =
{
_ACH_ID( ACH_WIN_ONE_GAME, "Winner" ),
_ACH_ID( ACH_WIN_100_GAMES, "Champion" ),
_ACH_ID( ACH_TRAVEL_FAR_ACCUM, "Interstellar" ),
_ACH_ID( ACH_TRAVEL_FAR_SINGLE, "Orbiter" ),
};
// Accesso globale all'oggetto Achievements
CSteamAchievements* g_SteamAchievements = NULL;
...
Inizializzazione
La chiamata a
SteamAPI_Init inizializza Steam e deve essere effettuata prima di qualsiasi altra operazione. Se questa chiamata va a buon fine, creiamo l'oggetto helper passando l'array degli achievement e le dimensioni dell'array stesso.
...
// Inizializza Steam
bool bRet = SteamAPI_Init();
// Crea l'oggetto SteamAchievements se Steam è stato inizializzato con successo
if (bRet)
{
g_SteamAchievements = new CSteamAchievements(g_Achievements, 4);
}
...
Elaborazione delle callback
Per garantire l'elaborazione di tutte le callback di Steam, è necessario verificare regolarmente se ci sono nuovi messaggi. Per farlo, aggiungiamo la seguente chiamata al ciclo del gioco.
...
SteamAPI_RunCallbacks();
...
Attivazione degli achievement
L'attivazione di un achievement richiede la chiamata a una singola funzione con l'identificativo dell'achievement come parametro.
...
if (g_SteamAchievements)
g_SteamAchievements->SetAchievement("ACH_WIN_100_GAMES");
...
Nota: Steam non sbloccherà un achievement in un set di DLC per un giocatore che non può giocare a quel DLC, né un achievement di un set archiviato. Assicurati che il tuo gioco conferisca gli achievement di un DLC solo ai giocatori che possiedono il DLC e che smetta di conferire gli achievement una volta archiviati. Vedi
Set di achievement più sotto.
Arresto
Probabilmente la chiamata a
SteamAPI_Shutdown è già presente nel tuo codice. Tale funzione consente l'arresto di Steam e deve essere eseguita prima di uscire dall'applicazione. Eliminiamo infine l'oggetto helper creato in precedenza.
...
// Chiudi Steam
SteamAPI_Shutdown();
// Elimina l'oggetto SteamAchievements
if (g_SteamAchievements)
delete g_SteamAchievements;
...
Passaggio 4: test e risoluzione dei problemi
Per impostare o eliminare le statistiche o gli achievement senza aggiungere codice al tuo gioco, puoi usare la console del client di Steam. Esegui l'avvio con il comando steam.exe -console, seguito da:
- achievement_clear <appID> <nome dell'achievement>
- reset_all_stats <appID>
Anteprima e pubblicazione
Le modifiche apportate nell'editor degli achievement vengono salvate nella configurazione bozza della tua applicazione. Per renderle attive, pubblicale dalla scheda
Pubblica in
Modifica le impostazioni di Steamworks, come per qualsiasi altra impostazione di Steamworks.
Prima del rilascio, puoi visualizzare in anteprima gli achievement nella tua pagina degli achievement di Steam, raggiungibile dal link in cima all'editor. Utilizza i set riservati agli sviluppatori per testare nuovi achievement senza mostrarli ai giocatori.
Per abilitare completamente gli achievement e completare la tua lista di controllo per il rilascio, devi anche selezionare l'opzione
Achievement di Steam in
Funzionalità disponibili nella sezione delle informazioni di base della tua pagina del Negozio. Per superare la lista di controllo per il rilascio, ogni achievement deve avere un nome in ciascuna delle lingue configurate e deve avere un'icona.
Set di achievement
I set di achievement ti permettono di organizzare gli achievement del tuo gioco in gruppi denominati, tenere traccia del completamento dei giocatori per ogni set e aggiungere o rimuovere achievement nel tempo senza eliminare quelli completati da un giocatore. I set di achievement ti consentono di:
- Raggruppare gli achievement in modo sensato per il tuo gioco, ad esempio per modalità, personaggio, capitolo o evento.
- Aggiungere achievement per i DLC che contano ai fini del completamento solo per i giocatori che possiedono quel DLC.
- Archiviare achievement e set per contenuti che sono stati ritirati, senza rimuoverli dai giocatori che li hanno ottenuti.
- Creare e testare gli achievement in set riservati agli sviluppatori, nascosti ai giocatori.
- Gestire in blocco le definizioni degli achievement, le assegnazioni dei set, le icone e la localizzazione utilizzando file CSV e d'immagine.
Set del gioco di base
Ogni gioco ha un set di
Achievement del gioco di base. Gli achievement non assegnati a un altro set appartengono al set del gioco di base, quindi se non crei set aggiuntivi, tutti i tuoi achievement saranno inclusi nel set del gioco di base. Per la maggior parte dei giochi, questo set conterrà la maggioranza dei tuoi achievement.
Il set del gioco di base non può essere rinominato, eliminato o riordinato. Viene sempre mostrato per primo, a meno che non sia vuoto, nel qual caso non verrà visualizzato (ma verrà comunque conteggiato ai fini del limite).
Set personalizzati
Puoi creare set aggiuntivi per organizzare i tuoi achievement. Ogni set ha un nome, che viene mostrato ai giocatori, e una limitazione facoltativa:
| Limitazione | Chi può ottenere gli achievement del set |
|---|
| Tutti i giocatori del titolo | Chiunque possa giocare al titolo. |
| Proprietari di (DLC) | Solo i giocatori che possono giocare al DLC selezionato. |
I giocatori vedono i progressi per ogni set e viene tenuta traccia del completamento di un set separatamente dal completamento del resto del gioco.
Set di DLC
Un set limitato ai possessori di un DLC è un
set di DLC. Set di DLC:
- Può essere esplorato da tutti i giocatori nella pagina degli achievement del gioco, ma solo i giocatori che possono giocare al DLC possono ottenerli.
- Non contano ai fini del completamento del set del gioco di base o di qualsiasi altro set.
- Rimane nascosto ai giocatori finché il DLC non viene rilasciato. Questo ti permette di configurare e testare gli achievement per i DLC in arrivo prima del lancio.
- Usa le immagini e il link al DLC del Negozio nella pagina degli achievement. Se il DLC non ha una pagina del Negozio pubblicata, vengono invece utilizzati le immagini e il link alla pagina del Negozio del gioco di base e l'editor visualizzerà un avviso.
- Sono mostrati nel pannello degli achievement nella pagina del Negozio del DLC.
Il nome del set verrà visualizzato con il prefisso "DLC" , quindi non è necessario includere "DLC" nel nome.
Set solo per sviluppatori
Un set contrassegnato come
Solo per sviluppatori è visibile solo agli sviluppatori dell'applicazione, indipendentemente dal fatto che sia stata rilasciata o meno. Solo gli sviluppatori possono sbloccare achievement in un set riservato agli sviluppatori. I gruppi destinati esclusivamente agli sviluppatori sono utili per creare e testare nuovi achievement prima che siano pronti per il rilascio.
Archiviazione
A volte una modalità di gioco viene sostituita, un evento stagionale termina, oppure un achievement non può più essere ottenuto. Invece di eliminare gli achievement che i giocatori hanno ottenuto, è possibile archiviarli.
- Gli achievement archiviati restano visibili ai giocatori che li hanno sbloccati e possono comunque essere messi in evidenza sui loro profili. I giocatori che non hanno sbloccato un achievement archiviato non lo vedranno e questo non verrà conteggiato ai fini del completamento del set a cui appartiene.
- I set archiviati sono visibili solo ai giocatori che hanno precedentemente sbloccato un achievement al loro interno. Non è possibile sbloccare gli achievement di un set archiviato. I giocatori che hanno sbloccato gli achievement di un set archiviato possono comunque vedere tutti gli achievement del set.
L'archiviazione non modifica il tuo gioco. Quando archivi un achievement, assicurati che il tuo gioco non lo assegni più agli utenti.
Achievement spoiler
Gli achievement precedentemente contrassegnati come
Nascosti sono ora chiamati achievement
Spoiler. Per evitare di svelare il gioco, il nome e la descrizione di un achievement spoiler non vengono mostrati ai giocatori finché non lo sbloccano o scelgono di rivelarlo. Gli achievement spoiler e archiviati non vengono mostrati nel pannello degli achievement nella pagina del Negozio.
Completamento
Il completamento viene tracciato per set:
- Un giocatore completa un set sbloccando tutti gli achievement ancora disponibili al suo interno. Gli achievement archiviati che il giocatore non ha sbloccato non sono obbligatori.
- Una volta che un giocatore completa un set, questo rimane completato, anche se in seguito aggiungi achievement a quel set.
- I set di DLC vengono conteggiati ai fini del completamento da parte di un giocatore solo se quest'ultimo possiede il DLC.
I giocatori possono mostrare sul proprio profilo di Steam quanti giochi e set hanno completato. Un gioco si qualifica per la Vetrina da collezionista sul proprio profilo quando il giocatore ha completato uno qualsiasi dei set del gioco.
Creare un set
- Nella scheda Gestisci achievement, clicca su Crea nuovo set.
- Inserisci un Nome del set. Il nome viene mostrato ai giocatori.
- In Restrizioni, scegli Tutti i giocatori del titolo, oppure seleziona un DLC per limitare il gruppo ai possessori di quel DLC. L'elenco dei DLC include i DLC elencati per il tuo gioco, insieme ai loro appID.
- Facoltativamente, contrassegna il set come Solo per sviluppatori.
- Salva il set.
Un set senza achievement al suo interno non verrà mostrato a nessuno.
Modificare un set
Apri il menu del set e scegli
Modifica set per cambiarne il nome, le restrizioni, lo stato di sola visibilità per sviluppatori, oppure per contrassegnarlo come
Archiviato.
Ogni set mostra la sua
Visibilità nell'editor:
| Visibilità | Significato |
|---|
| Visibile | I giocatori possono vedere questo set. |
| Nascosto per restrizioni | I giocatori non possono ancora vedere questo set, ad esempio perché è riservato agli sviluppatori o il suo DLC non è stato rilasciato. |
| Sarà visibile al momento della pubblicazione | I giocatori potranno vedere questo set una volta pubblicate le modifiche. |
Modificare l'ordine dei set
Clicca su
Riordina set nella barra degli strumenti, quindi trascina e rilascia i set per scegliere l'ordine in cui i giocatori li vedranno. Il set del gioco di base non può essere spostato.
Eliminare un set
Apri il menu del set e scegli
Elimina set. Devi spostare o eliminare tutti gli achievement presenti in un set prima di poterlo eliminare. Se desideri ritirare un set senza rimuovere gli achievement dai giocatori che li hanno ottenuti, archivialo.
Spostare gli achievement tra i set
Per spostare un singolo achievement, modifica il suo campo
Nel set. Per spostare molti achievement contemporaneamente, usa
Sposta in blocco:
- Clicca su Sposta in blocco nell'intestazione della tabella degli achievement.
- Seleziona gli achievement che desideri spostare. Il numero di achievement selezionati viene mostrato nella parte inferiore della pagina.
- Scegli un set di destinazione oppure scegli Crea nuovo set... per crearne uno.
- Clicca su Sposta.
Ad esempio, puoi attivare la modalità Sposta in blocco, utilizzare la casella di ricerca per filtrare gli achievement in base al nome API, quindi cliccare sulla casella di controllo nelle intestazioni delle colonne per selezionare tutti gli achievement visibili in un gruppo da spostare. Questo flusso di lavoro è relativamente semplice e può far risparmiare parecchio tempo.
L'editor ti avviserà prima di uno spostamento che potrebbe influire sui giocatori:
- Spostare gli achievement da un set visibile a un set nascosto o non rilasciato li nasconderà ai giocatori che li hanno già sbloccati.
- Spostare gli achievement in un gruppo in cui i giocatori hanno già dei progressi potrebbe interromperne il completamento per quei giocatori.
Nota: aggiungere un achievement a un set già rilasciato non comprometterà il completamento per i giocatori, ma potrebbe non essere visualizzato in modo naturale. Valuta invece di aggiungere un nuovo set.
Importazione/esportazione in blocco
La scheda
Importa/esporta in blocco ti consente di gestire i tuoi achievement come file: esporta file CSV, modificali in uno strumento per fogli di calcolo e caricali di nuovo insieme alle tue icone.
Flusso di lavoro
- Clicca su Esporta definizioni (.csv), Esporta localizzazione (.csv) e/o Esporta localizzazione set (.csv) per scaricare i tuoi dati attuali.
- Modifica i file. Le righe di intestazione includono note tra parentesi che descrivono ciascuna colonna, ad esempio
spoiler (true o false). Queste note vengono ignorate quando si carica il file.
- Trascina i tuoi file
.csv e .png nel riquadro di caricamento, oppure clicca su Seleziona file.... È possibile caricare più file contemporaneamente.
- Controlla l'elenco File caricati per verificare la presenza di eventuali errori. La rimozione di un file annulla tutto ciò a cui ha contribuito. Per sostituire un file, correggilo e caricalo di nuovo.
- Rivedi le Modifiche in sospeso. Nessun dato viene salvato fino a quando non si clicca su Salva dati importati.
Se il tuo gioco non ha ancora achievement, le esportazioni delle definizioni e della localizzazione sono modelli contenenti un paio di righe di esempio che iniziano con
EXAMPLE_. Puoi sovrascriverli, eliminarli oppure caricare il modello così com'è per vedere come funziona l'importazione.
CSV di definizioni degli achievement
Esportato come
<appid>-achievements-definitions.csv. Ogni riga definisce un achievement.
| Colonna | Descrizione |
|---|
api_name | Obbligatorio, univoco. Il nome che il tuo gioco passa all'API. |
setid | Opzionale. L'ID di un set esistente. Lascia vuoto per il set del gioco di base. |
permission | Una tra Client, GameServer o OfficialGameServer. |
spoiler | true oppure false. |
archived | true oppure false. |
progress_stat_name | Opzionale. Il nome di una statistica esistente da utilizzare per una barra di avanzamento. Lascia vuoto per non avere alcuna barra di avanzamento. |
progress_stat_min | Un numero non inferiore al valore minimo della statistica stessa. Deve essere un numero intero se la statistica è di tipo intero. |
progress_stat_max | Un numero maggiore di progress_stat_min e non superiore al valore massimo della statistica stessa. Deve essere un numero intero se la statistica è di tipo intero. |
Quando carichi un CSV di definizioni, gli achievement vengono confrontati con i tuoi achievement esistenti in base al nome API:
- Da aggiungere - Le righe che non corrispondono a un nome API esistente vengono aggiunte come nuovi achievement. Se intendevi rinominare il nome API di un achievement esistente, modificalo prima nell'editor, altrimenti i vecchi dati verranno rimossi.
- Da modificare - Gli achievement esistenti i cui valori sono cambiati vengono aggiornati.
- Non modificati - Gli achievement esistenti i cui valori non sono cambiati vengono lasciati invariati.
- Assenti nel file CSV - Gli achievement esistenti che non sono presenti nel file vengono mantenuti, a meno che non selezioni Elimina questi achievement. Fai attenzione quando rimuovi gli achievement perché non puoi semplicemente aggiungere di nuovo gli achievement una volta che sono stati rimossi.
Nota: i nomi e le descrizioni degli achievement non fanno parte del CSV delle definizioni. Usa il CSV di localizzazione per impostarli.
Nota: una statistica del progresso deve già esistere e deve avere lo stesso permesso dell'achievement. Per creare nuove statistiche, modifica prima le tue statistiche.
CSV di localizzazione degli achievement
Esportato come
<appid>-achievements-localization.csv. Ogni achievement ha due righe: una per il nome e una per la descrizione.
| Colonna | Descrizione |
|---|
api_name | Necessario. Deve corrispondere a un api_name del CSV delle definizioni o a un achievement esistente. I nomi API qui sono sensibili alle maiuscole e minuscole. |
field | name o description. |
| (una colonna per lingua) | Il testo per quella lingua, ad esempio english, french, german. |
Le colonne della lingua corrispondono alle lingue configurate per i tuoi achievement. Se sei all'inizio del processo di localizzazione, configura prima le lingue in modo che il file CSV esportato includa le colonne relative a tali lingue.
Se carichi un CSV delle definizioni e un CSV di localizzazione insieme, la localizzazione per gli achievement mancanti nel CSV delle definizioni non verrà aggiornata.
CSV di localizzazione dei set
Esportato come
<appid>-achievement-sets-localization.csv. Ogni riga contiene il nome di un set.
| Colonna | Descrizione |
|---|
setid | Necessario. L'ID di un set esistente. |
| (una colonna per lingua) | Il nome del set in quella lingua. english è obbligatorio. |
I set devono essere creati nell'editor prima di poterli localizzare qui. Il set del gioco di base non può essere rinominato.
File delle icone
Assegna un nome ai file delle icone utilizzando il nome API dell'achievement seguito da
_ACHIEVED o
_UNACHIEVED, ad esempio
LEVEL_20_ACHIEVED.png e
LEVEL_20_UNACHIEVED.png. Le icone vengono assegnate automaticamente all'achievement corrispondente.
Seleziona
Genera automaticamente icone "Non sbloccato" per creare icone "Non sbloccato" in scala di grigi qualsiasi icona "Sbloccato" che carichi.
Se carichi un file CSV di definizioni insieme alle tue icone, le icone vengono assegnate solo agli achievement inclusi in quel CSV. Per caricare le icone da sole, caricale senza un CSV delle definizioni.
Cosa vedono i giocatori
Pagina degli achievement
I giocatori vedono i tuoi achievement nella pagina degli achievement di Steam, nel client di Steam e sul sito della Comunità di Steam. La pagina degli achievement:
- Mostra i progressi e il completamento per ogni set, inclusi i set di DLC.
- Consente ai giocatori di confrontare i propri achievement con un massimo di 3 amici.
- Mostra la percentuale globale di sblocco per ogni achievement ed evidenzia gli achievement rari.
- Consente ai giocatori di cercare gli achievement e filtrarli in base allo stato di sblocco o al set.
Puoi collegare i giocatori direttamente agli achievement del tuo gioco:
| URL | Mostra |
|---|
https://steamcommunity.com/achievements/<appid> | Gli achievement del tuo gioco, senza i progressi di uno specifico giocatore. Disponibile indipendentemente dal fatto che il giocatore possieda il gioco. |
|
Pagine del Negozio
Il pannello degli achievement nella tua pagina del Negozio mostra gli achievement del tuo gioco, esclusi quelli spoiler e archiviati. La pagina del Negozio di un DLC mostra gli achievement del set di quel DLC.
Profili
I giocatori possono mostrare nella Bacheca degli achievement del proprio profilo il numero di giochi e di set che hanno completato, e possono mettere in evidenza i giochi nella Vetrina da collezionista una volta completato uno qualsiasi dei set di un gioco.
Pratiche consigliate
- Aggiungi nuovi set per i nuovi contenuti. Aggiungere achievement a un set che i giocatori hanno già completato potrebbe confondere i giocatori, poiché il set sarà contrassegnato come completato ma presenterà achievement bloccati. Creare un nuovo set per nuovi contenuti, come un DLC, un aggiornamento o una nuova modalità, mantiene chiari i progressi per i giocatori.
- Archivia invece di eliminare. Se i giocatori hanno ottenuto un achievement, archivialo invece di eliminarlo, in modo che i giocatori mantengano ciò che hanno ottenuto.
- Usa set di DLC per gli achievement dei DLC. In questo modo il completamento del gioco di base rimane separato, così i giocatori che non possiedono il DLC non sono impossibilitati a completare il tuo gioco.
- Mantieni i nomi dei set brevi e descrittivi. I nomi dei set vengono mostrati ai giocatori in molti punti, incluso all'interno del client di Steam.
- Localizza i nomi dei set per ogni lingua supportata dal tuo gioco, utilizzando il CSV di localizzazione dei set o l'editor.
- Esegui test con set riservati agli sviluppatori prima di rilasciare nuovi achievement ai giocatori.
Domande frequenti
È necessario aggiornare il gioco o l'SDK di Steamworks per utilizzare i set di achievement?
No. I set vengono configurati in Steamworks e il tuo gioco sblocca gli achievement utilizzando gli stessi nomi API e le stesse chiamate di prima.
Cosa succede agli achievement esistenti?
Sono tutti nel set del gioco di base. Se non crei altri set, i giocatori vedranno i tuoi achievement come un singolo elenco nella nuova pagina degli achievement.
I giocatori perderanno il completamento se aggiungo nuovi achievement?
I giocatori che hanno già completato un set mantengono tale completamento. Tuttavia, aggiungere achievement a un set già rilasciato significa che i giocatori che non l'hanno ancora completato avranno più da fare, quindi consigliamo di aggiungere nuovi set per i nuovi contenuti.
Qual è la differenza tra archiviare ed eliminare un achievement?
Gli achievement archiviati restano visibili ai giocatori che li hanno sbloccati e non vengono più conteggiati ai fini del completamento per i giocatori che non li hanno sbloccati. Gli achievement eliminati vengono rimossi per tutti.
È possibile spostare un achievement in un set diverso dopo il rilascio?
Sì, ma l'editor ti avviserà se lo spostamento potrebbe nascondere l'achievement ai giocatori che l'hanno ottenuto oppure influire sul completamento da parte dei giocatori.
Quanti set posso creare?
Fino a 40, incluso il set del gioco di base.