Pack de passes saisonniers

*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 passes de saison offre une fonctionnalité prête à l'emploi pour créer des systèmes de progression à durée limitée et basés sur des quêtes dans lesquels les joueurs peuvent terminer les objectifs de quête pour gagner des récompenses qui ne sont disponibles que pendant une période de temps prédéfinie.En utilisant les options de personnalisation du paquet, vous pouvez personnaliser tous les passes de saison pour fournir un nouveau contenu à votre audience, promouvoir la rétention des joueurs et générer des revenus.

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és noyau fonctionne correctement, et le paquet passes de saison nécessite que le paquet de fonctionnalités missions définit les missions d'une saison.Une fois que toutes les ressources de package 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 sur la case Feature Package Core , la case Missions Feature Package , puis la case Season Passes Feature Package .Tous les dossiers de paquetage s'affichent dans la fenêtre Explorateur .

  5. Faites glisser les dossiers de paquet dans ReplicatedStorage .

  6. Permettre aux appels de magasin de données de suivre les achats de joueurs avec les packages.

    1. Dans l'onglet Accueil de la barre d'outils, sélectionnez Paramètres de jeu .
    2. Accédez à l'onglet sécurité , puis activez activer l'accès au studio aux services d'API .

Configurer les dépendances de mission

Pour que les saisons fonctionnent correctement, vous devez ajouter de la logique afin que le paquet de fonctionnalité passes de saison puisse suivre la progression des joueurs et mettre à jour leurs composants d'interface utilisateur.Pour simplifier, l'exemple ci-dessous utilise le paquet de fonctionnalité missions et appelle après que les joueurs aient terminé leurs missions, mais vous pouvez suivre la progression des joueurs comme vous le souhaitez.Que vous définissiez des missions ou non, vous devez toutefois toujours ajouter le paquet de fonctionnalités missions à votre expérience pour que le code des passes de saison fonctionne.

Chaque mission a 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.Pour un guide détaillé sur la façon de configurer les missions et leurs tâches, voir Définir les missions.

Ajouter de l'EXP des missions aux saisons

Cet exemple utilise le paquet de fonctionnalités Missions pour définir des missions que les joueurs peuvent terminer pour gagner de l'expérience (XP) et progresser au cours de la saison.Pour récompenser les joueurs d'EXP lorsqu'ils terminent une mission définie, vous devez ajouter de la logique au script du serveur ReplicatedStorage.Missions.Server.Examples.MissionsExample afin qu'il puisse importer les données du passe de saison et récompenser les joueurs en fonction de leur progression.


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

Ajouter des icônes de récompense de niveau saison

En plus de donner aux joueurs de l'EXP lorsqu'ils terminent des missions, le package de fonctionnalité passes de saison utilise le package de fonctionnalité missions pour définir des niveaux de récompense uniques dans une saison.Si vous souhaitez ajouter une icône sur l'écran pour une récompense de niveau que les joueurs peuvent gagner s'ils ont suffisamment d'XP, ajoutez un ID d'actif dans la configuration Missions pour chaque récompense de niveau de saison.


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",
},
},
},
}

Configurer les saisons

Après avoir configuré chaque mission que vous souhaitez inclure dans une saison, il est temps de configurer le passe de saison lui-même.Dans ReplicatedStorage.SeasonPasses.Configs.Season , il y a un exemple de configuration de saison pour votre référence, et les échantillons de code suivants proviennent de ce fichier.

Définir des passes

Les passes vous permettent de facturer aux joueurs des frais Robux uniques pour accéder aux missions et aux récompenses potentielles d'un passe de saison.Après avoir créé un passe avec un ID de ressource unique, vous pouvez définir les détails du pas dans le champ premiumTrack de votre saison.Par exemple, l'exemple de code suivant définit un passe avec un exemple d'ID de ressource de 928192647 pour représenter un passe de saison, puis il donne au passe de saison un nom de piste de "piste premium".


premiumTrack = {
pricing = {
gamePassId = 928192647,
},
trackMetadata = {
trackName = "Premium Track",
},
},

Configurer les niveaux et les récompenses

Les niveaux saisonniers représentent les étapes que les joueurs doivent atteindre pour gagner des récompenses tout au long d'une saison.Pour monter dans les niveaux, les joueurs terminent des missions pour gagner de l'EXP, et lorsqu'ils gagnent suffisamment d'EXP, ils passent au niveau suivant et reçoivent des récompenses pour le niveau qu'ils viennent de terminer.Les niveaux ont une propriété upperBoundXP qui définit le seuil d'EXP nécessaire pour réclamer les récompenses pour un niveau.Chaque niveau peut offrir deux types de récompenses :

  • Gratuit - Une récompense que les joueurs peuvent gagner sans acheter le passe de saison.
  • Premium - Une récompense que les joueurs ne peuvent gagner que en achetant le passe de saison.

