Pack de missions

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Le paquet de fonctionnalités Missions offre une fonctionnalité prête à l'emploi pour créer des missions que les joueurs peuvent terminer pour obtenir des récompenses et progresser dans votre expérience.Toutes les missions doivent avoir un ID, une catégorie et une liste de tâches que les joueurs doivent accomplir pour terminer la mission.Cependant, la liste des tâches peut être vide, ce qui permet de réclamer immédiatement les récompenses de la mission.

En utilisant les options de personnalisation du paquet, vous pouvez personnaliser toutes les missions pour répondre à vos exigences de jeu uniques, telles que :

  • Créer des missions qui embarquent de nouveaux joueurs dans votre expérience et améliorent la rétention de D1.
  • Cibler la rétention de D7 et de D30 en ajoutant des objectifs à moyen et long terme et un sentiment de progression.
  • Augmenter l'engagement en surfiant sur les différents systèmes dans votre jeu et en récompensant les joueurs pour leur interaction avec eux.

Obtenir le paquet

La boutique des créateurs est une tab de la boîte à outils que vous pouvez utiliser pour trouver toutes les ressources créées par Roblox et la communauté Roblox pour une utilisation dans vos projets, y compris le modèlisation, l'image, le maillage, l'audio, le plugin, la vidéo et les ressources de police .Vous pouvez utiliser la boutique des créateurs pour ajouter une ou plusieurs ressources directement dans une expérience ouverte, y compris des packages de fonctionnalités !

Chaque paquet de fonctionnalités nécessite que le paquet de fonctionnalité noyau fonctionne correctement.Une fois que les ressources du paquet de fonctionnalités noyau et mission sont dans votre inventaire, vous pouvez les réutiliser dans n'importe quel projet sur la plateforme.

Pour obtenir les packages de votre inventaire dans votre expérience :

  1. Dans la barre d'outils, sélectionnez l'onglet Affichage.

  2. Cliquez sur boîte à outils . La fenêtre boîte à outils s'affiche.

    Studio's View tab with the Toolbox tool highlighted.
  3. Dans la fenêtre boîte à outils , cliquez sur l'onglet inventaire . Les affichages de tri mes modèles s'affichent.

    Studio's Toolbox window with the Inventory tab highlighted.
  4. Cliquez pavéla case Feature Package Core , puis sur la case Missions Feature Package .Les deux dossiers de paquet s'affichent dans la fenêtre Explorateur .

  5. Faites glisser les dossiers de paquet dans ReplicatedStorage .

Définir des missions

Chaque mission complétable comprend un ensemble de tâches qui doivent être terminées pour terminer la mission, les options de configuration et les métadonnées d'affichage facultatifs, tous lesquels peuvent être définis dans ReplicatedStorage.Missions.Configs.Missions , avec des types exportés du script Types dans le même dossier.

Champs obligatoires

Les champs suivants sont requis pour chaque mission.

NomTypeAvertissement
missionIdstringLa clé principale de la table des missions. Toutes les missions sont identifiées par leur propre chaîne unique.
categoryIdstringLes missions doivent appartenir à une catégorie et sont regroupées par catégorie dans l'interface utilisateur.
taskstableUne liste de tâches que le joueur doit terminer pour terminer la mission.

Déverrouiller les conditions

Par défaut, les missions sont débloquées automatiquement pour les joueurs et peuvent être terminées exactement une fois.Cependant, vous pouvez utiliser les options de configuration suivantes facultatives pour modifier ce comportement.

NomTypeAvertissement
prerequisitestableUne liste d'autres ID de mission qui doivent être terminés avant que la mission ne puisse être débloquée.
manualOnlyboolDésactive le déverrouillage automatique de la mission.Au lieu de cela, une fonction doit être appelée pour déverrouiller la mission.D'autres conditions de déverrouillage doivent également être respectées.
availableAfterUtcboolLa mission ne peut pas être débloquée avant le temps spécifié en UTC.
availableBeforeUtcboolLa mission ne peut pas être débloquée après le temps spécifié en UTC. Si elle est débloquée mais pas terminée avant ce temps, la mission échouera.
repeatableboolLa mission se débloque à nouveau après sa fin.
repeatLimitnumberSi la mission est répétable, elle ne peut pas être répétée plus de cette quantité de fois.
repeatCooldownSecondsnumberSi la mission est répétable, il y a un délai avant qu'elle ne soit déverrouillée.
expireSecondsnumberSi la mission n'est pas débloquée et n'est pas terminée dans le nombre de secondes spécifié, elle échouera à la place.
expireCountOfflineboolSi la mission a expireSeconds et expireCountOffline est réglée sur vrai, le temps pendant que le joueur n'est pas réellement dans l'expérience comptera pour l'expiration de la mission.

