Pack de passes de saison

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

Le pack de fonctionnalités Passes de Saison offre une fonctionnalité prête à l'emploi pour créer des systèmes de progression basés sur des quêtes et limités dans le temps, dans lesquels les joueurs peuvent accomplir des 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 pack, vous pouvez personnaliser tous les passes de saison pour offrir un nouveau contenu à votre public, promouvoir la rétention des joueurs et générer des revenus.

Obtenir le pack

Le Creator Store est un onglet de la 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, des images, des maillages, des audio, des plugins, des vidéos et des polices. Vous pouvez utiliser le Creator Store pour ajouter un ou plusieurs actifs directement dans un jeu ouvert, y compris des packs de fonctionnalités !

Chaque pack de fonctionnalités nécessite le pack de fonctionnalités Core pour fonctionner correctement, et le pack Passes de Saison nécessite le pack de fonctionnalités Missions pour définir les missions d'une saison. Une fois que tous les trois actifs de pack 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 jeu :

  1. Dans le menu Fenêtre de Studio ou la barre d'outils de l'onglet Accueil, ouvrez la Toolbox.

  2. Dans la fenêtre Toolbox, cliquez sur l'onglet Inventaire. Le tri Mes Modèles s'affiche.

    Fenêtre Toolbox de Studio avec l'onglet Inventaire mis en surbrillance.
  3. Cliquez sur le carreau Pack de fonctionnalités Core, le carreau Pack de fonctionnalités Missions, puis le carreau Pack de fonctionnalités Passes de Saison. Tous les trois dossiers de pack s'affichent dans la fenêtre Explorer.

  4. Faites glisser les dossiers de pack dans ReplicatedStorage.

  5. Autorisez les appels de magasin de données à suivre les achats des joueurs avec les packs.

    1. Ouvrez la fenêtre FichierParamètres de l'expérience de Studio.
    2. Accédez à l'onglet Sécurité, puis activez Activer l'accès Studio aux services API.

Configurer les dépendances de mission

Pour que les saisons fonctionnent correctement, vous devez ajouter une logique afin que le pack de fonctionnalités Passes de Saison puisse suivre la progression des joueurs et mettre à jour ses composants d'interface utilisateur. Pour simplifier, l'exemple ci-dessous utilise le pack de fonctionnalités Missions et appelle SeasonPasses.addProgressToSeason() après que les joueurs aient complété des missions, mais vous pouvez suivre la progression des joueurs comme vous le souhaitez. Que vous définissiez des missions ou non, vous devez tout de même ajouter le pack de fonctionnalités Missions à votre jeu pour que le code Passes de Saison fonctionne.

Les missions ont chacune un ensemble de tâches qui doivent être terminées pour compléter la mission, des options de configuration et des métadonnées d'affichage optionnelles. Pour un guide approfondi sur la façon de configurer les missions et leurs tâches, consultez Définir les missions.

Ajouter des XP des missions aux saisons

Cet exemple utilise le pack de fonctionnalités Missions pour définir des missions que les joueurs peuvent accomplir pour gagner de l'expérience (XP) et progresser dans la saison. Pour récompenser les joueurs avec des XP lorsqu'ils complètent une mission définie, vous devez ajouter une logique au script serveur ReplicatedStorage.Missions.Server.Examples.MissionsExample afin qu'il puisse importer les données de la 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} a complété la 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 de saison

En plus de donner aux joueurs des XP lorsqu'ils complètent des missions, le pack de fonctionnalités Passes de Saison utilise le pack de fonctionnalités Missions pour définir des niveaux de récompense uniques au sein d'une saison. Si vous souhaitez ajouter une icône à 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 = "Mission de Niveau 3",
description = "Sautez 10 fois",
visibleAfterComplete = true,
visibleBeforeUnlocked = true,
rewards = {
{
icon = 16826775737,
displayName = "Objet",
},
{
icon = 106912146245070,
displayName = "XP de Saison",
},
},
},
}

