Le pack de fonctionnalités Missions offre une fonctionnalité prête à l'emploi pour créer des missions que les joueurs peuvent compléter pour obtenir des récompenses et progresser dans votre expérience. Toutes les missions doivent avoir un identifiant, une catégorie et une liste de tâches que les joueurs doivent compléter pour terminer la mission. Cependant, la liste des tâches peut être vide, permettant aux récompenses de la mission d'être réclamées immédiatement.
En utilisant les options de personnalisation du pack, vous pouvez personnaliser toutes les missions pour répondre à vos besoins de jeu uniques, tels que :
- Créer des missions qui intègrent de nouveaux joueurs dans votre expérience et améliorent la rétention D1.
- Cibler la rétention D7 et D30 en ajoutant des objectifs à moyen et long terme ainsi qu'un sentiment de progression.
- Augmenter l'engagement en mettant en avant les différents systèmes de votre jeu et en récompensant les joueurs pour les avoir utilisés.

Obtenir le pack
La Boutique du Créateur est un onglet du Toolbox que vous pouvez utiliser pour trouver tous les actifs créés par Roblox et la communauté Roblox pour une utilisation dans vos projets, y compris des modèles, images, maillages, audio, plugins, vidéos et actifs de police. Vous pouvez utiliser la Boutique du Créateur pour ajouter un ou plusieurs actifs directement dans une expérience ouverte, y compris des packs de fonctionnalités !
Chaque pack de fonctionnalités nécessite le pack de fonctionnalités Core pour fonctionner correctement. Une fois que les actifs des packs de fonctionnalités Core et Missions sont dans votre inventaire, vous pouvez les réutiliser dans n'importe quel projet sur la plateforme.
Pour obtenir les packs de votre inventaire dans votre expérience :
Ajoutez les packs Core et Missions à votre inventaire dans Studio en cliquant sur le lien Ajouter à l'inventaire dans le groupe de composants suivant.
Dans le menu Fenêtre de Studio ou dans la barre d'outils de l'onglet Accueil, ouvrez la Toolbox.
Dans la fenêtre Toolbox, cliquez sur l'onglet Inventaire. Le tri Mes modèles s'affiche.