Métadonnées

Les missions ont des métadonnées qui spécifient comment elles seront affichées dans l'interface utilisateur des missions.Vous pouvez utiliser les champs suivants facultatifs pour personnaliser ses métadonnées.

NomTypeAvertissement
displayNamestringUn nom à afficher pour la mission dans l'interface utilisateur au lieu du missionId.
descriptionstringUn bloc de texte plus long qui fournit des informations supplémentaires ou un contexte sur la mission.
visibleAfterCompleteboolSi la valeur est définie sur vrai, la mission apparaîtra dans la liste des missions même après sa fin mais marquée comme terminée.
visibleAfterFailedboolSi la valeur est définie sur vrai, la mission apparaîtra dans la liste des missions même après son échec mais marquée comme échouée.
visibleBeforeUnlockedboolSi la valeur est définie sur vrai, la mission sera visible mais verrouillée dans la liste des missions avant d'être disponible pour la finition.
invisibleWhileActiveboolSi la valeur est définie sur vrai, la mission sera invisible même lorsqu'elle est active en cours.
rewardstableUne liste d'informations d'affichage des récompenses.
  • assetID ( number ) - L'ID d'image qui s'affiche dans l'interface utilisateur des missions sous les récompenses pour une quête. Cela est requis si une récompense est présente.
  • displayName ( string ) - Le nom qui s'affiche dans l'interface utilisateur des missions sous l'icône.

Définir des tâches

Chaque mission peut avoir zéro ou plus de tâches.Si une mission n'a aucune tâche, elle peut être réclamée immédiatement après son déverrouillage ; si une mission a une ou plusieurs tâches, une fois les tâches terminé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 présentent en deux types :

  • Tâches planifiées - Vous permet de démarrer et d'arrêter la tâche à des points différents dans le temps.Une certaine quantité de temps doit s'écouler pendant que le minuterie de la tâche est en cours d'exécution, puis la tâche est terminée.
  • Compter les tâches - Vous permet d'ajouter ou de définir la progression de la tâche. Lorsque la progression atteint une valeur définie, la tâche est terminée.

Les deux types de tâches partagent les champs suivants :

NomTypeAvertissement
taskTypestringSpécifie si le type de tâche est comptage ou tempéré.
counterobject(Facultatif) Le compteur que cette tâche suit.Les comptoirs sont un stockage persistant spécifique au joueur pour un nombre ou un minuterie.Plusieurs tâches peuvent suivre un seul contrer; par exemple, si plus d'une tâche suit le nombre de pièces qu'un joueur a collectées, elles peuvent toutes partager le même compteur de « pièces ».Ces tâches peuvent indépendamment suivre les nouvelles pièces collectées, à partir de zéro, ou poursuivre le comptage à partir de la valeur du compteur (toutes les pièces déjà collectées).
  • counterId ( string ) - L'ID du compteur à suivre. Utilisez cet ID pour obtenir ou définir la valeur du contrer.
  • continueFromCounter (Facultatif bool ) - Si la valeur est définie sur vrai, la progression de la tâche correspondra directement à la valeur du compteur plutôt qu'à la quantité qu'il a augmentée.
metadataobject(Facultatif) Informations sur la façon dont la tâche s'affiche dans l'interface utilisateur.
  • displayName ( string ) - Nom de la tâche, utilisé lorsqu'il est affiché dans l'interface utilisateur.
  • numericType (Facultatif string ) - comment le numéro de progression dans la tâche doit être affiché.
    • Fragment, ex.5/10 ou 5k/50k
    • Pourcentage, par exemple50% ou 10%
    • LongFraction, ex.5/10 ou 5000/50000
    • Booléen, ex.Incomplet
    • >
callToActionobject(Facultatif) Un bouton qui déclenche une fonction de rappel.
  • callback ( function ) - Fonction déclenchée par le bouton callToAction.
  • buttonText ( string ) - Le texte qui est affiché dans l'interface utilisateur des boutons.

Compter les champs de tâches

Les tâches comptées ont une valeur requise. Lorsque la progression de la tâche atteint ce montant, la tâche est terminée.

