Il pacchetto di funzionalità Pass stagionali offre funzionalità out-of-the-box per creare sistemi di progressione a tempo limitato basati su missioni in cui i giocatori possono completare gli obiettivi delle missioni per guadagnare ricompense disponibili solo durante un periodo di tempo predefinito.Usando le opzioni di personalizzazione del pacchetto, puoi personalizzare tutti i pass stagionali per fornire nuovi contenuti al tuo pubblico, promuovere la ritenzione dei giocatori e generare entrate.

Ottieni il pacchetto
Il Creator Store è una scheda della Toolbox che puoi utilizzare per trovare tutte le risorse create da Roblox e dalla comunità Roblox per l'uso all'interno dei tuoi progetti, tra cui modello, immagine, Mesh, maglia, audio/suono, Collegare, video e font.Puoi usare il Creator Store per aggiungere uno o più asset direttamente in un'esperienza aperta, inclusi i pacchetti delle funzionalità!
Ogni pacchetto delle funzionalità richiede che il pacchetto delle funzionalità Core funzioni correttamente e il pacchetto Pass stagionali richiede il pacchetto delle funzionalità Missioni per definire le missioni di una stagione.Una volta che tutte e tre le risorse del pacchetto sono all'interno del tuo Inventario, reportorio, puoi riutilizzarle in qualsiasi progetto sulla Piattaforma.
Per ottenere i pacchetti dal tuo inventario nella tua esperienza:
Aggiungi il Core , Missioni e Pass stagionali pacchetti al tuo inventario all'interno di Studio facendo clic sul link Aggiungi all'inventario nel seguente set di componenti.
Nella barra degli strumenti, seleziona la scheda Visualizza.
Fai clic su Toolbox . La finestra Toolbox viene visualizzata.
Nella finestra Toolbox , fai clic sulla scheda Inventario . Le visualizzazioni di Modelli miei sono ordinate.
Fai clic sul Piastrella Feature Package Core , Missions Feature Package , quindi sul Piastrella Season Passes Feature Package .Tutte e tre le cartelle del pacchetto vengono visualizzate nella finestra Explorer .
Trascina le cartelle del pacchetto in ReplicatedStorage .
Consenti alle chiamate del deposito di dati di tracciare gli acquisti del giocatore con i pacchetti.
- Nella scheda Home della barra degli strumenti, seleziona Impostazioni di gioco .
- Passa alla scheda Sicurezza , quindi attiva Abilita l'accesso Studio ai servizi API .
Configura le dipendenze della missione
Perché le stagioni funzionino correttamente, devi aggiungere logica in modo che il pacchetto funzione Pass stagionali possa tracciare il progresso del giocatore e aggiornare i suoi componenti dell'interfaccia utente.Per semplicità, l'esempio seguente utilizza il pacchetto di funzionalità Missioni e chiama SeasonPasses.addProgressToSeason() dopo che i giocatori completano le missioni, ma puoi tracciare il progresso del giocatore come preferisci.Che tu definisca le missioni o meno, però, devi comunque aggiungere il pacchetto di funzionalità Missioni alla tua esperienza perché il codice Pass stagionali funzioni.
Ogni missione ha un insieme di compiti che devono essere completati per completare la missione, le opzioni di configurazione e i metadati di visualizzazione opzionali.Per una guida dettagliata su come configurare le missioni e le loro attività, vedi Definire le missioni.
Aggiungi XP dalle missioni alle stagioni
Questo esempio utilizza il pacchetto di funzionalità Missioni per definire le missioni che i giocatori possono completare per ottenere esperienza (XP) e progresso attraverso la stagione.Per assegnare ai giocatori XP quando completano una missione definita, devi aggiungere logica allo script del server ReplicatedStorage.Missions.Server.Examples.MissionsExample in modo che possa importare i dati del pass stagionale e ricompensare i giocatori in base al loro progresso.
local SeasonPasses = require(ReplicatedStorage.SeasonPasses.Server.SeasonPasses)
local function completeHandler(player: Player, missionId: Types.MissionId)
print(`{player} completed mission {missionId}`)
if missionId == "Walking" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking2" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking3" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Availability" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Manual" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Minutely" then
SeasonPasses.addProgressToSeason(player, 100)
end
end
Aggiungi le icone di ricompensa del livello stagionale
Oltre a concedere ai giocatori XP quando completano le missioni, il pacchetto funzionalità Pass stagionali utilizza il pacchetto funzionalità Missioni per definire livelli di ricompensa unici all'interno di una stagione.Se vuoi aggiungere un'icona sullo schermo per una ricompensa di livello che i giocatori possono guadagnare se hanno abbastanza XP, aggiungi un ID risorsa nella configurazione Missions per ogni ricompensa di livello di stagione.
Tier3Mission = {categoryId = "General",metadata = {displayName = "Tier 3 Mission",description = "Jump 10 times",visibleAfterComplete = true,visibleBeforeUnlocked = true,rewards = {{icon = 16826775737,displayName = "Item",},{icon = 106912146245070,displayName = "Season XP",},},},}
Configura le stagioni
Dopo aver configurato ogni missione che vuoi includere in una stagione, è il momento di configurare il pass stagionale stesso.In ReplicatedStorage.SeasonPasses.Configs.Season , c'è un esempio di configurazione di stagione per il tuo riferimento e i seguenti esempi di codice provengono da quel file.
Definisci pass
I pass ti consentono di addebitare ai giocatori una tassa Robux una sola volta per accedere alle missioni e alle potenziali ricompense di un Passaggi di giocostagionale.Dopo aver creato un pass con un ID risorsa unico, puoi impostare i dettagli del pass nel campo premiumTrack della tua stagione.Ad esempio, il seguente esempio di codice definisce un pass con un esempio di ID risorsa di 928192647 per rappresentare un Passaggi di giocostagionale, quindi dà al pass stagionale un nome di traccia di "Traccia premium".
premiumTrack = {pricing = {gamePassId = 928192647,},trackMetadata = {trackName = "Premium Track",},},
Configura i livelli e le ricompense
I livelli stagionali rappresentano le pietre miliari che i giocatori devono raggiungere per guadagnare ricompense durante una stagione.Per salire i livelli, i giocatori completano le missioni per guadagnare XP, e quando guadagnano abbastanza XP, passano al livello successivo e ricevono ricompense per il livello appena completato.I livelli hanno una proprietà upperBoundXP che imposta la soglia di XP necessaria per richiedere le ricompense per un livello.Ogni livello può offrire due tipi di ricompense:
- Gratis - Una ricompensa che i giocatori possono guadagnare senza acquistare il Passaggi di giocostagionale.
- Premium - Una ricompensa che i giocatori possono guadagnare solo acquistando il Passaggi di giocostagionale.
Per dimostrare, rivedi il seguente esempio di codice per una stagione con un livello che richiede 100 XP per guadagnare una ricompensa gratuita di lancia di ghiaccio e una ricompensa del scudo esplosivo premium.Il icon è l'assetID dell'immagine UI da mostrare per una ricompensa, e il displayName mostra un nome per la ricompensa.Nota che il displayName viene visualizzato nell'interfaccia utente, ma il rewardId è nascosto al giocatore e viene utilizzato principalmente per scopi di archiviazione dati.
tiers = {[1] = {upperBoundXP = 100,freeReward = {icon = 128181721602852,displayName = "Ice Lance",rewardId = "iceLance",},premiumReward = {icon = 95882371958115,displayName = "Blast Shield",rewardId = "blastShield",},},}
Mentre questo script è per scopi di illustrazione su come configurare una sola categoria alla volta, la maggior parte delle stagioni include più di una categoria.Mentre definisci più livelli e ricompense per una stagione, assicurati che ciascuno rewardId sia numerico e in ordine crescente in modo che i tuoi livelli vengano visualizzati nell'ordine che li definisci nella lista dei livelli.
Definisci i dettagli della stagione
Ora che hai un pass stagionale con livelli e ricompense, è il momento di definire i dettagli della tua stagione:
- title - Il nome della tua stagione.
- description - La descrizione della tua stagione.
- startUtc - L'inizio della stagione nel tempo universale coordinato.
- endUtc - La fine della stagione nel tempo universale coordinato.
- seasonId - Ti consente di tracciare l'XP che un giocatore guadagna durante la stagione data.
Il pacchetto utilizza startUtc e endUtc per visualizzare il conto alla rovescia della stagione.
startUtc = DateTime.fromUniversalTime(2024, 10, 01, 17, 0, 0),endUtc = DateTime.fromUniversalTime(2025, 2, 28, 17, 0, 0),title = "Season 1",description = "Into Space City",seasonId = "season1",
Integrare la logica del server
Dai un'occhiata a ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample, che mostra come il tuo server interagirà con il Pacchetto delle funzionalità dei pass stagionali .Lo snippet seguente è da quel script.
Devi principalmente creare una funzione handler per assegnare le ricompense richieste ai tuoi giocatori.Ad esempio, il seguente esempio di codice crea una funzione rewardClaimedHandlerFunction() che traccia quando i giocatori progrediscono al livello successivo, quindi li ricompensa con la sola ricompensa gratuita o con entrambe le ricompense gratuite e premium se hanno acquistato il Passaggi di giocostagionale.
Per i tuoi scopi, sostituisci la chiamata task.wait() con logica che consente ai giocatori di ottenere le ricompense che hanno dichiarato nella stagione.Questa funzione deve restituire un booleano: vero se il server ha concesso la ricompensa, falso se non lo ha fatto.
local function rewardClaimedHandlerFunction(_player: Player, _rewardId: Types.RewardId): boolean
task.wait(2)
return true
end
local function initializeRewardClaimedHandlers()
for tierId, tier in pairs(Season.tiers) do
if tier then
if tier.freeReward then
SeasonPasses.setRewardClaimedHandler(tier.freeReward.rewardId, rewardClaimedHandlerFunction)
end
if tier.premiumReward then
SeasonPasses.setRewardClaimedHandler(tier.premiumReward.rewardId, rewardClaimedHandlerFunction)
end
end
end
end
Configura le costanti
Le costanti per il pacchetto funzionale Core sono live in due punti:
- Le costanti condivise vivono in ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants .
- Costanti specifiche del pacchetto, in questo caso il pacchetto funzione Pass stagionali , vive in ReplicatedStorage.SeasonPasses.Configs.Constants .Le principali cose che potresti voler aggiustare per soddisfare i requisiti di progettazione della tua esperienza:
- AssetID del suono
- Durata dell'effetto di acquisto e colori delle particelle Inoltre, puoi trovare stringhe per la traduzione divise in una posizione: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .
Personalizza componenti dell'interfaccia utente
Modificando gli oggetti del pacchetto, come colori, caratteri e trasparenza, puoi regolare la presentazione visiva dei prompt del season pass.Tuttavia, tieni presente che se sposti uno qualsiasi degli oggetti intorno gerarchicamente, il codice non sarà in grado di trovarli e dovrai apportare delle modifiche al tuo codice.
Una stagione è composta dai seguenti componenti di alto livello che vengono aggiunti programmaticamente ai componenti dell'interfaccia utente Mission Feature Package :
- SeasonBottomFrame – Il frame che include informazioni su ogni traccia, un frame di scorrimento delle ricompense per i livelli e i dati dei livelli.
- SeasonDescriptionFrame - Il frame nell'intestazione che mostra il titolo della stagione, la descrizione e il conto alla rovescia.
- TierRewardFrame - Il frame che visualizza una ricompensa specifica per un livello.
- TierProgressFrame - Il frame che mostra il progresso che il giocatore ha fatto verso il livello attuale su cui sta lavorando.
- PurchaseFrame - Il frame che richiede al giocatore di acquistare un Passaggi di giocopremium.
- SeasonProgressFrame - Il frame che mostra la barra di avanzamento del Giocatoredurante l'intera stagione.
- RewardsButtonFrame - Il frame che aggiunge un pulsante che consente di mostrare le informazioni della stagione attraverso il SeasonBottomFrame .