wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Roblox Studio - Programação de Jogos Digitais

Total questions: 25

Worksheet time: 13mins

Name
Class
Date
1.

Explique como a arquitetura cliente-servidor integrada do Roblox Studio contribui para a acessibilidade e facilidade na criação de jogos online, considerando os desafios comuns enfrentados por desenvolvedores ao configurar servidores externos.

a)

Ela elimina a necessidade de configuração de servidores externos, permitindo que desenvolvedores criem jogos online de forma mais acessível e rápida.

b)

Ela dificulta a criação de jogos online, exigindo configuração manual de servidores externos.

c)

Ela limita o acesso a recursos avançados, tornando o desenvolvimento menos eficiente.

d)

Ela impede a publicação de jogos multiplayer na plataforma Roblox.

2.

Analise como a combinação de modelagem 3D, programação em Lua (Luau) e publicação de conteúdo no Roblox Studio pode impactar o desenvolvimento de experiências complexas e multiplayer, em comparação com ferramentas que não integram esses recursos.

a)

Permite que desenvolvedores criem experiências mais ricas e interativas, facilitando o desenvolvimento de jogos complexos e multiplayer.

b)

Restringe o desenvolvimento a jogos simples, sem suporte para experiências multiplayer.

c)

Exige que os desenvolvedores utilizem ferramentas externas para modelagem 3D e programação.

d)

Torna o processo de publicação de conteúdo mais demorado e complicado.

3.

Considere o painel Explorer do Roblox Studio. Justifique como a organização hierárquica em formato de árvore de objetos pode influenciar o planejamento e a manutenção de projetos de jogos digitais.

a)

Facilita a navegação, o planejamento e a manutenção do projeto, permitindo reorganização eficiente dos objetos e visualização clara da estrutura do jogo.

b)

Complica a navegação e dificulta o planejamento, tornando a manutenção do projeto mais trabalhosa.

c)

Elimina a possibilidade de reorganizar objetos, prejudicando a estrutura do projeto.

d)

Limita a visualização dos serviços do jogo, dificultando o entendimento da hierarquia.

4.

Avalie como o painel Properties do Roblox Studio pode ser utilizado estrategicamente para modificar atributos físicos e visuais dos objetos, visando aprimorar a experiência do usuário em um jogo digital.

a)

Permite ajustes precisos em atributos físicos e visuais, como tamanho, posição, cor e transparência, melhorando a aparência e funcionalidade dos objetos no jogo.

b)

Restringe a modificação de atributos físicos, impedindo alterações na aparência dos objetos.

c)

Apenas permite a edição de scripts, sem impacto nos atributos físicos ou visuais.

d)

Limita o ajuste de propriedades visuais, tornando os objetos menos personalizáveis.

5.

Considere que você está desenvolvendo um jogo e precisa organizar e reutilizar assets entre diferentes projetos. Explique como o Asset Manager pode ser utilizado estrategicamente para facilitar esse processo e quais benefícios ele traz para o gerenciamento de recursos em projetos complexos.

a)

O Asset Manager centraliza todos os recursos do projeto, facilitando a organização, importação e reutilização de assets entre diferentes projetos.

b)

O Asset Manager serve apenas para editar terrenos naturais e não tem função na organização de assets.

c)

O Asset Manager é utilizado exclusivamente para armazenar áudio e efeitos sonoros.

d)

O Asset Manager não permite a reutilização de assets entre projetos diferentes.

6.

Ao planejar a estrutura interna de um jogo, por que é importante que o Workspace seja replicado automaticamente para todos os clientes e como isso impacta a experiência dos jogadores?

a)

Porque garante que todos os jogadores vejam as mesmas modificações e objetos físicos, mantendo a consistência do mundo 3D.

b)

Porque permite que cada jogador tenha uma versão diferente do mundo, aumentando a diversidade.

c)

Porque o Workspace só armazena propriedades de iluminação, sem impacto na experiência dos jogadores.

d)

Porque o Workspace não influencia o que os jogadores veem durante o jogo.

7.

Diante de um projeto que exige compartilhamento de configurações globais e reutilização de modelos entre servidor e clientes, justifique o uso do ReplicatedStorage e explique como ele contribui para a eficiência do desenvolvimento.

a)

ReplicatedStorage permite que objetos e scripts sejam acessados por servidor e clientes, facilitando o compartilhamento e reutilização sem expor recursos no Workspace.

