Tipos e locais de script

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


Para muitos desenvolvedores, o desafio fundamental de se adaptar à scriptagem no Roblox é a importância da localização do arquivo e a propriedade Script.RunContext. Dependendo do tipo de script, da localização no Explorer e do contexto de execução, os scripts podem se comportar de maneiras muito diferentes. Certas chamadas de método podem falhar, objetos em seu jogo podem ser inacessíveis ou os scripts podem nem ser executados.

A razão para essa complexidade é que os jogos Roblox são multiplayer por padrão. Os scripts precisam ter a capacidade de serem executados apenas no servidor, apenas no cliente ou serem compartilhados entre ambos. A evolução da plataforma Roblox ao longo do tempo complicou ainda mais a situação.

Tipos de script

O Roblox possui três tipos de scripts:

  • Script - Código que é executado no servidor ou no cliente, dependendo de sua localização e da propriedade Script.RunContext.
  • LocalScript - Código que é executado apenas no cliente. Não possui um contexto de execução.
  • ModuleScript - Código que você pode reutilizar em outros scripts. Não possui um contexto de execução.

Quando você cria um Script, seu contexto de execução padrão é Legacy, o que significa que a) é um script do lado do servidor e b) só é executado se estiver em um contêiner de servidor, como Workspace ou ServerScriptService.

  • Se você alterar o contexto de execução do script para Server, ele também pode ser executado em ReplicatedStorage, mas isso não é recomendado. O conteúdo dessa localização é replicado para os clientes, portanto, é uma má localização para scripts do lado do servidor.
  • Se você alterar o contexto de execução do script para Client, ele pode ser executado em ReplicatedStorage. Ele também pode ser executado em StarterCharacterScripts e StarterPlayerScripts. Os contêineres do Starter são copiados para os clientes, então, o script original e a cópia são executados, o que não é desejável.

Para alterar o contexto de execução de um script, selecione-o no Explorer e altere o valor na janela Properties.

Propriedade RunContext indicada para um Script.

Recomendações

  • Coloque scripts do cliente em ReplicatedStorage com um RunContext de Client ao lado de ModuleScripts apenas do cliente.

    Ao depurar no Studio, você pode clicar em linhas na janela Output e ir para ReplicatedStorage.YourScript (a localização estável do script) em vez de Players.YourName.PlayerScripts.YourScript (a localização efêmera para a qual o script foi copiado em tempo de execução).

  • Coloque scripts do servidor em ServerScriptService com um RunContext de Server ao lado de ModuleScripts apenas do servidor.

  • Para compartilhar código entre scripts do servidor e do cliente, use ModuleScripts em ReplicatedStorage.

  • Se você colocar scripts dentro de modelos e pacotes, especifique um RunContext para cada script para remover a ambiguidade sobre como ele é executado. Configurar explicitamente essa propriedade torna modelos e pacotes mais propensos a funcionar corretamente a partir de uma variedade de locais.

  • Coloque o menor número possível de scripts do cliente (como um script de carregamento) em ReplicatedFirst com um RunContext de Client. Para saber mais, veja Ordem de replicação.

  • Use LocalScripts em StarterCharacterScripts, StarterPlayerScripts, StarterGui e StarterPack.

Localizações de script

LocationDescription
WorkspaceRepresenta o mundo 3D do jogo. Esta localização funciona bem para scripts de servidor que se conectam diretamente a objetos e controlam seu comportamento.
ReplicatedFirstContém objetos que são replicados para o cliente antes de qualquer outra coisa. Esta localização é ideal para o conjunto mínimo absoluto de objetos e scripts de cliente necessários para exibir uma tela de carregamento.
ReplicatedStorageContém objetos que são replicados tanto para o cliente quanto para o servidor. Esta localização é ideal para MódulosScript que você deseja usar tanto no servidor quanto no cliente. ScriptsLocais não são executados a partir desta localização, mas Scripts com um ContextoExecução de Cliente são.
ServerScriptServiceContém scripts do servidor. Esta localização é ideal para scripts que precisam acessar funcionalidades ou objetos do lado do servidor, como lógica de jogo e armazenamento em nuvem.
ServerStorageContém objetos do lado do servidor. Esta localização é ideal para objetos grandes que não precisam ser replicados imediatamente para os clientes quando eles entram no jogo. Scripts não são executados a partir desta localização, mas você pode armazenar MódulosScript do lado do servidor aqui.
StarterPlayerStarterCharacterScriptsContém ScriptsLocais que são executados quando o personagem surge.
StarterPlayerStarterPlayerScriptsContém ScriptsLocais de uso geral que são executados quando o jogador entra no jogo.
StarterGuiContém elementos de GUI que o cliente exibe quando carrega o jogo. ScriptsLocais podem ser executados a partir desta localização. Esta localização é ideal para scripts que modificam a interface do usuário do jogo, como adicionar botões, menus e pop-ups.
StarterPackGeralmente contém apenas Ferramentas, mas também pode incluir ScriptsLocais para configurar mochilas de jogadores.

Esta imagem mostra quais localizações na janela Explorer podem conter scripts do cliente. Lembre-se, ReplicatedFirst e ReplicatedStorage podem conter Scripts com um RunContext de Client, enquanto os contêineres Starter[] devem usar LocalScripts.

Diagrama mostrando quais localizações de script são executadas nos clientes.

Estrutura de projeto de exemplo

O projeto de referência Plant mostra como você pode organizar seu código em um jogo grande e complexo.

É particularmente notável como ele armazena a vasta maioria de seu código como ModuleScripts reutilizáveis em ReplicatedStorage e ServerStorage.

©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.