Paquete de pases de temporada

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

El paquete de características pases de temporada ofrece funcionalidad de "out-of-the-box" para crear sistemas de progresión de tiempo limitado basados en misiones en los que los jugadores pueden completar objetivos de misiones para ganar recompensas que solo están disponibles durante un período de tiempo predefinido.Al usar las opciones de personalización del paquete, puedes personalizar todos los pases de temporada para entregar nuevo contenido a tu audiencia, promover la retención de jugadores y generar ingresos.

Obtener paquete

La tienda de creadores es una pestaña de la caja de herramientas que puedes usar para encontrar todos los recursos que se crean por Roblox y la comunidad de Roblox para su uso dentro de tus proyectos, incluidos aplicación de modelado, imágenes, mallas, sonido, audio, complemento, vídeo y fuentes.Puedes usar la Tienda de creadores para agregar uno o más recursos directamente a una experiencia abierta, incluidos paquetes de funciones!

Cada paquete de características requiere que el paquete de características Núcleo funcione correctamente, y el paquete de pases de temporada requiere que el paquete de características misiones defina las misiones de una temporada.Una vez que todos los recursos de paquete estén dentro de tu inventario, puedes reutilizarlos en cualquier proyecto en la plataforma.

Para obtener los paquetes de su inventario a su experiencia:

  1. En la barra de herramientas, seleccione la pestaña Ver.

  2. Haga clic en Caja de herramientas . Se muestra la ventana Caja de herramientas .

    Studio's View tab with the Toolbox tool highlighted.
  3. En la ventana Caja de herramientas , haga clic en la pestaña Inventario . Se muestran los ordenados Mis modelos .

    Studio's Toolbox window with the Inventory tab highlighted.
  4. Haga clic en el azulejo Núcleo del paquete de características , mosaicode características de misiones , luego en el azulejo paquete de características de pases de temporada .Todas las carpetas de mosaicose muestran en la ventana Explorador .

  5. Arrastra las carpetas del paquete a ReplicatedStorage .

  6. Permita las llamadas al almacén de datos para rastrear las compras de jugadores con los paquetes.

    1. En la pestaña Inicio de la barra de herramientas, seleccione Configuración del juego .
    2. Navegue hasta la pestaña Seguridad , luego habilite Habilitar el acceso de Studio a los servicios de API .

Configurar dependencias de misión

Para que las temporadas funcionen correctamente, debe agregar lógica para que el paquete de características Pases de temporada pueda rastrear el progreso del jugador y actualizar sus componentes de interfaz de usuario.Para simplificar, el ejemplo a continuación utiliza el paquete de características Misiones y llama SeasonPasses.addProgressToSeason(), pero puedes rastrear el progreso del jugador de la manera que desees.Sin embargo, ya sea que definas misiones o no, aún debes agregar el paquete de características Misiones a tu experiencia para que el código de pases de temporada funcione.

Cada misión tiene un conjunto de tareas que deben completarse para completar la misión, las opciones de configuración y los metadatos de visualización opcionales.Para una guía detallada sobre cómo configurar misiones y sus tareas, vea Definir misiones.

Añadir XP de misiones a temporadas

Este ejemplo utiliza el paquete de características Misiones para definir misiones que los jugadores pueden completar para ganar experiencia (XP) y progresar a través de la temporada.Para otorgar a los jugadores XP cuando completan una misión definida, debe agregar lógica al script del servidor ReplicatedStorage.Missions.Server.Examples.MissionsExample para que pueda importar datos de pase de temporada y recompensar a los jugadores de acuerdo con su progreso.


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

Añadir iconos de recompensa de nivel de temporada

Además de otorgar a los jugadores XP cuando completan misiones, el paquete de características Pases de temporada usa el paquete de características Misiones para definir niveles de recompensa únicos dentro de una temporada.Si desea agregar un icono en la pantalla para una recompensa de nivel que los jugadores pueden ganar si tienen suficiente XP, agregue un ID de activo en la configuración Missions para cada recompensa de nivel de temporada.


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

Configurar temporadas

Después de haber configurado cada misión que quieres incluir en una temporada, es hora de configurar el pase de temporada en sí.En ReplicatedStorage.SeasonPasses.Configs.Season , hay un ejemplo de una configuración de temporada para su referencia, y los siguientes ejemplos de código son de ese archivo.

Define pases

Los pases te permiten cobrar a los jugadores una tarifa única de Robux para acceder a las misiones y recompensas potenciales de un pase de temporada.Después de crear un pase con un ID de activo único, puedes establecer los detalles del pase en el campo premiumTrack de tu temporada.Por ejemplo, el siguiente ejemplo de código define un pase con un ejemplo de ID de activo de 928192647 para representar un pase de temporada, luego le da al pase de temporada un nombre de pista de "Pista premium".


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

