Il pacchetto di funzionalità Missioni offre funzionalità pronte all'uso per creare missioni che i giocatori possono completare per ottenere ricompense e progredire nel tuo gioco. Tutte le missioni devono avere un ID, una categoria e un elenco di compiti che i giocatori devono completare per terminare la missione. Tuttavia, l'elenco dei compiti può essere vuoto, consentendo di richiedere immediatamente le ricompense della missione.
Utilizzando le opzioni di personalizzazione del pacchetto, puoi personalizzare tutte le missioni per soddisfare i tuoi requisiti di gioco unici, come ad esempio:
- Creare missioni che introducono i nuovi giocatori nel tuo gioco e migliorano la retention D1.
- Mirare alla retention D7 e D30 aggiungendo obiettivi a medio e lungo termine e un senso di progressione.
- Aumentare il coinvolgimento mettendo in evidenza i vari sistemi nel tuo gioco e premiando i giocatori per interagire con essi.

Ottieni il pacchetto
Il Creator Store è una scheda della Toolbox che puoi utilizzare per trovare tutte le risorse create da Roblox e dalla comunità di Roblox per l'uso nei tuoi progetti, inclusi modelli, immagini, mesh, audio, plugin, video e risorse font. Puoi utilizzare il Creator Store per aggiungere una o più risorse direttamente in un gioco aperto, inclusi i pacchetti di funzionalità!
Ogni pacchetto di funzionalità richiede il pacchetto di funzionalità Core per funzionare correttamente. Una volta che le risorse del pacchetto di funzionalità Core e Missioni sono nel tuo inventario, puoi riutilizzarle in qualsiasi progetto sulla piattaforma.
Per ottenere i pacchetti dal tuo inventario nel tuo gioco:
Aggiungi il Core e le Missioni al tuo inventario all'interno di Studio facendo clic sul link Aggiungi all'Inventario nel seguente insieme di componenti.
Dal menu Finestra di Studio o dalla barra degli strumenti della scheda Home, apri la Toolbox.
Nella finestra Toolbox, fai clic sulla scheda Inventario. La visualizzazione I Miei Modelli viene mostrata.