NomTypeAvertissement
goalCountnumber(Facultatif) La progression requise pour terminer la tâche.

Champs de tâches de temps

Les tâches de temps ont une quantité cible de temps dépensé, et sont démarrées et arrêtées. Lorsque la quantité cible de temps est atteinte, la tâche est terminée.

NomTypeAvertissement
goalSecondsnumberLe nombre de secondes qui doivent passer pour terminer la tâche.
startImmediatelyboolSi la tâche doit commencer à compter le temps dès qu'elle est débloquée, plutôt qu'après seulement son démarrage.
includesOfflineTimeboolSi 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 à être explicitement définies pour être utilisées, car la catégorie pour 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 un CategoryIds unique, les mêmes référencées dans la configuration des missions.

NomTypeAvertissement
repeatDelaySecondsnumber(Facultatif) Si cette option est configurer, toutes les missions de la catégorie sont réinitialisées chaque fois que la quantité de temps spécifiée passe, et peuvent être débloquées, terminées et leurs récompenses réclamées à nouveau.Cela est séparé des missions répétables, qui sont répétables dans une catégorie donnée.

Intégrer la logique du serveur

Jetez un coup d'œil à ReplicatedStorage.Missions.Server.Examples.MissionsExample, qui montre comment votre serveur interagira avec le paquet de fonctionnalités missions .

Vous devez principalement brancher quatre choses une fois que vous avez fait glisser le paquet de fonctionnalités missions dans votre expérience :

  1. Définir des missions dans votre configuration de missions.

  2. Ajoutez de la logique à votre expérience pour mettre à jour la progression des tâches ou les compteurs auxquels la progression est liée.

    LECTURE ME

    -- Augmente la progression d'une mission de saut en effectuant une tâche de saut
    Missions.addProgressToTask(player, "Jumping", "Jumps", 1)
    -- Démarre la minuterie sur une mission BattlingTime avec une tâche TimeInBattle
    Missions.startTimedTask(player, "BattlingTime", "TimeInBattle")
    -- Arrête le minuteur sur une mission BattlingTime avec une tâche TimeInBattle
    Missions.stopTimedTask(player, "BattlingTime", "TimeInBattle")
    -- Augmente le progrès de toutes les tâches liées au compteur de sauts
    CounterSystem.addCounter(player, "Jumps", 1)
    -- Démarre la minuterie sur toutes les tâches planifiées liées au compteur de temps en contrer
    CounterSystem.startTimer(player, "TimeInBattle")
    -- Arrête le minuteur sur toutes les tâches planifiées liées au compteur de temps en contrer
    CounterSystem.stopTimer(player, "TimeInBattle")
  3. Définir les gestionnaires de fin de mission et, facultativement, déverrouiller ou échouer les gestionnaires.Utilisez le traitement de fin pour attribuer les récompenses de la mission dans votre expérience.

    LECTURE ME

    local function completeHandler(player: Player, missionId: Types.MissionId)
    print(`{player} completed mission {missionId}`)
    -- Remettez au joueur ses récompenses.
    end
    Missions.setCompletionHandler(missionId, completeHandler)
  4. Débloquer des missions qui ne sont pas débloquées automatiquement.La logique du paquet de fonctionnalités Missions garantit que toutes les exigences de mission sont satisfaites avant la fin de la mission et que ses récompenses sont de collection.

    LECTURE ME

    Missions.unlockMission(player, "Manual")

Configurer les constantes

Les constantes pour le paquet de fonctionnalités noyau vivent dans deux endroits :

  • Les constantes partagées vivent dans ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants .

  • Les constantes spécifiques au paquet, dans ce cas le paquet de fonctionnalité missions , vivent dans ReplicatedStorage.Missions.Configs.Constants.

De plus, vous pouvez trouver des chaînes pour la traduction séparées en une seule position : ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .

Personnaliser les composants d'interface utilisateur

En modifiant les objets de package, tels que les couleurs, la police et la transparence, vous pouvez ajuster la présentation visuelle de l'interface utilisateur de vos 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 elle-même pour les missions qui n'ont qu'une seule tâche.

En outre, si votre expérience dispose déjà d'une interface utilisateur existante que vous souhaitez intégrer avec le paquet de fonctionnalités missions , le client contient toutes les fonctions nécessaires pour obtenir les informations sur les missions d'un joueur envoyées depuis le serveur.