Documentazione di Steamworks
Guida all'implementazione del Workshop di Steam

Introduzione

Il Workshop di Steam è un sistema di archiviazione back-end e di pagine web front-end che facilitano la conservazione, l'organizzazione, l'ordinamento, la valutazione e il download dei contenuti per il tuo gioco o applicazione.

In questa pagina sono raccolti i dettagli tecnici per l'implementazione del Workshop di Steam nel tuo titolo. Per informazioni e definizioni dei vari tipi di integrazione del Workshop disponibili e su come ottenere il meglio dagli strumenti forniti da Steam, consulta la sezione Panoramica del Workshop di Steam prima di procedere alla sua integrazione nel gioco.

In uno scenario tipico, i clienti del gioco usano gli strumenti da te forniti con l'acquisto del prodotto per modificare i contenuti del gioco o crearne di nuovi, inviando quindi le proprie modifiche al Workshop di Steam tramite un modulo integrato nello strumento. Accedendo al Workshop di Steam dalla Comunità di Steam, gli altri utenti possono quindi sfogliare, ordinare, valutare e sottoscriversi ai contenuti che desiderano aggiungere al gioco. I contenuti vengono quindi scaricati attraverso Steam. Se all'interno del gioco hai registrato la callback ISteamUGC::ItemInstalled_t, puoi chiamare ISteamUGC::GetItemInstallInfo per ottenere la posizione dell'installazione e leggere i dati direttamente da tale cartella. A questo punto, il nuovo contenuto viene riconosciuto dal gioco in modo appropriato a seconda del gioco e del tipo di creazione.

Tipi, monetizzazione e pratiche consigliate del Workshop di Steam

Per maggiori informazioni e definizioni dei vari tipi di integrazione del Workshop disponibili e su come ottenere il meglio dagli strumenti forniti da Steam, consulta la documentazione Workshop di Steam.

Gestione della visibilità del Workshop di Steam

Il Workshop di Steam è il sito web per i contenuti condivisi ospitato su Steam che consente agli utenti di votarli e commentarli all'interno della Comunità. Per impostazione predefinita, le applicazioni non sono abilitate per essere pubblicamente visibili nel Workshop. In questo modo i contenuti che non devono essere condivisi tramite il portale del Workshop di Steam rimangono invisibili, a meno che il Workshop non sia impostato su pubblico.
Imposta lo stato di visibilità del Workshop attraverso i seguenti passaggi:
  1. Accedi alla pagina principale dell'applicazione sul sito web di Steamworks.
  2. Fai clic su Modifica le impostazioni di Steamworks.
  3. Dalla scheda Workshop, seleziona Generale.
  4. Sul lato destro della pagina individua la sezione Stato di visibilità.
  5. Utilizza i pulsanti per selezionare il livello di visibilità desiderato, scegliendo tra "Solo sviluppatori", "Sviluppatori e tester", "Clienti e sviluppatori" e "Tutti".
  6. Dalla scheda Pubblica, fai clic su Prepara per la pubblicazione.
  7. Fai clic su Pubblica su Steam e completa il processo per pubblicare le modifiche.
Nota: per modificare lo stato di visibilità su "Tutti", la lista di controllo del Workshop deve essere completata. Ciò include il branding, il titolo, la descrizione e almeno un contenuto pubblicamente visibile.

Panoramica tecnica