Fai clic sulla tile Pacchetto di Funzionalità Core, quindi sulla tile Pacchetto di Funzionalità Missioni. Entrambe le cartelle del pacchetto vengono visualizzate nella finestra Explorer.
Trascina le cartelle del pacchetto in ReplicatedStorage.
Definisci le missioni
Ogni missione completabile include un insieme di compiti che devono essere completati per completare la missione, opzioni di configurazione e metadati di visualizzazione facoltativi, tutti i quali possono essere definiti all'interno di ReplicatedStorage.Missions.Configs.Missions, con tipi esportati dallo script Types nella stessa cartella.
Campi richiesti
I seguenti campi sono richiesti per ogni missione.
| Nome | Tipo | Descrizione |
|---|---|---|
| missionId | string | La chiave principale della tabella Missioni. Tutte le missioni sono identificate dalla loro stringa unica. |
| categoryId | string | Le missioni devono appartenere a una categoria e sono raggruppate per categoria nell'interfaccia utente. |
| tasks | table | Un elenco di compiti che il giocatore deve completare per completare la missione. |
Condizioni di sblocco
Per impostazione predefinita, le missioni vengono sbloccate automaticamente per i giocatori e possono essere completate esattamente una volta. Tuttavia, puoi utilizzare le seguenti opzioni di configurazione facoltative per modificare questo comportamento.
| Nome | Tipo | Descrizione |
|---|---|---|
| prerequisites | table | Un elenco di altri missionId che devono essere completati prima che la missione possa essere sbloccata. |
| manualOnly | bool | Disabilita lo sblocco automatico della missione. Invece, deve essere chiamata una funzione per sbloccare la missione. Qualsiasi altra condizione di sblocco deve comunque essere soddisfatta. |
| availableAfterUtc | bool | La missione non può essere sbloccata prima dell'orario specificato in UTC. |
| availableBeforeUtc | bool | La missione non può essere sbloccata dopo l'orario specificato in UTC. Se viene sbloccata ma non completata prima di questo orario, la missione verrà considerata fallita. |
| repeatable | bool | La missione viene sbloccata di nuovo dopo essere stata completata. |
| repeatLimit | number | Se la missione è ripetibile, non può essere ripetuta più di questo numero di volte. |
| repeatCooldownSeconds | number | Se la missione è ripetibile, c'è un ritardo prima che venga sbloccata. |
| expireSeconds | number | Se la missione è sbloccata e non completata entro il numero specificato di secondi, allora fallirà. |
| expireCountOffline | bool | Se la missione ha expireSeconds e expireCountOffline è impostato su true, il tempo in cui il giocatore non è effettivamente nel gioco verrà conteggiato per l'espirazione della missione. |
Metadati
Le missioni hanno metadati che specificano come verranno visualizzate nell'interfaccia utente delle Missioni. Puoi utilizzare i seguenti campi facoltativi per personalizzare i suoi metadati.
| Nome | Tipo | Descrizione |
|---|---|---|
| displayName | string | Un nome da visualizzare per la missione nell'interfaccia utente invece di missionId. |
| description | string | Un blocco di testo più lungo che fornisce informazioni o contesto aggiuntivi sulla missione. |
| visibleAfterComplete | bool | Se impostato su true, la missione apparirà nell'elenco delle missioni anche dopo essere stata completata, ma contrassegnata come completata. |
| visibleAfterFailed | bool | Se impostato su true, la missione apparirà nell'elenco delle missioni anche dopo essere fallita, ma contrassegnata come fallita. |
| visibleBeforeUnlocked | bool | Se impostato su true, la missione sarà visibile ma bloccata nell'elenco delle missioni prima di essere disponibile per il completamento. |
| invisibleWhileActive | bool | Se impostato su true, la missione sarà invisibile anche mentre è attivamente in corso. |
| rewards | table | Un elenco di informazioni sulla visualizzazione delle ricompense.
|
Definisci i compiti
Ogni missione può avere zero o più compiti. Se una missione ha zero compiti, è immediatamente richiedibile dopo essere stata sbloccata; se una missione ha uno o più compiti, una volta completati i compiti, il giocatore può raccogliere eventuali ricompense associate alla missione. Ogni compito ha un taskId, che è la chiave associata al compito per una data missione.
I compiti si dividono in due tipi:
- Compiti a Tempo - Ti consente di avviare e fermare il compito in diversi momenti. Deve passare un certo periodo di tempo mentre il timer del compito è in esecuzione, quindi il compito è completo.
- Compiti di Conteggio - Ti consente di aggiungere o impostare il progresso del compito. Quando il progresso raggiunge un valore impostato, il compito è completo.
Entrambi i tipi di compiti condividono i seguenti campi:
| Nome | Tipo | Descrizione |
|---|---|---|
| taskType | string | Specifica se il tipo di compito è di conteggio o a tempo. |
| counter | object | (Facoltativo) Il contatore che questo compito tiene traccia. I contatori sono archiviazione persistente specifica per il giocatore per un numero o un timer. Più compiti possono tenere traccia di un singolo contatore; ad esempio, se più di un compito tiene traccia di quanti gettoni un giocatore ha raccolto, possono tutti condividere lo stesso contatore "gettoni". Questi compiti possono tenere traccia in modo indipendente dei nuovi gettoni raccolti, partendo da zero, o continuare a contare dal valore del contatore (tutti i gettoni già raccolti).
|
| metadata | object | (Facoltativo) Informazioni su come il compito viene visualizzato nell'interfaccia utente.
|
| callToAction | object | (Facoltativo) Un pulsante che attiva una funzione di callback.
|
Campi dei compiti di conteggio
I compiti di conteggio hanno un valore richiesto. Quando il progresso del compito raggiunge questo importo, il compito è completo.
| Nome | Tipo | Descrizione |
|---|---|---|
| goalCount | number | (Facoltativo) Il progresso richiesto per completare il compito. |
Campi dei compiti a tempo
I compiti a tempo hanno un importo target di tempo trascorso e vengono avviati e fermati. Quando l'importo target di tempo è raggiunto, il compito è completo.
| Nome | Tipo | Descrizione |
|---|---|---|
| goalSeconds | number | Il numero di secondi che devono passare per completare il compito. |
| startImmediately | bool | Se il compito dovrebbe iniziare a contare il tempo non appena viene sbloccato, piuttosto che solo dopo essere stato avviato. |
| includesOfflineTime | bool | Se il compito dovrebbe includere il tempo trascorso mentre il giocatore non è attivamente nel gioco. |
Configura le categorie
Le categorie non devono essere definite esplicitamente per essere utilizzate, poiché la categoria per una missione ha valori predefiniti che verranno utilizzati. Tuttavia, puoi configurare questi valori in ReplicatedStorage.Missions.Configs.Categories per aggiungere effetti aggiuntivi alla categoria. Le categorie sono identificate da CategoryIds unici, gli stessi riferiti nella configurazione delle missioni.
| Nome | Tipo | Descrizione |
|---|---|---|
| repeatDelaySeconds | number | (Facoltativo) Se impostato, tutte le missioni nella categoria vengono ripristinate ogni volta che passa l'importo di tempo specificato e possono essere sbloccate, completate e le loro ricompense reclamate di nuovo. Questo è separato dalle missioni ripetibili, che sono ripetibili all'interno di un dato ripetizione di categoria. |
Integra la logica del server
Dai un'occhiata a ReplicatedStorage.Missions.Server.Examples.MissionsExample, che mostra come il tuo server interagirà con il pacchetto di funzionalità Missioni.
Devi principalmente collegare quattro cose una volta trascinato il pacchetto di funzionalità Missioni nel tuo gioco:
Definisci le missioni nella tua configurazione delle missioni.
Aggiungi logica al tuo gioco per aggiornare il progresso dei compiti o i contatori a cui è legato il progresso.
README-- Aumenta il progresso su una missione Salto con un compito SaltiMissions.addProgressToTask(player, "Salto", "Salti", 1)-- Avvia il timer su una missione Tempo di Combattimento con un compito TempoInBattagliaMissions.startTimedTask(player, "Tempo di Combattimento", "TempoInBattaglia")-- Ferma il timer su una missione Tempo di Combattimento con un compito TempoInBattagliaMissions.stopTimedTask(player, "Tempo di Combattimento", "TempoInBattaglia")-- Aumenta il progresso su tutti i compiti legati al contatore SaltiCounterSystem.addCounter(player, "Salti", 1)-- Avvia il timer su tutti i compiti a tempo legati al contatore TempoInBattagliaCounterSystem.startTimer(player, "TempoInBattaglia")-- Ferma il timer su tutti i compiti a tempo legati al contatore TempoInBattagliaCounterSystem.stopTimer(player, "TempoInBattaglia")Imposta i gestori di completamento delle missioni e, facoltativamente, i gestori di sblocco o fallimento. Usa il gestore di completamento per premiare i ricompensi dalla missione nel tuo gioco.
READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} ha completato la missione {missionId}`)-- Premia il giocatore con le loro ricompense.endMissions.setCompletionHandler(missionId, completeHandler)Sblocca le missioni che non vengono sbloccate automaticamente. La logica del pacchetto di funzionalità Missioni garantisce che tutti i requisiti della missione siano soddisfatti prima che la missione sia completata e le sue ricompense siano collezionabili.
READMEMissions.unlockMission(player, "Manuale")
Configura le costanti
Le costanti per il pacchetto di funzionalità Core si trovano in due posti:
Le costanti condivise si trovano in ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.
Le costanti specifiche del pacchetto, in questo caso il pacchetto di funzionalità Missioni, si trovano in ReplicatedStorage.Missions.Configs.Constants.
Inoltre, puoi trovare le stringhe per la traduzione suddivise in un'unica posizione: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.
Personalizza i componenti dell'interfaccia utente
Modificando gli oggetti del pacchetto, come colori, font e trasparenza, puoi regolare la presentazione visiva della tua interfaccia utente delle missioni. Ad esempio, in ReplicatedStorage.Missions.Configs.Constants, puoi abilitare SingleTaskMode per visualizzare una barra di progresso per un compito direttamente sulla missione stessa per le missioni che hanno solo un singolo compito.
Inoltre, se il tuo gioco ha già un'interfaccia utente esistente che desideri integrare con il pacchetto di funzionalità Missioni, il ModuleScript client MissionsClient contiene tutte le funzioni necessarie per ottenere le informazioni sulle missioni di un giocatore inviate dal server.