b)

ReplicatedStorage armazena apenas scripts de interface gráfica, tornando o desenvolvimento mais rápido.

c)

ReplicatedStorage é usado exclusivamente para armazenar dados persistentes dos jogadores.

d)

ReplicatedStorage impede que qualquer script seja acessado pelos clientes.

8.

Considere um jogo no Roblox que precisa de lógica centralizada para gerenciar o spawn de itens e o processamento de combate. Justifique qual tipo de script seria mais adequado para essa tarefa e explique o motivo, levando em conta a arquitetura cliente-servidor.

a)

Script, pois executa no servidor e tem acesso privilegiado para lógica centralizada.

b)

LocalScript, pois executa no cliente e gerencia interações locais.

c)

ModuleScript, pois executa automaticamente e gerencia dados globais.

d)

Script, pois executa no cliente e controla efeitos visuais.

9.

Um desenvolvedor deseja criar uma biblioteca de funções utilitárias que possa ser reutilizada por diferentes partes do jogo Roblox, sem ser executada automaticamente. Qual tipo de script ele deve utilizar e como esse script é chamado por outros scripts?

a)

ModuleScript, chamado por outros scripts usando require().

b)

LocalScript, chamado automaticamente ao iniciar o jogo.

c)

Script, chamado por outros scripts usando return().

d)

ModuleScript, chamado automaticamente ao iniciar o jogo.

10.

Analise o seguinte trecho de código em Lua: local pontos = 85 if pontos >= 90 then print("Excelente!") elif pontos >= 70 then print("Bom trabalho!") else print("Continue praticando.") end Explique como o código decide qual mensagem imprimir e proponha uma modificação para que também exista uma mensagem específica para pontos entre 80 e 89.

a)

O código imprime "Excelente!" para pontos acima de 90, "Bom trabalho!" para pontos acima de 70, e "Continue praticando." para os demais. Para adicionar uma mensagem para pontos entre 80 e 89, basta inserir um novo elseif com a condição pontos >= 80.

b)

O código imprime "Excelente!" para pontos acima de 90, "Bom trabalho!" para pontos acima de 80, e "Continue praticando." para os demais. Para adicionar uma mensagem para pontos entre 70 e 79, basta alterar o valor de pontos.

c)

O código imprime "Excelente!" para pontos acima de 70, "Bom trabalho!" para pontos acima de 90, e "Continue praticando." para os demais. Para adicionar uma mensagem para pontos entre 80 e 89, basta remover o else.

d)

O código imprime "Excelente!" para pontos acima de 85, "Bom trabalho!" para pontos acima de 70, e "Continue praticando." para os demais. Para adicionar uma mensagem para pontos entre 80 e 89, basta trocar a ordem dos elseif.

11.

Considere o loop while em Lua apresentado: local contador = 1 while contador <= 5 do print("Contagem: " .. contador) contador = contador + 1 end Explique como esse loop funciona e proponha uma alteração para que ele conte apenas números pares entre 1 e 10.

a)

O loop imprime os números de 1 a 5. Para contar apenas números pares entre 1 e 10, inicialize contador em 2 e incremente de 2 em 2 até 10.

b)

O loop imprime os números de 1 a 5. Para contar apenas números pares entre 1 e 10, inicialize contador em 1 e incremente de 1 em 1 até 10.

c)

O loop imprime os números de 1 a 10. Para contar apenas números pares entre 1 e 10, inicialize contador em 2 e incremente de 1 em 1 até 10.

d)

O loop imprime os números de 1 a 5. Para contar apenas números pares entre 1 e 10, inicialize contador em 1 e incremente de 2 em 2 até 10.

12.

Observe o loop for numérico em Lua: for i = 1, 10, 2 do print(i) -- imprime 1, 3, 5, 7, 9 end Explique como o incremento funciona nesse loop e proponha uma alteração para que ele imprima apenas múltiplos de 3 entre 3 e 15.

a)

O incremento de 2 faz o loop pular de 1 em 1. Para imprimir múltiplos de 3 entre 3 e 15, inicialize i em 3, termine em 15 e incremente de 3 em 3.

b)

O incremento de 2 faz o loop pular de 2 em 2. Para imprimir múltiplos de 3 entre 3 e 15, inicialize i em 3, termine em 15 e incremente de 2 em 2.