Configurer les saisons

Après avoir configuré chaque mission que vous souhaitez inclure dans une saison, il est temps de configurer la passe de saison elle-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 les passes

Passes vous permettent de facturer aux joueurs des frais uniques en Robux pour accéder aux missions et aux récompenses potentielles d'une passe de saison. Après avoir créé une passe avec un ID d'actif unique, vous pouvez définir les détails de la passe dans le champ premiumTrack de votre saison. Par exemple, l'échantillon de code suivant définit une passe avec un ID d'actif d'exemple de 928192647 pour représenter une passe de saison, puis il donne à la passe de saison un nom de piste de "Piste Premium".

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

Configurer les niveaux et les récompenses

Les niveaux de saison représentent les jalons que les joueurs doivent atteindre pour gagner des récompenses tout au long d'une saison. Pour gravir les niveaux, les joueurs complètent des missions pour gagner des XP, et lorsqu'ils gagnent suffisamment d'XP, ils passent au niveau suivant et reçoivent des récompenses pour le niveau qu'ils viennent de compléter. Les niveaux ont une propriété upperBoundXP qui définit le seuil d'XP nécessaire pour réclamer les récompenses d'un niveau. Chaque niveau peut offrir deux types de récompenses :

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

Pour illustrer, consultez 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 d'explosion premium. L'icon est l'ID d'actif de l'image UI à afficher pour une récompense, et le displayName affiche un nom pour la récompense. Notez que le displayName s'affiche dans l'UI, mais le rewardId est caché du joueur et est principalement utilisé à des fins de magasin de données.

tiers = {
[1] = {
upperBoundXP = 100,
freeReward = {
icon = 128181721602852,
displayName = "Lance de Glace",
rewardId = "iceLance",
},
premiumReward = {
icon = 95882371958115,
displayName = "Bouclier d'Explosion",
rewardId = "blastShield",
},
},
}

Bien que ce script soit à des fins d'illustration sur la façon de configurer un niveau à la fois, la plupart des saisons incluent plus d'un niveau. Lorsque vous définissez plusieurs niveaux et récompenses pour une saison, assurez-vous que chaque rewardId est numérique et dans un 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 une 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'XP qu'un joueur gagne tout au long de la saison donnée.

Le pack 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 = "Saison 1",
description = "Dans la Ville de l'Espace",
seasonId = "season1",

Intégrer la logique serveur

Jetez un œil à ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample, qui montre comment votre serveur interagira avec le Pack de Fonctionnalités Passes de Saison. L'extrait ci-dessous provient de ce script.

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

Pour vos besoins, remplacez l'appel task.wait() par une 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 sinon.

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 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 Passes de Saison, se trouvent dans ReplicatedStorage.SeasonPasses.Configs.Constants. Les principales choses que vous pourriez vouloir ajuster pour répondre aux exigences de conception de votre jeu :
  • IDs d'actifs sonores
  • Durée de l'effet d'achat et couleurs des particules De plus, vous pouvez trouver des chaînes pour la traduction regroupées en un seul endroit : ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

Personnaliser les composants UI

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

Une saison est composée des composants de haut niveau suivants qui sont ajoutés de manière programmatique aux composants UI du Pack de Fonctionnalités Missions :

  • SeasonBottomFrame – Le cadre qui inclut des informations sur chaque piste, un cadre défilant des récompenses pour les niveaux, et des données de niveau.
  • SeasonDescriptionFrame - Le cadre dans l'en-tête qui affiche le titre de la 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 la progression que le joueur a réalisée vers le niveau actuel sur lequel il travaille.
  • PurchaseFrame - Le cadre qui invite le joueur à acheter une passe premium.
  • SeasonProgressFrame - Le cadre qui affiche la barre de progression du joueur tout au long de la saison entière.
  • RewardsButtonFrame - Le cadre qui ajoute un bouton permettant d'afficher les informations de la saison via le SeasonBottomFrame.
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.