Pacote de passes de temporada

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

O pacote de recursos Passes da Temporada oferece funcionalidades fora da caixa para criar sistemas de progressão de tempo limitado, baseados em missões, nos quais os jogadores podem completar objetivos de missão para ganhar recompensas que só estão disponíveis durante um período de tempo pré-definido.Usando as opções de personalização do pacote, você pode personalizar todos os passes de temporada para entregar novo conteúdo ao seu público, promover a retenção de jogadores e gerar receita.

Obtenha o pacote

A Loja do Criador é uma aba da Caixa de Ferramentas que você pode usar para encontrar todos os recursos que são feitos por Roblox e a comunidade Roblox para uso dentro de seus projetos, incluindo modelo, imagem, malha, áudio, plugin, vídeo e fontes.Você pode usar a Loja do Criador para adicionar um ou mais recursos diretamente em uma experiência aberta, incluindo pacotes de recursos!

Cada pacote de recursos requer que o pacote de recursos Núcleo funcione corretamente e o pacote de recursos Passes de Temporada requer que o pacote de recursos Missões defina as missões de uma temporada.Uma vez que todos os três recursos de pacote estão dentro do seu inventário, você pode reutilizá-los em qualquer projeto na plataforma.

Para obter os pacotes do seu inventário para a sua experiência:

  1. Na barra de ferramentas, selecione a aba Ver.

  2. Clique em Caixa de Ferramentas . A janela Caixa de Ferramentas é exibida.

    Studio's View tab with the Toolbox tool highlighted.
  3. Na janela da Caixa de ferramentas , clique na aba Inventário . Os displays de Meus modelos são classificados.

    Studio's Toolbox window with the Inventory tab highlighted.
  4. Clique no mosaico tijolode Recursos de Destino, tijolode Recursos de Missão, e então no tijolo Pacote de Recursos de Temporada .Todas as três pastas de pacote são exibidas na janela Explorer .

  5. Arraste as pastas do pacote para ReplicatedStorage .

  6. Permita que as chamadas de armazenamento de dados rastreiem as compras do jogador com os pacotes.

    1. Na aba Início da barra de ferramentas, selecione Configurações do Jogo .
    2. Navegue até a aba Segurança , então ative Habilitar Acesso ao Studio aos Serviços de API .

Configurar dependências de missão

Para que as temporadas funcionem corretamente, você deve adicionar lógica para que o pacote de recursos Passes de Temporada possa rastrear o progresso do jogador e atualizar seus componentes de interface.Para simplicidade, o exemplo abaixo usa o pacote de recursos Missões e chama SeasonPasses.addProgressToSeason(), mas você pode rastrear o progresso do jogador da maneira que desejar.Se você definir missões ou não, você ainda deve adicionar o pacote de recursos Missões à sua experiência para que o código Passes de Temporada funcione.

Cada missão tem um conjunto de tarefas que devem ser concluídas para completar a missão, opções de configuração e metadados de exibição opcionais.Para um guia detalhado sobre como configurar missões e suas tarefas, veja Definir missões.

Adicione XP de missões a temporadas

Este exemplo usa o pacote de recursos Missões para definir missões que os jogadores podem completar para ganhar experiência (XP) e progredir na temporada.Para conceder XP aos jogadores quando eles concluem uma missão definida, você deve adicionar lógica ao script do servidor ReplicatedStorage.Missions.Server.Examples.MissionsExample para que ele possa importar dados do passe de temporada e recompensar os jogadores de acordo com seu progresso.


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

Adicionar ícones de recompensa de nível de temporada

Além de conceder XP aos jogadores quando eles concluem missões, o pacote de recursos Passes de Temporada usa o pacote de recursos Missões para definir níveis de recompensa únicos dentro de uma temporada.Se você quiser adicionar um ícone na tela para uma recompensa de nível que os jogadores podem ganhar se tiverem XP suficiente, adicione um ID de recurso na configuração Missions para cada recompensa de nível 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

Depois de configurar cada missão que você deseja incluir em uma temporada, é hora de configurar o próprio passe de temporada.Em ReplicatedStorage.SeasonPasses.Configs.Season, há um exemplo de configuração de temporada para sua referência e os seguintes exemplos de código são daquele arquivo.

Definir passes

Passes permitem cobrar dos jogadores uma taxa única em Robux para acessar as missões e potenciais recompensas de um passe de temporada.Depois de criar um passe com um ID de recurso exclusivo, você pode definir os detalhes do passe no campo premiumTrack da sua temporada.Por exemplo, o seguinte código de exemplo define um passe com um exemplo de ID de recurso de 928192647 para representar um passe de temporada, então dá ao passe de temporada um nome de rua de "Pista Premium".


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

