Evacuação da Estação de Pesquisa
Construa uma estação de pesquisa em emergência onde jogadores precisam operar equipamentos, atravessar áreas bloqueadas e coordenar a evacuação enquanto um NPC percorre a instalação.
- Nível
- médio
- Categoria
- Programação
- Tecnologias
- Roblox Studio, RemoteEvents, NPCs, PathfindingService, ScreenGui
O problema
Uma estação de pesquisa isolada sofreu uma falha no sistema de energia. Algumas portas foram bloqueadas, equipamentos precisam ser reativados e a equipe da estação precisa chegar ao ponto de evacuação.
O jogador assume o papel de um dos membros da equipe. Para escapar, será necessário explorar a instalação, utilizar ferramentas, interagir com equipamentos e acompanhar o estado da evacuação através de uma interface na tela.
Ao mesmo tempo, um técnico controlado pelo jogo precisa atravessar a estação até uma área segura, desviando dos obstáculos existentes no caminho.
A experiência
Crie uma instalação compacta formada por algumas salas conectadas, como uma sala de controle, laboratório, depósito e área de evacuação.
O cenário deve conter obstáculos físicos e objetos interativos suficientes para fazer o jogador tomar algumas decisões durante a exploração. Não é necessário criar um mapa enorme: concentre o desafio em uma instalação pequena, mas com funções diferentes em cada área.
- Sala de controle: contém o equipamento responsável por iniciar a evacuação.
- Laboratório: possui objetos que bloqueiam parcialmente a passagem.
- Depósito: contém uma ferramenta necessária para interagir com determinados equipamentos.
- Área de evacuação: representa o objetivo final da experiência.
O painel de emergência
Crie um HUD de emergência utilizando ScreenGui para informar o jogador sobre o estado atual da estação.
O painel deve apresentar informações relevantes para a partida, como:
- Estado da evacuação.
- Objetivo atual do jogador.
- Estado do sistema de energia.
- Situação do técnico.
A interface deve mudar conforme os acontecimentos do jogo. Por exemplo, enquanto a energia estiver desligada, o jogador deve receber uma instrução relacionada à reativação do sistema. Depois disso, o objetivo pode mudar para a evacuação.
O sistema de emergência
O equipamento principal da sala de controle deve iniciar o processo de evacuação quando utilizado corretamente.
Parte da lógica deve acontecer no servidor, garantindo que o estado real da estação não dependa apenas do cliente de cada jogador.
O cliente deve ser responsável principalmente pela interface e pelas entradas do jogador. Quando uma ação precisar alterar o estado compartilhado da experiência, utilize RemoteEvents para solicitar essa mudança ao servidor.
Quando for necessário que o cliente solicite uma informação e receba uma resposta diretamente do servidor, utilize um RemoteFunction.
Uma regra importante
O jogador não deve conseguir simplesmente alterar localmente o estado da evacuação para concluir o objetivo. O servidor deve validar as ações importantes e manter o estado compartilhado da experiência.
A ferramenta da equipe
Crie uma Tool que represente um equipamento utilizado pelos pesquisadores, como um dispositivo de manutenção.
O jogador deverá encontrar ou receber essa ferramenta e utilizá-la em determinados pontos da instalação.
A ferramenta deve reagir ao ato de equipar, desequipar e utilizar o item. A interação pode ser simples, mas precisa deixar claro para o jogador quando o equipamento está disponível para uso.
Obstáculos em movimento
Use Constraints para adicionar alguns elementos físicos ao cenário.
Por exemplo, uma porta pesada pode utilizar uma HingeConstraint, enquanto um equipamento suspenso pode utilizar RopeConstraint. Objetos fixados uns aos outros podem utilizar WeldConstraint.
O objetivo não é construir uma simulação física complexa. Utilize essas ferramentas para fazer o ambiente parecer mais funcional e criar obstáculos que realmente influenciem o deslocamento dos personagens.
O técnico
Um NPC representa outro funcionário da estação. Ele deve possuir um personagem com Humanoid e apresentar um comportamento simples baseado em estados.
Durante a experiência, o técnico pode alternar entre estados como:
- Aguardando: permanece em sua posição inicial.
- Seguindo para a saída: começa a atravessar a instalação.
- Desviado: reage quando encontra uma situação que impede sua passagem.
- Evacuado: chega ao destino final e encerra seu objetivo.
O NPC deve utilizar PathfindingService para encontrar um caminho até a área de evacuação, contornando paredes e obstáculos do mapa.
Não é necessário criar inteligência artificial complexa. O desafio é fazer um personagem controlado por script perceber o destino, calcular um caminho e se movimentar de maneira confiável até ele.
Quando o jogador entra em ação
Utilize UserInputService para criar pelo menos uma interação controlada diretamente pelo teclado ou mouse.
Essa entrada pode servir para uma ação específica relacionada ao equipamento da estação. A interface também pode apresentar um botão para executar a mesma ação, permitindo comparar uma interação baseada em entrada do jogador com uma interação baseada em interface.
O personagem também participa
Trabalhe diretamente com Player, Character e Humanoid durante a experiência.
Utilize essas estruturas para identificar o jogador, acessar seu personagem e controlar ou verificar estados básicos do Humanoid.
Inclua pelo menos uma animação relacionada ao contexto, como o personagem utilizando um equipamento, operando um painel ou realizando uma ação de manutenção.
Arquitetura mínima
Organize a experiência respeitando a função dos principais serviços do Roblox.
- Workspace: cenário, personagens e objetos presentes no mundo.
- Players: jogadores conectados e seus personagens.
- ReplicatedStorage: objetos que precisam estar disponíveis para cliente e servidor, como RemoteEvents e RemoteFunctions.
- ServerScriptService: lógica principal executada no servidor.
- ServerStorage: objetos que devem permanecer disponíveis apenas no servidor.
- StarterGui: interface que será disponibilizada aos jogadores.
A organização deve fazer sentido. Evite colocar toda a lógica em um único script ou espalhar objetos aleatoriamente pela experiência.
O que você vai praticar
- Conhecendo o Roblox Studio: navegação e organização dos principais painéis e ferramentas durante a construção da experiência.
- Criando e organizando um projeto: organização dos objetos de acordo com a função de cada serviço.
- Construção com Parts: criação das salas, equipamentos, obstáculos e estruturas da instalação.
- Modelos, Assets e Toolbox: utilização criteriosa de assets para complementar o ambiente.
- Terreno e ambientes: construção e composição do ambiente externo da estação.
- Iluminação e atmosfera: criação de uma atmosfera coerente com uma instalação em situação de emergência.
- Testando o jogo no Studio: utilização dos modos de teste para verificar comportamentos de cliente, servidor, NPCs e interações.
- Primeiros passos com Luau: utilização de variáveis, operadores e tipos de dados na lógica da experiência.
- Condicionais e loops em Luau: controle dos diferentes estados da evacuação e do comportamento dos personagens.
- Funções e tabelas em Luau: organização de estados, dados e comportamentos em funções e tabelas.
- Eventos e conexões: utilização de eventos para responder às interações dos jogadores, ferramentas e objetos.
- Criando o primeiro sistema de gameplay: combinação entre ambiente, interação e lógica para criar um objetivo jogável.
- Estrutura de serviços do Roblox: utilização de Workspace, Players, ReplicatedStorage, ServerScriptService, ServerStorage e StarterGui de acordo com suas responsabilidades.
- Scripts de servidor e LocalScripts: separação entre lógica compartilhada e lógica executada no cliente.
- Player, Character e Humanoid: identificação dos jogadores e manipulação de seus personagens e estados básicos.
- Interfaces com ScreenGui: criação de um HUD de emergência com informações atualizadas durante a experiência.
- Entrada de jogador e UserInputService: criação de uma ação controlada diretamente pela entrada do jogador.
- RemoteEvents e comunicação cliente-servidor: comunicação entre a interface do jogador e a lógica de servidor.
- RemoteFunctions: comunicação bidirecional para solicitar informações do servidor e receber seus resultados.
- Ferramentas e interação com objetos: criação e utilização de uma Tool para interagir com equipamentos da estação.
- Física e Constraints: utilização de WeldConstraint, HingeConstraint e RopeConstraint em elementos físicos do cenário.
- Animações de personagens: reprodução de uma animação contextual durante uma ação do personagem.
- NPCs e comportamento básico: criação de um técnico com estados simples e comportamento controlado por scripts.
- PathfindingService: criação de caminhos para o NPC atravessar a estação evitando obstáculos.
Quando o desafio está completo
A experiência estará pronta quando dois ou mais jogadores puderem entrar na estação, visualizar o estado da evacuação, utilizar a ferramenta, interagir com o sistema de emergência e acompanhar o NPC até a saída.
O estado principal da evacuação deve ser controlado pelo servidor, enquanto cada jogador recebe sua própria interface no cliente.
O NPC deve conseguir encontrar o caminho até a área de evacuação mesmo com obstáculos no percurso, e as interações físicas e animações devem funcionar durante o processo.
Extensões opcionais
Se quiser aumentar a dificuldade depois de concluir a versão principal, experimente:
- Adicionar mais de um NPC com destinos diferentes.
- Criar diferentes estados de emergência que alterem o comportamento da estação.
- Fazer determinadas portas abrirem e fecharem durante a evacuação.
- Adicionar uma animação específica para cada tipo de interação.
- Criar um segundo caminho possível para o NPC chegar à saída.
- Permitir que o jogador escolha entre diferentes equipamentos para resolver cada etapa.
- Adicionar um painel que mostre o progresso da evacuação para todos os jogadores.
Comentários
0Participe da conversa
Faça login com sua conta para deixar dúvidas, sugestões e trocar ideias com outros estudantes.
Nenhum comentário ainda. Seja o primeiro a participar da discussão!