c)

O incremento de 2 faz o loop pular de 2 em 2. Para imprimir múltiplos de 3 entre 3 e 15, inicialize i em 1, termine em 15 e incremente de 3 em 3.

d)

O incremento de 2 faz o loop pular de 1 em 1. Para imprimir múltiplos de 3 entre 3 e 15, inicialize i em 1, termine em 15 e incremente de 3 em 3.

13.

Analise o loop for genérico em Lua: local frutas = {"maçã", "banana", "laranja"} for indice, fruta in ipairs(frutas) do print(indice, fruta) end Explique como esse loop realiza a iteração sobre a tabela e proponha uma modificação para que ele imprima apenas as frutas cujo nome começa com a letra "b".

a)

O loop percorre todos os elementos da tabela frutas. Para imprimir apenas frutas que começam com "b", adicione uma condição if string.sub(fruta,1,1) == "b" dentro do loop.

b)

O loop percorre apenas o primeiro elemento da tabela frutas. Para imprimir apenas frutas que começam com "b", remova o print do loop.

c)

O loop percorre todos os elementos da tabela frutas. Para imprimir apenas frutas que começam com "b", troque o ipairs por pairs.

d)

O loop percorre todos os elementos da tabela frutas. Para imprimir apenas frutas que começam com "b", adicione uma condição if fruta == "banana" dentro do loop.

14.

Considere o exemplo de função com múltiplos retornos em Lua apresentado. Planeje como você utilizaria essa função para calcular e armazenar os resultados de soma, subtração, multiplicação e divisão de dois números, e explique como cada valor seria acessado posteriormente.

a)

Eu chamaria a função e armazenaria os resultados em variáveis separadas, acessando cada valor por sua posição na lista de retornos.

b)

Eu chamaria a função e apenas o primeiro valor seria acessível, os demais seriam descartados.

c)

Eu chamaria a função e os resultados seriam armazenados em um array, acessando por índices numéricos.

d)

Eu chamaria a função e os resultados seriam impressos automaticamente no console, sem necessidade de armazenamento.

15.

Analise o uso de funções anônimas (callback) em Lua conforme o exemplo apresentado. Explique como você poderia utilizar esse recurso para executar diferentes operações de acordo com a necessidade do seu programa.

a)

Eu passaria diferentes funções como argumento para a função de execução, permitindo que operações distintas fossem realizadas conforme o callback fornecido.

b)

Eu criaria uma função global e chamaria diretamente, sem utilizar callbacks.

c)

Eu utilizaria apenas funções nomeadas, pois funções anônimas não podem ser usadas como callbacks.

d)

Eu armazenaria o callback em uma tabela e só executaria se a tabela estivesse vazia.

16.

Dado que tabelas são a principal estrutura de dados em Lua, funcionando como arrays e dicionários, elabore um plano para organizar dados de alunos (nome, idade, nota) utilizando tabelas, justificando como essa estrutura facilita o acesso e manipulação dos dados.

a)

Eu criaria uma tabela onde cada aluno seria uma chave e seus dados seriam armazenados como valores, permitindo fácil acesso e manipulação por nome.

b)

Eu criaria variáveis separadas para cada dado de cada aluno, dificultando o acesso e manipulação.

c)

Eu utilizaria apenas listas simples, sem associar nomes aos dados, tornando o acesso menos intuitivo.

d)

Eu armazenaria todos os dados em uma string única, dificultando a manipulação individual dos dados.

17.

Analise o código apresentado para o evento de toque (Touched). Se você quisesse modificar o sistema para que o jogador perdesse 20 pontos de vida ao invés de 10 ao tocar na parte, como você faria essa alteração? Justifique sua resposta com base na lógica do código.

a)

Alteraria a linha "humanoide.Health = humanoide.Health - 20" para aumentar a perda de vida.

b)

Adicionaria uma nova variável chamada "vida" e definiria como 20.

c)

Mudaria o nome da função para "PerdeVida".

d)

Removeria a condição "if humanoide then".

18.

No evento de clique (ClickDetector), o que aconteceria se você removesse a linha "clickDetector.Parent = parte"? Explique o impacto dessa alteração no funcionamento do evento.

a)

O detector de clique não estaria associado à parte, então o evento não funcionaria.

b)

O evento funcionaria normalmente, sem alterações.

