O pacote de recursos Missões oferece funcionalidade fora da caixa para criar missões que os jogadores podem concluir para obter recompensas e progresso em sua experiência.Todas as missões devem ter um ID, categoria e uma lista de tarefas que os jogadores devem concluir para terminar a missão.No entanto, a lista de tarefas pode estar vazia, permitindo que as recompensas da missão sejam reivindicadas imediatamente.
Usando as opções de personalização do pacote, você pode personalizar todas as missões para atender aos seus requisitos de jogabilidade únicos, como:
- Alcançando retenção de D7 e D30 adicionando metas de médio a longo prazo e um senso de progresso.
- Aumentar engajamento aumentando ao expor os vários sistemas em seu jogo e recompensando os jogadores por interagirem com eles.

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.Uma vez que os recursos do pacote de recursos Núcleo e Missões estejam 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:
Adicione o Núcleo e Missões ao seu inventário dentro do Studio clicando no link Adicionar ao Inventário na seguinte série de componentes.
Na barra de ferramentas, selecione a aba Ver.
Clique em Caixa de Ferramentas . A janela Caixa de Ferramentas é exibida.
Na janela da Caixa de ferramentas , clique na aba Inventário . Os displays de Meus modelos são classificados.
Clique no mosaico tijolode Recursos de Destino, então no mosaico tijolode Recursos de Missão.Ambas as pastas de pacote são exibidas na janela Explorer .
Arraste as pastas do pacote para Armazenamento Replicado .
Definir missões
Cada missão completável inclui 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, todos os quais podem ser definidos dentro de ReplicatedStorage.Missions.Configs.Missions , com tipos exportados do script Types na mesma pasta.
Campos obrigatórios
Os seguintes campos são necessários para cada missão.
Qual o nome | Tipo | Descrição |
---|---|---|
missionId | string | A chave principal da tabela de Missões. Todas as missões são identificadas por sua própria string / cadeia / textoúnica. |
categoryId | string | Missões devem pertencer a uma categoria e são agrupadas por categoria na interface do usuário. |
tasks | table | Uma lista de tarefas que o jogador deve concluir para completar a missão. |
Desbloquear condições
Por padrão, as missões são desbloqueadas para os jogadores automaticamente e podem ser concluídas exatamente uma vez.No entanto, você pode usar as seguintes opções de configuração opcionais para alterar esse comportamento.
Qual o nome | Tipo | Descrição |
---|---|---|
prerequisites | table | Uma lista de outros IDs de missão que devem ser concluídos antes que a missão possa ser desbloqueada. |
manualOnly | bool | Desabilita o desbloqueamento automático da missão.Em vez disso, uma função deve ser chamada para desbloquear a missão.Quaisquer outras condições de desbloqueio ainda devem ser atendidas também. |
availableAfterUtc | bool | A missão não pode ser desbloqueada antes do tempo especificado em UTC. |
availableBeforeUtc | bool | A missão não pode ser desbloqueada após o tempo especificado em UTC. Se for desbloqueada, mas não concluída antes desse tempo, a missão falhará. |
repeatable | bool | A missão é desbloqueada novamente depois de concluída. |
repeatLimit | number | Se a missão for repetível, não pode ser repetida mais do que isso muitas vezes. |
repeatCooldownSeconds | number | Se a missão for repetível, há um atraso antes que ela seja desbloqueada. |
expireSeconds | number | Se a missão for desbloqueada e não for concluída dentro do número especificado de segundos, ela falhará em vez disso. |
expireCountOffline | bool | Se a missão tiver expireSeconds e expireCountOffline for definida como verdadeira, o tempo enquanto o jogador não estiver na experiência contará para a expiração da missão. |
Metadados
Missões têm metadados que especificam como elas serão exibidas na interface do usuário de Missões.Você pode usar os seguintes opcionais campos para personalizar seu metadado.
Qual o nome | Tipo | Descrição |
---|---|---|
displayName | string | Um nome para exibir para a missão na interface do usuário em vez do missionId. |
description | string | Um bloco de texto mais longo que fornece informações adicionais ou contexto sobre a missão. |
visibleAfterComplete | bool | Se definido como verdadeiro, a missão aparecerá na lista de missões mesmo depois de concluída, mas marcada como concluída. |
visibleAfterFailed | bool | Se definido como verdadeiro, a missão aparecerá na lista de missões mesmo depois de falhar, mas marcada como falha. |
visibleBeforeUnlocked | bool | Se definido como verdadeiro, a missão será visível, mas bloqueada na lista de missões antes de estar disponível para conclusão. |
invisibleWhileActive | bool | Se definido como verdadeiro, a missão será invisível mesmo enquanto ativamente em andamento. |
rewards | table | Uma lista de informações de exibição de recompensa.
|
Defina tarefas
Cada missão pode ter zero ou mais tarefas.Se uma missão tiver zero tarefas, ela pode ser reivindicada imediatamente após ser desbloqueada; se uma missão tiver uma ou mais tarefas, uma vez que as tarefas sejam concluídas, o jogador pode coletar quaisquer recompensas associadas à missão.Cada tarefa tem um taskId, que é a chave associada à tarefa para uma missão dada.
As tarefas vêm em dois tipos:
- Tarefas Cronometradas - Permite que você inicie e pare a tarefa em diferentes pontos no tempo.Um certo período de tempo deve passar enquanto o cronômetro da tarefa está em execução, então a tarefa está concluída.
- Contar tarefas - Permite que você adicione ou defina o progresso da tarefa. Quando o progresso chegar a um valor definido, a tarefa estará concluída.
Ambos os tipos de tarefa compartilham os seguintes campos:
Qual o nome | Tipo | Descrição |
---|---|---|
taskType | string | Especifica se o tipo de tarefa é contar ou cronometrar. |
counter | object | (Opcional) O contador que esta tarefa rastreia.Contadores são armazenamento persistente específico do jogador para um número ou um temporizador.Múltiplas tarefas podem rastrear um único contra-oferta; por exemplo, se mais de uma tarefa rastrear quantas moedas um jogador coletou, então todas podem compartilhar o mesmo contra-ofertade "moedas".Essas tarefas podem independentemente rastrear novas moedas coletadas, começando por zero, ou continuar contando a partir do valor do contador (todas as moedas já coletadas).
|
metadata | object | (Opcional) Informação sobre como a tarefa é exibida na interface do usuário.
|
callToAction | object | (Opcional) Um botão que gera uma função de chamada de volta.
|
Contar campos de tarefas
As tarefas contam têm um valor necessário. Quando o progresso da tarefa atinge esse valor, a tarefa está concluída.
Qual o nome | Tipo | Descrição |
---|---|---|
goalCount | number | (Opcional) O progresso necessário para concluir a tarefa. |
Campos de tarefas de tempo
As tarefas de tempo têm uma quantidade alvo de tempo gasto e são iniciadas e interrompidas. Quando a quantidade alvo de tempo é atingida, a tarefa é concluída.
Qual o nome | Tipo | Descrição |
---|---|---|
goalSeconds | number | O número de segundos que devem passar para concluir a tarefa. |
startImmediately | bool | Se a tarefa deve começar a contar o tempo assim que for desbloqueada, em vez de apenas depois que for iniciada. |
includesOfflineTime | bool | Se a tarefa deve incluir o tempo gasto enquanto o jogador não está ativamente na experiência. |
Configurar categorias
As categorias não precisam ser definidas explicitamente para serem usadas, pois a categoria para uma missão tem valores padrão que serão usados.No entanto, você pode configurar esses valores em ReplicatedStorage.Missions.Configs.Categories para adicionar efeitos adicionais à categoria.Categorias são identificadas por únicas CategoryIds, as mesmas referenciadas na configuração das missões.
Qual o nome | Tipo | Descrição |
---|---|---|
repeatDelaySeconds | number | (Opcional) Se configurar, todas as missões na categoria são redefinidas sempre que a quantidade de tempo especificada passa, e podem ser desbloqueadas, concluídas e suas recompensas reivindicadas novamente.Isso é separado de missões repetíveis, que podem ser repetidas dentro de uma repetição de categoria dada. |
Integar lógica do servidor
Dê uma olhada em ReplicatedStorage.Missions.Server.Examples.MissionsExample, que mostra como o seu servidor interagirá com o pacote de recursos Missões .
Você precisa principalmente conectar quatro coisas uma vez que arrasta o pacote de recursos Missões para sua experiência:
Defina missões na sua configuração de missões.
Adicione lógica à sua experiência para atualizar o progresso da tarefa ou os contadores a que o progresso está vinculado.
LEIAME-- Aumenta o progresso em uma missão Pular com uma tarefa de PulosMissions.addProgressToTask(player, "Jumping", "Jumps", 1)-- Inicia o cronômetro em uma missão BattlingTime com uma tarefa TimeInBattleMissions.startTimedTask(player, "BattlingTime", "TimeInBattle")-- Para o cronômetro em uma missão BattlingTime com uma tarefa TimeInBattleMissions.stopTimedTask(player, "BattlingTime", "TimeInBattle")-- Aumenta o progresso em todas as tarefas vinculadas ao contador de SaltosCounterSystem.addCounter(player, "Jumps", 1)-- Inicia o cronômetro em todas as tarefas agendadas vinculadas ao contador de tempo do TimeInBattleCounterSystem.startTimer(player, "TimeInBattle")-- Para o cronômetro em todas as tarefas agendadas vinculadas ao contador de tempo do TimeInBattleCounterSystem.stopTimer(player, "TimeInBattle")Defina os manipuladores de conclusão de missão e, opcionalmente, desbloqueie ou falhe os manipuladores.Use o manipulador de conclusão para conceder as recompensas da missão em sua experiência.
LEIAMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} completed mission {missionId}`)-- Dê ao jogador suas recompensas.endMissions.setCompletionHandler(missionId, completeHandler)Desbloqueie missões que não são desbloqueadas automaticamente.A lógica do pacote de recursos de Missões garante que todos os requisitos de missão sejam atendidos antes que a missão seja concluída e suas recompensas sejam colecionáveis.
LEIAMEMissions.unlockMission(player, "Manual")
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 Missões, vive em .
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 da sua interface de missões.Por exemplo, em ReplicatedStorage.Missions.Configs.Constants , você pode habilitar SingleTaskMode a exibir uma barra de progresso para uma tarefa diretamente na própria missão para missões que só têm uma única tarefa.
Além disso, se a sua experiência já possui uma interface existente que você gostaria de integrar com o pacote de recursos Missões, o cliente contém todas as funções necessárias para obter as informações sobre as missões de um jogador enviadas do servidor.