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 de Pases de Temporada ofrece funcionalidad lista para usar para crear sistemas de progresión basados en misiones y de tiempo limitado 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. Usando las opciones de personalización del paquete, puedes personalizar todos los pases de temporada para ofrecer 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 activos que son creados por Roblox y la comunidad de Roblox para su uso dentro de tus proyectos, incluidos modelos, imágenes, mallas, audio, complementos, videos y activos de fuentes. Puedes usar la Tienda de Creadores para agregar uno o más activos directamente a un juego abierto, ¡incluidos los paquetes de características!

Cada paquete de características requiere el paquete de características Core para funcionar correctamente, y el paquete de Pases de Temporada requiere el paquete de características Missions para definir las misiones de una temporada. Una vez que los tres activos del paquete estén dentro de tu inventario, puedes reutilizarlos en cualquier proyecto en la plataforma.

Para obtener los paquetes de tu inventario a tu juego:

  1. Desde el menú Ventana de Studio o la barra de herramientas de la pestaña Inicio, abre la Caja de Herramientas.

  2. En la ventana de la Caja de Herramientas, haz clic en la pestaña Inventario. Se muestra la clasificación Mis Modelos.

    Ventana de la Caja de Herramientas de Studio con la pestaña Inventario resaltada.
  3. Haz clic en el mosaico Paquete de Características Core, el mosaico Paquete de Características Missions, y luego el mosaico Paquete de Características Pases de Temporada. Todas las carpetas de los tres paquetes se mostrarán en la ventana Explorador.

  4. Arrastra las carpetas de los paquetes a ReplicatedStorage.

  5. Permite que las llamadas al almacenamiento de datos rastreen las compras de los jugadores con los paquetes.

    1. Abre la ventana ArchivoConfiguraciones de Experiencia de Studio.
    2. Navega a la pestaña Seguridad, luego habilita Habilitar acceso de Studio a los servicios de API.

Configurar dependencias de misiones

Para que las temporadas funcionen correctamente, debes agregar lógica para que el paquete de características Pases de Temporada pueda rastrear el progreso del jugador y actualizar sus componentes de UI. Para simplificar, el ejemplo a continuación utiliza el paquete de características Missions y llama a SeasonPasses.addProgressToSeason() después de que los jugadores completen misiones, pero puedes rastrear el progreso del jugador como desees. Sin embargo, ya sea que definas misiones o no, aún debes agregar el paquete de características Missions a tu juego para que el código de Pases de Temporada funcione.

Las misiones tienen un conjunto de tareas que deben completarse para finalizar la misión, opciones de configuración y metadatos de visualización opcionales. Para una guía detallada sobre cómo configurar misiones y sus tareas, consulta Definir misiones.

Agregar XP de misiones a temporadas

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

local SeasonPasses = require(ReplicatedStorage.SeasonPasses.Server.SeasonPasses)
local function completeHandler(player: Player, missionId: Types.MissionId)
print(`{player} completó la misión {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

Agregar íconos de recompensa de nivel de temporada

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

Tier3Mission = {
categoryId = "General",
metadata = {
displayName = "Misión de Nivel 3",
description = "Salta 10 veces",
visibleAfterComplete = true,
visibleBeforeUnlocked = true,
rewards = {
{
icon = 16826775737,
displayName = "Ítem",
},
{
icon = 106912146245070,
displayName = "XP de Temporada",
},
},
},
}

Configurar temporadas

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

Definir pases

Los pases te permiten cobrar a los jugadores una tarifa única en 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 ID de activo de ejemplo 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 = "Pista Premium",
},
},

Configurar niveles y recompensas

Los niveles de temporada representan los hitos que los jugadores deben alcanzar para ganar recompensas a lo largo de una temporada. Para avanzar a los niveles, 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 de 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 ganar 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 gratuita y una recompensa de escudo de explosión premium. El icon es el ID de activo de la imagen de UI que se mostrará para una recompensa, y el displayName muestra un nombre para la recompensa. Ten en cuenta que el displayName se muestra en la UI, pero el rewardId está oculto al jugador y se utiliza principalmente para propósitos de almacenamiento de datos.

tiers = {
[1] = {
upperBoundXP = 100,
freeReward = {
icon = 128181721602852,
displayName = "Lanza de Hielo",
rewardId = "iceLance",
},
premiumReward = {
icon = 95882371958115,
displayName = "Escudo de Explosión",
rewardId = "blastShield",
},
},
}

Si bien este script es solo para ilustrar cómo configurar un nivel a la vez, la mayoría de las temporadas incluyen más de un nivel. A medida que defines 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.

Definir detalles de la 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 final de la temporada en tiempo universal coordinado.
  • seasonId - Te permite rastrear el XP que un jugador gana a lo largo de la temporada dada.

El paquete utiliza 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 = "Temporada 1",
description = "Hacia la Ciudad Espacial",
seasonId = "season1",

Integrar lógica del servidor

Echa un vistazo a ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample, que muestra cómo tu servidor interactuará con el Paquete de Características Pases de Temporada. El fragmento a continuación es de ese script.

Principalmente necesitas crear una función manejadora 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 les recompensa ya sea solo con la recompensa gratuita, o con ambas, la gratuita y la premium, si compraron el pase de temporada.

Para tus propósitos, reemplaza la llamada a 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 otorgó 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 Core 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 Pases de Temporada, viven en ReplicatedStorage.SeasonPasses.Configs.Constants. Las principales cosas que podrías querer ajustar para cumplir con los requisitos de diseño de tu juego:
  • IDs de activos de sonido
  • Duración del efecto de compra y colores de partículas Además, puedes encontrar cadenas para traducción desglosadas en un solo lugar: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

Personalizar componentes de UI

Al modificar los objetos del paquete, como colores, fuentes y transparencia, puedes ajustar la presentación visual de tus mensajes de pase de temporada. Sin embargo, ten en cuenta que si mueves alguno de los objetos jerárquicamente, el código no podrá encontrarlos, y necesitarás hacer ajustes en tu código.

Una temporada se compone de los siguientes componentes de alto nivel que se agregan programáticamente a los componentes de UI del Paquete de Características Missions:

  • SeasonBottomFrame – El marco que incluye información sobre cada pista, un marco de desplazamiento de las recompensas por niveles y datos de niveles.
  • SeasonDescriptionFrame - El marco en el encabezado que muestra el título de la temporada, la descripción y la cuenta regresiva.
  • 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 a lo largo de 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.
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.