Pour démontrer, examinez l'échantillon de code suivant pour une saison avec un niveau qui nécessite 100 XP pour gagner une récompense de lance de glace gratuite et une récompense de bouclier anti-explosion premium.Le icon est l'ID de la ressource de l'image UI à afficher pour une récompense, et le displayName affiche un nom pour la récompense.Notez que l'affichage displayName s'affiche dans l'interface utilisateur, mais le rewardId est caché du joueur et est principalement utilisé à des fins de stockage de données.


tiers = {
[1] = {
upperBoundXP = 100,
freeReward = {
icon = 128181721602852,
displayName = "Ice Lance",
rewardId = "iceLance",
},
premiumReward = {
icon = 95882371958115,
displayName = "Blast Shield",
rewardId = "blastShield",
},
},
}

Bien que ce script soit à des fins d'illustration sur la façon de configurer une catégorie à la fois, la plupart des saisons incluent plus d'une catégorie.Lorsque vous définissez plusieurs niveaux et récompenses pour une saison, assurez-vous que chaque rewardId est numérique et dans l'ordre croissant afin que vos niveaux s'affichent dans l'ordre que vous les définissez dans la liste des niveaux.

Définir les détails de la saison

Maintenant que vous avez un passe de saison avec des niveaux et des récompenses, il est temps de définir les détails de votre saison :

  • title - Le nom de votre saison.
  • description - La description de votre saison.
  • startUtc - Le début de la saison en temps universel coordonné.
  • endUtc - La fin de la saison en temps universel coordonné.
  • seasonId - Vous permet de suivre l'EXP qu'un joueur gagne tout au long de la saison donnée.

Le paquet utilise startUtc et endUtc pour afficher le compte à rebours de la saison.


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",

Intégrer la logique du serveur

Jetez un coup d'œil à ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample , qui montre comment votre serveur interagira avec le package de fonctionnalités passes de saison .Le snippet ci-dessous provient de ce script.

Vous devez principalement créer une fonction de gestionnaire pour attribuer des récompenses réclamées à vos joueurs.Par exemple, l'exemple de code suivant crée une fonction rewardClaimedHandlerFunction() qui suit lorsque les joueurs progressent au niveau suivant, puis les récompense soit la récompense gratuite, soit les récompenses gratuite et premium si ils ont acheté le passe de saison.

Pour vos fins, remplacez l'appel task.wait() par de la logique qui permet aux joueurs d'obtenir les récompenses qu'ils ont réclamées dans la saison.Cette fonction doit retourner un booléen : vrai si le serveur a accordé la récompense, faux si ce n'est pas le cas.


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

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é passes de saison , vivent dans ReplicatedStorage.SeasonPasses.Configs.Constants.Les principales choses que vous pourriez vouloir ajuster pour répondre aux exigences de conception de votre expérience :
  • ID de ressources sonores
  • Durée de l'effet d'achat et couleurs de particules De plus, vous pouvez trouver des chaînes pour la traduction divisées en une seule position : ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .

Personnaliser les composants d'interface utilisateur

En modifiant les objets de paquet, tels que les couleurs, la police et la transparence, vous pouvez ajuster la présentation visuelle des invitations de passe de saison.Cependant, gardez à l'esprit que si vous déplacez l'un des objets autour hiérarchiquement, le code ne pourra pas les trouver et vous devrez faire des ajustements à votre code.

Une saison se compose des composants de haut niveau suivants, qui sont ajoutés programmatiquement aux composants de l'interface utilisateur Missions Feature Package :

  • SeasonBottomFrame – Le cadre qui inclut des informations sur chaque piste, un cadre de défilement des récompenses pour les niveaux et des données de niveau.
  • SeasonDescriptionFrame - Le cadre dans la tête qui affiche le titre de saison, la description et le compte à rebours.
  • TierRewardFrame - Le cadre qui affiche une récompense spécifique pour un niveau.
  • TierProgressFrame - Le cadre qui affiche les progrès que le joueur a réalisés envers le niveau actuel sur lequel il travaille.
  • PurchaseFrame - Le cadre qui invite le joueur à acheter un passe premium.
  • SeasonProgressFrame - Le cadre qui affiche la barre de progression du joueur tout au long de la saison.
  • RewardsButtonFrame - Le cadre qui ajoute un bouton qui permet d'afficher les informations de la saison via le SeasonBottomFrame .