Cliquez sur le carreau Pack de fonctionnalités Core, puis sur le carreau Pack de fonctionnalités Missions. Les deux dossiers de pack s'affichent dans la fenêtre Explorer.
Faites glisser les dossiers de pack dans ReplicatedStorage.
Définir des missions
Chaque mission complétable comprend un ensemble de tâches qui doivent être terminées pour achever la mission, des options de configuration et des métadonnées d'affichage optionnelles, le tout pouvant être défini dans ReplicatedStorage.Missions.Configs.Missions, avec des types exportés depuis le script Types dans le même dossier.
Champs requis
Les champs suivants sont requis pour chaque mission.
| Nom | Type | Description |
|---|---|---|
| missionId | string | La clé principale de la table Missions. Toutes les missions sont identifiées par leur propre chaîne unique. |
| categoryId | string | Les missions doivent appartenir à une catégorie et sont regroupées par catégorie dans l'interface utilisateur. |
| tasks | table | Une liste de tâches que le joueur doit terminer pour achever la mission. |
Conditions de déblocage
Par défaut, les missions sont débloquées pour les joueurs automatiquement et peuvent être complétées une seule fois. Cependant, vous pouvez utiliser les options de configuration optionnelles suivantes pour modifier ce comportement.
| Nom | Type | Description |
|---|---|---|
| prerequisites | table | Une liste d'autres missionIds qui doivent être complétées avant que la mission puisse être déverrouillée. |
| manualOnly | bool | Désactive le déblocage automatique de la mission. Au lieu de cela, une fonction doit être appelée pour déverrouiller la mission. Toutes les autres conditions de déblocage doivent également être remplies. |
| availableAfterUtc | bool | La mission ne peut pas être déverrouillée avant l'heure spécifiée en UTC. |
| availableBeforeUtc | bool | La mission ne peut pas être déverrouillée après l'heure spécifiée en UTC. Si elle est déverrouillée mais non complétée avant cette heure, la mission échouera. |
| repeatable | bool | La mission devient déverrouillée à nouveau après avoir été complétée. |
| repeatLimit | number | Si la mission est répétable, elle ne peut pas être répétée plus de ce nombre de fois. |
| repeatCooldownSeconds | number | Si la mission est répétable, il y a un délai avant qu'elle ne devienne déverrouillée. |
| expireSeconds | number | Si la mission est déverrouillée et non complétée dans le nombre spécifié de secondes, elle échouera à la place. |
| expireCountOffline | bool | Si la mission a expireSeconds et que expireCountOffline est défini sur true, le temps pendant que le joueur n'est pas réellement dans l'expérience sera compté pour l'expiration de la mission. |
Métadonnées
Les missions disposent de métadonnées qui spécifient comment elles seront affichées dans l'interface utilisateur des missions. Vous pouvez utiliser les champs optionnels suivants pour personnaliser ses métadonnées.
| Nom | Type | Description |
|---|---|---|
| displayName | string | Un nom à afficher pour la mission dans l'interface utilisateur au lieu de missionId. |
| description | string | Un bloc de texte plus long qui fournit des informations supplémentaires ou un contexte sur la mission. |
| visibleAfterComplete | bool | Si défini sur true, la mission apparaîtra dans la liste des missions même après avoir été complétée mais marquée comme complétée. |
| visibleAfterFailed | bool | Si défini sur true, la mission apparaîtra dans la liste des missions même après avoir échoué mais marquée comme ayant échoué. |
| visibleBeforeUnlocked | bool | Si défini sur true, la mission sera visible mais verrouillée dans la liste des missions avant d'être disponible pour être complétée. |
| invisibleWhileActive | bool | Si défini sur true, la mission sera invisible même lorsqu'elle est activement en cours. |
| rewards | table | Une liste d'informations d'affichage des récompenses.
|
Définir des tâches
Chaque mission peut avoir zéro ou plusieurs tâches. Si une mission a zéro tâche, elle est réclamable immédiatement après avoir été déverrouillée ; si une mission a une ou plusieurs tâches, une fois les tâches complétées, le joueur peut collecter toutes les récompenses associées à la mission. Chaque tâche a un taskId, qui est la clé associée à la tâche pour une mission donnée.
Les tâches se déclinent en deux types :
- Tâches chronométrées - Vous permettent de démarrer et d'arrêter la tâche à différents moments. Une certaine quantité de temps doit s'écouler pendant que le chronomètre de la tâche est en marche, puis la tâche est complète.
- Tâches de comptage - Vous permettent d'ajouter ou de définir la progression de la tâche. Lorsque la progression atteint une valeur définie, la tâche est complète.
Les deux types de tâches partagent les champs suivants :
| Nom | Type | Description |
|---|---|---|
| taskType | string | Spécifie si le type de tâche est de comptage ou chronométrée. |
| counter | object | (Optionnel) Le compteur que cette tâche suit. Les compteurs sont des mémoires persistantes spécifiques au joueur pour un nombre ou un chronomètre. Plusieurs tâches peuvent suivre un seul compteur ; par exemple, si plusieurs tâches suivent combien de pièces un joueur a collectées, elles peuvent toutes partager le même compteur "coins". Ces tâches peuvent suivre indépendamment de nouvelles pièces collectées, en partant de zéro, ou continuer à compter à partir de la valeur du compteur (toutes les pièces déjà collectées).
|
| metadata | object | (Optionnel) Informations sur la manière dont la tâche s'affiche dans l'interface utilisateur.
|
| callToAction | object | (Optionnel) Un bouton qui déclenche une fonction de rappel.
|
Champs des tâches de comptage
Les tâches de comptage ont une valeur requise. Lorsque la progression de la tâche atteint ce montant, la tâche est complète.
| Nom | Type | Description |
|---|---|---|
| goalCount | number | (Optionnel) La progression requise pour compléter la tâche. |
Champs des tâches chronométrées
Les tâches chronométrées ont un montant cible de temps passé et sont démarrées et arrêtées. Lorsque le montant cible de temps est atteint, la tâche est complète.
| Nom | Type | Description |
|---|---|---|
| goalSeconds | number | Le nombre de secondes qui doivent s'écouler pour compléter la tâche. |
| startImmediately | bool | Si la tâche doit commencer à compter le temps dès qu'elle est déverrouillée, plutôt qu'après avoir été démarrée. |
| includesOfflineTime | bool | Si la tâche doit inclure le temps passé pendant que le joueur n'est pas activement dans l'expérience. |
Configurer les catégories
Les catégories n'ont pas besoin d'être explicitement définies pour être utilisées, car la catégorie d'une mission a des valeurs par défaut qui seront utilisées. Cependant, vous pouvez configurer ces valeurs dans ReplicatedStorage.Missions.Configs.Categories pour ajouter des effets supplémentaires à la catégorie. Les catégories sont identifiées par des CategoryIds uniques, les mêmes que ceux référencés dans la configuration des missions.
| Nom | Type | Description |
|---|---|---|
| repeatDelaySeconds | number | (Optionnel) Si défini, toutes les missions de la catégorie sont réinitialisées chaque fois que le temps spécifié s'écoule, et peuvent être déverrouillées, complétées, et leurs récompenses peuvent à nouveau être réclamées. Ceci est distinct des missions répétables, qui sont répétables dans le cadre d'une répétition de catégorie donnée. |
Intégrer la logique serveur
Consultez ReplicatedStorage.Missions.Server.Examples.MissionsExample, qui montre comment votre serveur interagira avec le pack de fonctionnalités Missions.
Vous devez principalement relier quatre choses après avoir glissé le pack de fonctionnalités Missions dans votre expérience :
Définissez les missions dans votre configuration de missions.
Ajoutez de la logique à votre expérience pour mettre à jour la progression des tâches ou les compteurs auxquels la progression est liée.
README-- Augmente la progression sur une mission Saut avec une tâche SautMissions.addProgressToTask(player, "Saut", "Sauts", 1)-- Démarre le chronomètre sur une mission Temps de combat avec une tâche Temps sous le feuMissions.startTimedTask(player, "Temps de combat", "Temps sous le feu")-- Arrête le chronomètre sur une mission Temps de combat avec une tâche Temps sous le feuMissions.stopTimedTask(player, "Temps de combat", "Temps sous le feu")-- Augmente la progression sur toutes les tâches liées au compteur SautsCounterSystem.addCounter(player, "Sauts", 1)-- Démarre le chronomètre sur toutes les tâches chronométrées liées au compteur Temps sous le feuCounterSystem.startTimer(player, "Temps sous le feu")-- Arrête le chronomètre sur toutes les tâches chronométrées liées au compteur Temps sous le feuCounterSystem.stopTimer(player, "Temps sous le feu")Définissez des gestionnaires de complétion de mission, et éventuellement des gestionnaires de déblocage ou d'échec. Utilisez le gestionnaire de complétion pour récompenser les récompenses de la mission dans votre expérience.
READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} a complété la mission {missionId}`)-- Récompensez le joueur avec ses récompenses.endMissions.setCompletionHandler(missionId, completeHandler)Déverrouillez les missions qui ne sont pas déverrouillées automatiquement. La logique du pack de fonctionnalités Missions garantit que toutes les exigences de la mission sont remplies avant que la mission ne soit complète, et que ses récompenses soient récupérables.
READMEMissions.unlockMission(player, "Manuel")
Configurer les constantes
Les constantes pour le pack de fonctionnalités Core se trouvent à deux endroits :
Les constantes partagées se trouvent dans ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.
Les constantes spécifiques au pack, dans ce cas le pack de fonctionnalités Missions, se trouvent dans ReplicatedStorage.Missions.Configs.Constants.
De plus, vous pouvez trouver des chaînes pour la traduction regroupées en un seul endroit : ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.
Personnaliser les composants de l'interface utilisateur
En modifiant les objets du pack, tels que les couleurs, la police, et la transparence, vous pouvez ajuster la présentation visuelle de votre interface utilisateur de missions. Par exemple, dans ReplicatedStorage.Missions.Configs.Constants, vous pouvez activer SingleTaskMode pour afficher une barre de progression pour une tâche directement sur la mission pour les missions qui n'ont qu'une seule tâche.
De plus, si votre expérience a déjà une interface utilisateur existante que vous souhaitez intégrer au pack de fonctionnalités Missions, le script de module client ModuleScript MissionsClient contient toutes les fonctions nécessaires pour obtenir les informations sur les missions d'un joueur envoyées par le serveur.