c)

O evento seria executado duas vezes.

d)

O evento passaria a funcionar apenas para jogadores específicos.

19.

Considerando os eventos de jogadores, como você poderia adaptar o código para registrar o momento em que um jogador entra e também quando seu personagem spawna, garantindo que ambas as informações sejam armazenadas para análise posterior? Descreva uma estratégia baseada no código apresentado.

a)

Criar uma tabela para armazenar os nomes dos jogadores e os momentos de entrada e spawn, utilizando as funções de evento para adicionar essas informações.

b)

Utilizar apenas o evento PlayerAdded para registrar ambos os momentos.

c)

Adicionar um print dentro do evento PlayerRemoving.

d)

Remover o evento CharacterAdded para evitar duplicidade.

20.

No contexto do sistema de coleta de moedas, explique como você poderia planejar um sistema que impede que um jogador colete a mesma moeda mais de uma vez. Baseie sua resposta em raciocínio estratégico e evidências do funcionamento de eventos em Lua.

a)

Utilizar uma lista para registrar as moedas coletadas por cada jogador e verificar antes de permitir a coleta.

b)

Permitir que o jogador colete a moeda quantas vezes quiser.

c)

Remover o evento de coleta após a primeira coleta.

d)

Adicionar um print para cada coleta realizada.

21.

No sistema de teletransporte apresentado, explique como você poderia modificar o código para que o personagem seja teletransportado para uma posição diferente, por exemplo, (10, 5, 0), ao invés de apenas adicionar (0, 3, 0) ao destino. Justifique sua resposta com base na lógica do script.

a)

Substituir Vector3.new(0, 3, 0) por Vector3.new(10, 5, 0) na linha do teletransporte.

b)

Alterar local destino = workspace.Destino para local destino = workspace.NovoDestino.

c)

Remover a verificação if humanoide e raiz then.

d)

Trocar raiz = personagem:FindFirstChild("HumanoidRootPart") por raiz = personagem:FindFirstChild("Head").

22.

Considerando o funcionamento do script de coleta de moedas, proponha uma estratégia para evitar que um jogador colete a mesma moeda mais de uma vez. Explique como você implementaria essa solução no código.

a)

Adicionar uma variável de controle que verifica se a moeda já foi coletada antes de adicionar pontos e destruir a moeda.

b)

Remover a linha moeda:Destroy(), pois isso impede que a moeda desapareça.

c)

Alterar o valor de pontos para zero após a coleta.

d)

Duplicar o script para cada moeda existente no jogo.

23.

Ao desenvolver um sistema de checkpoints que salva a posição de respawn do jogador, quais são os principais desafios que você deve considerar para garantir que o jogador sempre retorne ao último checkpoint salvo, mesmo após sair e voltar ao jogo?

a)

Salvar a posição do checkpoint em um sistema persistente, como banco de dados, e garantir que a posição seja restaurada corretamente ao reiniciar o jogo.

b)

Salvar a posição apenas temporariamente na memória, sem persistência.

c)

Ignorar o sistema de checkpoints e sempre respawnar o jogador no início do mapa.

d)

Utilizar apenas variáveis locais para salvar a posição, sem considerar persistência.

24.

Considere que você está desenvolvendo um jogo no Roblox e precisa garantir que um objeto não se mova fisicamente, mesmo que forças sejam aplicadas a ele. Qual propriedade você deve utilizar e por quê? Justifique sua resposta com base no funcionamento dessa propriedade.

a)

Utilizar a propriedade Anchored, pois ela impede a movimentação física do objeto.

b)

Utilizar a propriedade Replication, pois ela sincroniza dados entre servidor e clientes.

c)

Utilizar a propriedade Humanoid, pois ela controla personagens jogáveis.

d)

Utilizar a propriedade Leaderstats, pois ela armazena estatísticas do jogador.

25.

Durante o desenvolvimento de um ambiente 3D em Roblox, você precisa definir a posição e rotação de objetos de forma precisa. Qual termo do glossário é utilizado para esse fim e como ele pode ser aplicado para criar movimentações complexas no jogo?

a)

CFrame, pois representa posição e rotação 3D.

b)

Instance, pois representa qualquer objeto no Roblox.

c)

Replication, pois sincroniza dados entre servidor e clientes.

d)

Anchored, pois impede movimentação física de objetos.