Configurar niveles y recompensas

Los niveles de temporada representan los hitos que los jugadores deben cumplir para ganar recompensas a lo largo de una temporada.Para subir de nivel, los jugadores completan misiones para ganar XP, y cuando ganan suficiente XP, pasan al siguiente nivel y reciben recompensas por el nivel que acaban de completar.Los niveles tienen una propiedad upperBoundXP que establece el umbral de XP necesario para reclamar las recompensas para un nivel.Cada nivel puede ofrecer dos tipos de recompensas:

  • Gratis - Una recompensa que los jugadores pueden ganar sin comprar el pase de temporada.
  • Premium - Una recompensa que los jugadores solo pueden obtener comprando el pase de temporada.

Para demostrar, revisa el siguiente ejemplo de código para una temporada con un nivel que requiere 100 XP para ganar una recompensa de lanza de hielo gratis y una recompensa de escudo de explosión premium.El icon es el ID de activo de la imagen de la interfaz de usuario para mostrar por una recompensa, y el displayName muestra un nombre para la recompensa.Tenga en cuenta que el se muestra en la interfaz de usuario, pero el está oculto para el jugador y se usa principalmente para fines de almacenamiento de datos .


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

Aunque este script es para fines de ilustración sobre cómo configurar una categoría a la vez, la mayoría de las temporadas incluyen más de una categoría.Al definir múltiples niveles y recompensas para una temporada, asegúrate de que cada rewardId sea numérico y esté en orden ascendente para que tus niveles se muestren en el orden que los defines en la lista de niveles.

Define detalles de temporada

Ahora que tienes un pase de temporada con niveles y recompensas, es hora de definir los detalles de tu temporada:

  • title - El nombre de tu temporada.
  • description - La descripción de tu temporada.
  • startUtc - El comienzo de la temporada en tiempo universal coordinado.
  • endUtc - El fin de la temporada en tiempo universal coordinado.
  • seasonId - Te permite rastrear la XP que gana un jugador a lo largo de la temporada dada.

El paquete usa startUtc y endUtc para mostrar la cuenta regresiva de la temporada.


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

Integrar lógica del servidor

Echa un vistazo a ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample, que muestra cómo interactuará tu servidor con el paquete de funciones de pases de temporada .El fragmento siguiente es de ese script.

Necesitas principalmente crear una función de manejo para otorgar recompensas reclamadas a tus jugadores.Por ejemplo, el siguiente ejemplo de código crea una función rewardClaimedHandlerFunction() que rastrea cuándo los jugadores progresan al siguiente nivel, luego los recompensa con la recompensa gratis o con ambas recompensas gratis y premium si compraron el pase de temporada.

Para tus propósitos, reemplaza la llamada task.wait() con lógica que permita a los jugadores obtener las recompensas que han reclamado en la temporada.Esta función debe devolver un booleano: verdadero si el servidor concedió la recompensa, falso si no lo hizo.


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

Configurar constantes

Las constantes para el paquete de características Núcleo viven en dos lugares:

  • Las constantes compartidas viven en ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants .
  • Las constantes específicas del paquete, en este caso el paquete de características de pases de temporada , viven en ReplicatedStorage.SeasonPasses.Configs.Constants .Las principales cosas que quizás quieras ajustar para cumplir con los requisitos de diseño de tu experiencia:
  • ID de sonido
  • Duración del efecto de compra y colores de partículas Además, puedes encontrar cadenas para la traducción separadas en una ubicación: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .

Personalizar componentes de UI

Al modificar los objetos del paquete, como colores, fuente y transparencia, puedes ajustar la presentación visual de los mensajes de pase de temporada.Sin embargo, tenga en cuenta que si mueve cualquiera de los objetos alrededor jerárquicamente, el código no podrá encontrarlos y tendrá que hacer ajustes a su código.

Una temporada se compone de los siguientes componentes de alto nivel que se agregaron programáticamente a los componentes de la interfaz de usuario de Paquete de funciones de misiones :

  • SeasonBottomFrame – El marco que incluye información sobre cada pista, un marco desplazable de recompensas para niveles y datos de nivel.
  • SeasonDescriptionFrame - El marco en la cabecera que muestra el título de temporada, la descripción y el recuento regresivo.
  • TierRewardFrame - El marco que muestra una recompensa específica para un nivel.
  • TierProgressFrame - El marco que muestra el progreso que el jugador ha hecho hacia el nivel actual en el que está trabajando.
  • PurchaseFrame - El marco que solicita al jugador que compre un pase premium.
  • SeasonProgressFrame - El marco que muestra la barra de progreso del jugador durante toda la temporada.
  • RewardsButtonFrame - El marco que agrega un botón que permite que la información de la temporada se muestre a través del SeasonBottomFrame .