Configurar níveis e recompensas

Níveis de temporada representam as metas que os jogadores devem atingir para ganhar recompensas ao longo de uma temporada.Para escalar os níveis, os jogadores completam missões para ganhar XP, e quando ganham XP suficiente, eles se graduam para o próximo nível e recebem recompensas pelo nível que acabaram de completar.Níveis têm uma propriedade upperBoundXP que define o limite de XP necessário para reivindicar as recompensas para um nível.Cada nível pode oferecer dois tipos de recompensas:

  • Grátis - Uma recompensa que os jogadores podem ganhar sem comprar o passe de temporada.
  • Premium - Uma recompensa que os jogadores só podem obter ao comprar o passe de temporada.

Para demonstrar, revise o seguinte exemplo de código para uma temporada com um nível que requer 100 XP para ganhar uma recompensa de lance de gelo gratuito e uma recompensa de escudo de explosão premium.O icon é o ID de recurso da imagem da interface para exibir por uma recompensa, e o displayName exibe um nome para a recompensa.Observe que o displayName é exibido na interface do usuário, mas o rewardId é oculto do jogador e é usado principalmente para fins de armazenamento de dados.


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

Embora este script seja para fins de ilustração sobre como configurar uma categoria de uma vez, a maioria das temporadas inclui mais de uma categoria.Ao definir vários níveis e recompensas para uma temporada, certifique-se de que cada rewardId é numérico e em ordem crescente para que seus níveis sejam exibidos na ordem que você os define na lista de níveis.

Definir detalhes da temporada

Agora que você tem um passe de temporada com categorias e recompensas, é hora de definir os detalhes da sua temporada:

  • title - O nome da sua temporada.
  • description - A descrição de sua temporada.
  • startUtc - O início da temporada em tempo universal coordenado.
  • endUtc - O fim da temporada em tempo universal coordenado.
  • seasonId - Permite que você acompanhe a XP que um jogador ganha ao longo da temporada dada.

O pacote usa startUtc e endUtc para exibir a contagem regressiva da 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",

Integar lógica do servidor

Dê uma olhada em ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample, que mostra como o seu servidor interagirá com o Pacote de Recursos de Passes de Temporada .O trecho abaixo é desse script.

Você precisa principalmente criar uma função de manipulador para conceder recompensas reivindicadas aos seus jogadores.Por exemplo, o seguinte código de exemplo cria uma função rewardClaimedHandlerFunction() que rastreia quando os jogadores progridem para a próxima categoria e, em seguida, recompensa-os com apenas a recompensa gratuita ou com ambas as recompensas gratuitas e premium se compraram o passe de temporada.

Para seus propósitos, substitua a chamada task.wait() pela lógica que permite que os jogadores recebam as recompensas que eles reivindicaram na temporada.Essa função deve retornar um booleano: verdadeiro se o servidor concedeu a recompensa, falso se não o fez.


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

Constantes para o pacote de recursos Núcleo vivem em dois locais:

  • Constantes compartilhadas vivem em ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants .
  • Constantes específicas do pacote, neste caso o pacote de recursos Passes de Temporada , vive em ReplicatedStorage.SeasonPasses.Configs.Constants.As principais coisas que você pode querer ajustar para atender aos requisitos de design da sua experiência:
  • IDs de recurso de som
  • Duração do efeito de compra e cores de partículas Além disso, você pode encontrar strings para tradução divididas em um local: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .

Personalizar componentes de UI

Ao modificar os objetos do pacote, como cores, fontes e transparência, você pode ajustar a apresentação visual dos prompts do passe de temporada.No entanto, tenha em mente que se você mover qualquer um dos objetos ao redor hierarquicamente, o código não será capaz de encontrá-los e você precisará fazer ajustes em seu código.

Uma temporada é composta pelos seguintes componentes de alto nível que são adicionados programaticamente aos componentes da interface de usuário Pacote de Recursos de Missão :

  • SeasonBottomFrame – O quadro que inclui informações sobre cada faixa, um quadro de rolagem das recompensas para níveis e dados de nível.
  • SeasonDescriptionFrame - O quadro no cabeçalho que exibe o título da temporada, a descrição e o cronômetro.
  • TierRewardFrame - O quadro que exibe uma recompensa específica para um nível.
  • TierProgressFrame - O quadro que exibe o progresso que o jogador fez em direção à categoria atual em que está trabalhando.
  • PurchaseFrame - O quadro que solicita ao jogador a compra de um passe premium.
  • SeasonProgressFrame - O quadro que exibe a barra de progresso do jogador ao longo de toda a temporada.
  • RewardsButtonFrame - O quadro que adiciona um botão que permite que a informação da temporada seja exibida através do SeasonBottomFrame .