Il processo per condividere e utilizzare i contenuti generati dagli utenti (UGC, dall'inglese User Generated Content) prevede l'utilizzo dell'API ISteamUGC contenuta nell'SDK Steamworks. I metodi inviati forniscono un modo per condividere il contenuto dell'articolo del Workshop che successivamente può essere visualizzato dal Workshop di Steam o internamente all'applicazione.

È necessario accedere all'API del Workshop tramite il puntatore restituito da SteamUGC().

Ad esempio:
SteamAPICall_t hSteamAPICall = SteamUGC()->CreateItem( SteamUtils()->GetAppID(), k_EWorkshopFileTypeMicrotransaction );

Abilitazione di ISteamUGC per un gioco o un'applicazione

Prima di poter caricare i contenuti del Workshop nel back-end di Steamworks, è necessario eseguire due operazioni: configurare il limite di Steam Cloud e abilitare l'API ISteamUGC.

La funzionalità della Steam Cloud viene utilizzata per conservare le immagini di anteprima associate ai contenuti del Workshop. È possibile configurare il limite di Steam Cloud seguendo questi passaggi:
  1. Accedi alla pagina Impostazioni Steam Cloud dal pannello Amministratore dell'applicazione.
  2. Imposta l'opzione Quota di byte per utente e Numero di file consentiti per utente su valori appropriati per l'archiviazione dell'anteprima dell'immagine.
  3. Clicca su Salva
  4. Dalla scheda Pubblica, fai clic su Prepara per la pubblicazione.
  5. Fai clic su Pubblica su Steam e completa il processo per pubblicare le modifiche.

Abilita l'API ISteamUGC con i seguenti passaggi:
  1. Accedi alla pagina Configurazione del Workshop di Steam dal pannello Amministratore dell'applicazione.
  2. Individua la sezione Opzioni di configurazione aggiuntive.
  3. Seleziona la casella di spunta Abilita ISteamUGC per il trasferimento dei file.
  4. Clicca su Salva.
  5. Dalla scheda Pubblica, fai clic su Prepara per la pubblicazione.
  6. Fai clic su Pubblica su Steam e completa il processo per pubblicare le modifiche.
Ultimate queste impostazioni, i contenuti del Workshop possono essere caricati tramite l'API.

Creazione e caricamento di contenuti

Il processo di creazione e caricamento di contenuti del Workshop è semplice e ripetibile, come illustrato nel diagramma di flusso di seguito.

ISteamUGCFlow-CreateUpload-Web2.png

Creazione di un contenuto per il Workshop

  1. Tutti i contenuti del Workshop vengono generati con una chiamata a ISteamUGC::CreateItem.
    • La variabile nConsumerAppId deve includere l'appID del gioco o applicazione. Se l'appID dello strumento di creazione del contenuto del Workshop è separato, non passarlo al metodo.
    • EWorkshopFileType è un tipo di enumerazione che definisce il modo in cui il file verrà condiviso con la Comunità. I valori validi sono:
      • k_EWorkshopFileTypeCommunity: un tipo di file che viene utilizzato per descrivere i file che verranno caricati dagli utenti e resi disponibili per il download da chiunque nella Comunità. Tipicamente viene utilizzato per condividere mod create dagli utenti.
      • k_EWorkshopFileTypeMicrotransaction: un tipo di file che viene utilizzato per descrivere i file caricati dagli utenti, ma che è destinato solo al considerare l'aggiunta al gioco come contenuto ufficiale. Questi file non verranno scaricati dagli utenti tramite il Workshop, ma saranno visualizzabili dalla Comunità per essere votati.
        Questa è l'implementazione usata da Team Fortress 2.
  2. Registra un handler dei risultati di chiamata per CreateItemResult_t.
  3. Verifica innanzitutto m_eResult per assicurarti che l'oggetto sia stato creato correttamente.
  4. Quando l'handler dei risultati di chiamata viene eseguito, leggi il valore m_nPublishedFileId e conservalo nell'oggetto del Workshop per aggiornamenti futuri (ad esempio in un file di progetto associato allo strumento di creazione).
  5. È necessario controllare anche la variabile m_bUserNeedsToAcceptWorkshopLegalAgreement: se restituisce true, l'utente deve essere reindirizzato alla pagina per l'accettazione dell'accordo legale. Per maggiori dettagli, consulta la sezione Accordo legale del Workshop.

Caricamento di un contenuto per il Workshop

  1. Una volta creato un oggetto del Workshop e restituito il valore PublishedFileId_t, il contenuto dell'oggetto del Workshop può essere compilato e caricato nel Workshop di Steam.
  2. L'aggiornamento dell'oggetto viene avviato con una chiamata a ISteamUGC::StartItemUpdate.
  3. Usando UGCUpdateHandle_t restituito da ISteamUGC::StartItemUpdate, è possibile effettuare chiamate per aggiornare il titolo, la descrizione, la visibilità, le etichette, il contenuto e l'immagine di anteprima dell'oggetto tramite i diversi metodi ISteamUGC::SetItem[...].
  4. Una volta completate le chiamate di aggiornamento, la chiamata ISteamUGC::SubmitItemUpdate avvierà il processo di caricamento sul Workshop di Steam.
    • Registra un handler dei risultati di chiamata per SubmitItemUpdateResult_t.
    • Quando l'handler dei risultati di chiamata viene eseguito, verifica m_eResult per assicurarti che il caricamento sia stato completato correttamente.
    • Nota: non esiste alcun metodo per annullare l'aggiornamento dell'oggetto e caricarlo una volta chiamato.
  5. Se lo desideri, puoi monitorare l'avanzamento del caricamento con ISteamUGC::GetItemUpdateProgress.
    • EItemUpdateStatus definisce l'avanzamento del caricamento e dell'aggiornamento.
    • punBytesProcessed e punBytesTotal possono essere utilizzati per fornire input a un controllo dell'interfaccia utente (come una barra di avanzamento) per indicare l'avanzamento del caricamento.
    • punBytesTotal può essere aggiornato durante il processo di caricamento in base alla fase dell'aggiornamento dell'oggetto.
  6. Analogamente alla creazione di un contenuto per il Workshop, assicurati che l'utente abbia accettato l'accordo legale. Questo è necessario nel caso in cui l'utente non abbia inizialmente creato l'oggetto ma ne stia modificando uno esistente.

Note aggiuntive

  • I contenuti del Workshop sono stati precedentemente indicati come file singoli. Con ISteamUGC, un oggetto del Workshop è la rappresentazione di una cartella di file.
  • Se un oggetto del Workshop necessita di metadati aggiuntivi per l'utilizzo dall'applicazione, puoi allegare i metadati all'oggetto con la chiamata ISteamUGC::SetItemMetadata. I metadati possono essere restituiti dalle query di ricerca senza dover scaricare e installare il contenuto dell'oggetto.
    In precedenza abbiamo suggerito di salvare i metadati in un file all'interno della cartella del Workshop. Anche in questo caso puoi seguire il nostro consiglio.

Contenuti di consumo

I contenuti di consumo del Workshop rientrano in due categorie: sottoscrizione all'oggetto e installazione dell'oggetto.

Sottoscrizione all'oggetto

La maggior parte delle sottoscrizioni ai contenuti del Workshop avvengono tramite il portale del Workshop di Steam, comune a tutti i giochi e le applicazioni e che gli utenti conoscono e frequentano regolarmente per ricercare gli oggetti e sottoscriversi a essi.

Per supportare la gestione delle sottoscrizioni agli oggetti del Workshop nel gioco, ISteamUGC fornisce tuttavia due metodi a livello di programmazione: uno per la sottoscrizione agli oggetti e uno per l'annullamento di tale sottoscrizione.
  • ISteamUGC::SubscribeItem: sottoscrive l'utente a un oggetto del Workshop, che verrà scaricato e installato non appena possibile.
  • ISteamUGC::UnsubscribeItem: annulla la sottoscrizione dell'utente a un oggetto del Workshop, causando la sua rimozione alla chiusura del gioco.

Esistono due metodi aggiuntivi per l'elencazione degli oggetti a cui un utente si è sottoscritto.
  • ISteamUGC::GetNumSubscribedItems: consente di ottenere il numero totale di oggetti di un gioco o di un'applicazione a cui l'utente attuale si è sottoscritto.
  • ISteamUGC::GetSubscribedItems: consente di ottenere l'elenco di tutti gli oggetti a cui l'utente attuale si è sottoscritto per il gioco in questione.

Ricezione delle notifiche per le azioni di sottoscrizione esterne

È possibile ricevere notifiche nel gioco quando un utente si sottoscrive a un file o annulla la sottoscrizione tramite qualsiasi meccanismo (ad esempio ISteamUGC, il sito web del Workshop di Steam):
  • Registra un handler delle callback per RemoteStoragePublishedFileSubscribed_t e RemoteStoragePublishedFileUnsubscribed_t.
  • Le strutture verranno compilate con ISteamRemoteStorage::PublishedFileId_t, che può quindi essere utilizzato per accedere alle informazioni relative all'oggetto del Workshop.
  • Le strutture includono anche l'ID dell'applicazione (m_unAppID) associato all'oggetto del Workshop. Deve essere confrontato con l'ID dell'applicazione in esecuzione in quanto l'handler verrà chiamato per tutte le sottoscrizioni agli oggetti indipendentemente dall'applicazione in esecuzione.

Installazione dell'oggetto

Una volta note le informazioni sulla sottoscrizione all'oggetto, è possibile utilizzare i restanti metodi di consumo. Questi metodi restituiscono al gioco informazioni sullo stato del download e dell'installazione dell'oggetto. I download degli oggetti del Workshop vengono eseguiti tramite il client di Steam e avvengono automaticamente in base alle seguenti regole:
  1. Quando il client di Steam rileva l'avvio di un gioco o un'applicazione, tutti i blocchi dati delle applicazioni che sono stati aggiornati vengono scaricati e installati.
  2. Gli oggetti del Workshop eventualmente installati vengono aggiornati, se necessario.
  3. A questo punto, il gioco o l'applicazione si avvia.
  4. Gli oggetti del Workshop a cui l'utente si è sottoscritto di recente e che non sono stati scaricati verranno scaricati e installati in background.
    • I file a cui l'utente si è sottoscritto vengono scaricati nel client nell'ordine di sottoscrizione.
    • La pagina di download di Steam mostra i download degli oggetti del Workshop con un messaggio specifico indicante il download in corso.
Nota: l'utilizzo della funzione "Verifica integrità dei file di gioco" nel client di Steam avvierà il download degli oggetti del Workshop.

Dal momento che il gioco viene avviato prima di scaricare e installare i contenuti di nuova sottoscrizione, i restanti metodi di consumo servono a supportare il monitoraggio e la gestione dell'avanzamento dell'installazione. Possono anche essere utilizzati per fornire lo stato di installazione in tempo reale quando l'utente si sottoscrive a un oggetto nel gioco.

Stato di un oggetto del Workshop

Avanzamento del download di un oggetto del Workshop

Avviare o aumentare la priorità di download di un oggetto del Workshop

  • ISteamUGC::DownloadItem
    • Imposta bHighPriority su true per mettere in pausa tutti i download in corso e iniziare immediatamente a scaricare questo oggetto del Workshop.
    • Se il valore restituito è true, registra e attendi la callback ISteamUGC::DownloadItemResult_t prima di effettuare la chiamata a ISteamUGC::GetItemInstallInfo o di accedere all'oggetto del Workshop su disco.
    • Se l'utente non si è sottoscritto all'oggetto (se si tratta ad esempio di un server di gioco con accesso anonimo), l'oggetto del Workshop verrà scaricato e memorizzato temporaneamente nella cache.
    • Se l'oggetto del Workshop presenta un ISteamUGC::EItemState k_EItemStateNeedsUpdate, puoi effettuare la chiamata a ISteamUGC::DownloadItem per avviare l'aggiornamento. Non accedere all'oggetto del Workshop su disco finché la callback ISteamUGC::DownloadItemResult_t non viene attivata.
    • Questo metodo funziona solo con gli oggetti del Workshop creati con ISteamUGC. Non funziona con gli oggetti del Workshop creati con il metodo classico ISteamRemoteStorage.
    • La struttura della callback ISteamUGC::DownloadItemResult_t include l'ID dell'applicazione (m_unAppID) associato all'oggetto del Workshop. Deve essere confrontato con l'ID dell'applicazione in esecuzione in quanto l'handler verrà chiamato per tutti i download degli oggetti indipendentemente dall'applicazione in esecuzione.

Recupero delle informazioni sulla copia locale dell'oggetto del Workshop

Notifica quando un oggetto del Workshop è installato o aggiornato

Ricerca dei contenuti

L'interfaccia ISteamUGC offre un modo flessibile per elencare i vari tipi di contenuti generati dall'utente in Steam (ad es. oggetti del Workshop, screenshot, video ecc.).

ISteamUGCFlows-QueryingContent-web2.png

  1. Registra un handler dei risultati di chiamata per SteamUGCQueryCompleted_t.
  2. Ci sono diversi metodi disponibili per creare una query di ricerca in base alle necessità: ricerca per contenuto associato a un utente, ricerca per tutti i contenuti o restituzione dei dettagli per i contenuti di cui si hanno gli ID.
  3. Personalizza la ricerca secondo necessità effettuando la chiamata ai metodi per l'impostazione delle opzioni:
    • Quando si esegue una query di ricerca degli UGC di un utente
    • Quando si esegue una query di ricerca di tutti gli UGC
      • ISteamUGC::SetMatchAnyTag imposta una query di ricerca degli UGC in sospeso affinché restituisca gli oggetti del Workshop che presentano uno o più etichette corrispondenti oppure quelli dove corrispondono tutte le etichette.
      • ISteamUGC::SetSearchText imposta su una query di ricerca degli UGC in sospeso una stringa che deve essere presente nel titolo o nella descrizione degli oggetti.
      • ISteamUGC::SetRankedByTrendDays imposta una query di ricerca degli UGC in sospeso per aggiornare l'ordine dei risultati in base alla classifica degli oggetti per un certo numero di giorni.
    • Quando si esegue una query di ricerca per l'uno o l'altro tipo di UGC
      • ISteamUGC::AddRequiredTag aggiunge un'etichetta necessaria a una query di ricerca degli UGC in sospeso. La ricerca restituirà solo gli UGC con l'etichetta specificata.
      • ISteamUGC::AddExcludedTag aggiunge a una query di ricerca degli UGC in sospeso un'etichetta da escludere. La ricerca restituirà solo gli UGC che non presentano l'etichetta specificata.
      • ISteamUGC::AddRequiredKeyValueTag aggiunge a una query di ricerca degli UGC in sospeso un'etichetta obbligatoria chiave-valore. La ricerca restituirà unicamente gli oggetti del Workshop con chiave [param]pKey[/param] e valore [param]pValue[/param].
      • ISteamUGC::SetReturnOnlyIDs imposta una query di ricerca degli UGC in sospeso affinché restituisca solamente gli ID anziché tutti i dettagli. Questa chiamata è utile per quando non sono necessarie tutte le informazioni, come nel caso in cui tu voglia ottenere solo gli ID degli oggetti aggiunti ai preferiti da un utente.
      • ISteamUGC::SetReturnKeyValueTags imposta una query di ricerca degli UGC in sospeso affinché restituisca tutte le etichette chiave-valore degli oggetti.
      • ISteamUGC::SetReturnLongDescription imposta una query di ricerca degli UGC in sospeso affinché restituisca la descrizione completa degli oggetti.
      • ISteamUGC::SetReturnMetadata imposta una query di ricerca degli UGC in sospeso affinché restituisca i metadati degli oggetti specificati dallo sviluppatore.
      • ISteamUGC::SetReturnChildren imposta una query di ricerca degli UGC in sospeso affinché restituisca gli ID degli oggetti secondari degli oggetti.
      • ISteamUGC::SetReturnAdditionalPreviews imposta una query di ricerca degli UGC in sospeso affinché restituisca tutti i video e le immagini aggiuntivi allegati agli oggetti.
      • ISteamUGC::SetReturnTotalOnly imposta una query di ricerca degli UGC in sospeso affinché restituisca solamente il numero totale degli oggetti corrispondenti. -- Gli oggetti effettivi non verranno restituiti quando viene effettuata la chiamata a ISteamUGC::SteamUGCQueryCompleted_t.
      • ISteamUGC::SetLanguage imposta una query di ricerca degli UGC in sospeso affinché restituisca il titolo e la descrizione degli oggetti.
      • ISteamUGC::SetAllowCachedResponse imposta una query di ricerca degli UGC in sospeso affinché restituisca i risultati dalla cache per il periodo di tempo specificato.
  4. Invia la query di ricerca a Steam con ISteamUGC::SendQueryUGCRequest, che chiamerà a sua volta l'handler del risultato di chiamata ISteamUGC::SteamUGCQueryCompleted_t registrato nel passaggio 1.
  5. Nell'handler del risultato di chiamata ISteamUGC::SteamUGCQueryCompleted_t, effettua la chiamata a ISteamUGC::GetQueryUGCResult per recuperare i dettagli di ogni oggetto restituito.

  6. Puoi chiamare queste funzioni anche per recuperare ulteriori informazioni su ogni oggetto (alcuni di questi dati non vengono restituiti per impostazione predefinita, pertanto è necessario configurare la query di ricerca in modo appropriato):
  7. Effettua la chiamata a ISteamUGC::ReleaseQueryUGCRequest per liberare l'eventuale memoria allocata durante l'esecuzione della query o il recupero dei risultati.

Navigazione tra i risultati

Ciascuna query di ricerca restituisce fino a 50 risultati. Puoi visualizzare più risultati creando una query di ricerca che incrementi il valore del parametro unPage (che deve iniziare da 1).

Rilevamento del tempo di gioco

Per tenere traccia del tempo di gioco degli oggetti del Workshop, è sufficiente chiamare ISteamUGC::StartPlaytimeTracking con gli ID degli oggetti che desideri monitorare. Quando gli oggetti vengono rimossi dal gioco, effettua la chiamata a ISteamUGC::StopPlaytimeTracking con gli ID che non desideri più monitorare oppure chiama ISteamUGC::StopPlaytimeTrackingForAllItems per interrompere in una sola volta la rilevazione del tempo di gioco per tutti gli oggetti.
Quando l'applicazione viene chiusa, il rilevamento del tempo di gioco si interrompe automaticamente.

Nelle query di ricerca ISteamUGC::CreateQueryAllUGCRequest potrai inoltre ordinare gli oggetti secondo diverse metriche del tempo di gioco. Di seguito sono riportati i tipi di query di ricerca basati sul tempo di gioco a tua disposizione:

Eliminazione di un oggetto del Workshop

Per eliminare un oggetto del Workshop, puoi effettuare la chiamata a ISteamUGC::DeleteItem. Tieni presente che l'eliminazione non richiede conferma da parte dell'utente e non può essere annullata.

Esempio di Steamworks: integrazione di SpaceWar

L'Esempio di applicazione dell'API di Steamworks (SpaceWar) che viene fornito con l'SDK di Steamworks mostra un sottoinsieme dell'API ISteamUGC.
  • CSpaceWarClient::LoadWorkshopItem mostra la verifica del download e dell'installazione su disco di un oggetto del Workshop e la richiesta di informazioni su un oggetto del Workshop per mezzo di ISteamRemoteStorage::PublishedFileId_t.
  • CSpaceWarClient::LoadWorkshopItems mostra il recupero dell'elenco degli oggetti del Workshop a cui l'utente attuale si è sottoscritto per l'applicazione SpaceWar.
  • CSpaceWarClient::OnWorkshopItemInstalled mostra un handler di callback per ISteamUGC::ItemInstalled_t.

Contratto legale del Workshop

Per impostazione predefinita, gli oggetti del Workshop saranno nascosti finché l'autore non accetta il Contratto legale del Workshop di Steam. Per facilitare le operazioni necessarie all'autore per rendere l'oggetto pubblicamente visibile, procedi come segue:
  1. Accanto al pulsante per l'invio di un oggetto al Workshop, includi un testo simile a questo: "Inviando questo oggetto si accettano i termini di servizio del Workshop" (includendo il link).
  2. Quando l'utente invia un oggetto, apri una finestra del browser che lo reindirizzi alla pagina del Workshop di Steam dell'oggetto effettuando la chiamata a ISteamFriends::ActivateGameOverlayToWebPage con pchURL impostato su steam://url/CommunityFilePage/<PublishedFileId_t> e sostituendo <PublishedFileId_t> con l'ID dell'oggetto del Workshop.
In questo modo si ottiene il vantaggio di reindirizzare l'autore alla pagina del Workshop, in modo che possa visualizzare l'oggetto e procedere a eventuali configurazioni ulteriori. Inoltre, leggere e accettare il Contratto legale del Workshop di Steam sarà ancora più facile per l'utente.

API web

In aggiunta ai metodi elencati, esiste un'interfaccia di API web che offre funzionalità simili insieme a delle API di filtraggio basate sulla Comunità per elencare tutti i contenuti condivisi. Consulta la documentazione relativa all'interfaccia ISteamRemoteStorage nell'elenco delle API web.

Server di gioco dedicati

Anche i server di gioco possono scaricare e installare gli oggetti.
  • Per richiedere un oggetto del Workshop, è necessario che il server di gioco rilevi il valore PublishedFileId_t, che può essere fornito dai client di gioco o impostato dall'operatore del server. A questo punto, effettua la chiamata a ISteamUGC::DownloadItem per recuperare una copia temporanea dell'oggetto del Workshop.
  • Effettua quindi la chiamata a ISteamUGC::GetItemInstallInfo per recuperare le informazioni necessarie all'individuazione e all'uso dell'oggetto del Workshop.
  • Per ulteriori informazioni su questi metodi API, consulta la sezione Installazione dell'oggetto riportata in alto.

Integrazione con SteamCmd

Per creare e aggiornare gli oggetti del Workshop per scopi di test, insieme all'API ISteamUGC è possibile utilizzare lo strumento della riga di comando steamcmd.exe. Tale strumento deve essere utilizzato unicamente a scopi di test, in quanto richiede all'utente di inserire le proprie credenziali di Steam (operazione che preferiamo evitare).

Per creare un nuovo oggetto del Workshop di Steam utilizzando steamcmd.exe è necessario creare anzitutto un file VDF. Il formato VDF rappresenta un file di solo testo che deve includere le seguenti chiavi.
"workshopitem" { "appid" "480" "publishedfileid" "5674" "contentfolder" "D:\\Content\\workshopitem" "previewfile" "D:\\Content\\preview.jpg" "visibility" "0" "title" "Cappello verde di Team Fortress" "description" "Un cappello verde per Team Fortress" "changenote" "Versione 1.2" }

Note:
  • Le chiavi mappano ai vari metodi ISteamUGC::SetItem[...]. Per ulteriori dettagli, consulta la documentazione riportata in alto.
  • I valori riportati sono solo esempi e devono essere aggiornati in modo appropriato.
  • Per creare un nuovo oggetto è necessario impostare l'appid e non impostare publishedfileid (o impostarlo su 0).
  • Per aggiornare un oggetto esistente è necessario che sia appid che publishedfileid siano impostati.
  • Le coppie chiave/valore rimanenti devono essere incluse nel file VDF se la chiave necessita di aggiornamento.
Una volta creato il file VDF, puoi eseguire steamcmd.exe con il parametro file workshop_build_item <build config filename>. Ad esempio:
steamcmd.exe +login mioNomeUtente miaPassword +workshop_build_item workshop_green_hat.vdf +quit
Se il comando è riuscito, il valore publishedfileid nel file VDF viene automaticamente aggiornato per includere l'ID dell'oggetto del Workshop. In questo modo, le chiamate successive con steamcmd.exe per lo stesso file VDF risulteranno in un aggiornamento piuttosto che nella creazione di un nuovo oggetto.

Errori e registrazione

La maggior parte dei metodi ISteamUGC restituisce valori booleani. Per ulteriori informazioni su errori specifici, ci sono vari posti dove è possibile controllare:

Domande frequenti

D: Un'applicazione separata può pubblicare contenuti nel Workshop del mio gioco?

Sì. Con il Workshop dell'applicazione di base è possibile configurare un'applicazione separata contenente strumenti di modifica o pubblicazione per accettare i contenuti modificati.

Per procedere alla configurazione, vai alla sezione Configurazione del Workshop dell'applicazione di base e scorri verso il basso fino al termine della pagina. Immetti l'appID dell'applicazione separata nel campo nel campo "Permessi di pubblicazione dell'applicazione" e fai clic su "Aggiungi".

Una volta pubblicate le impostazioni di Steamworks, tramite l'applicazione per la modifica sarà possibile pubblicare contenuti nel Workshop dell'applicazione di base.