Cada lugar é representado por um modelo de dados, uma hierarquia de objetos que descrevem tudo sobre o lugar. O modelo de dados contém todos os objetos que compõem o mundo 3D, como partes, terreno, iluminação e outros elementos ambientais. Também contém objetos que podem controlar o comportamento em tempo de execução, como scripts que modificam propriedades, chamam métodos e funções, e respondem a eventos que permitem comportamento dinâmico e interatividade.
O Motor Roblox usa o modelo de dados como uma fonte de verdade para o estado de um lugar, para que possa simular e renderizá-lo nos dispositivos dos clientes. Para mais informações sobre como o Motor Roblox interpreta o modelo de dados, veja Cliente-Servidor.
Objetos
Você coloca e organiza objetos no modelo de dados para descrever um lugar no Roblox. Cada objeto no Roblox herda da classe Instance, que define propriedades, métodos e eventos genéricos que são comuns a todos os objetos. Os objetos também definem suas próprias características, dependendo da funcionalidade que o objeto fornece. Existem muitas categorias de objetos com uma ampla variedade de usos, mas você trabalhará frequentemente com objetos BasePart e LuaSourceContainer, comumente referidos como partes e scripts.
Para uma lista abrangente de todos os recursos do Motor Roblox, consulte a documentação de referência.
Blocos de construção 3D
BasePart é a classe central para blocos de construção 3D simulados fisicamente no mundo. Ela define as propriedades e métodos comuns a todos os objetos físicos, com propriedades como posição, tamanho e orientação.
Objeto | Descrição |
---|---|
Part | Uma parte primitiva que pode ter o formato de um bloco, bola, cilindro, cunha ou cunha de canto. |
MeshPart | Uma malha importada de softwares de modelagem 3D como Maya ou Blender. |
TrussPart | Uma viga de treliça que os personagens podem escalar como uma escada. |
Embora você possa teoricamente criar uma experiência funcional do Roblox usando apenas partes simples, você provavelmente importará malhas e combinará partes primativas em objetos e estruturas mais complexas através da modelagem sólida.
Scripts
Você pode adicionar interatividade e comportamento ao mundo 3D do seu lugar e definir lógica com scripts. Você escreve scripts na linguagem de programação Luau para fazer coisas como mover partes, chamar outros scripts e responder a eventos. Como o Roblox funciona em um modelo cliente-servidor, você pode executar scripts no servidor, cliente ou fazê-los se comunicar através da fronteira da rede.
- Um objeto Script representa um script que pode ser executado apenas no servidor.
- Um objeto LocalScript representa um script que pode ser executado apenas no cliente.
- Um objeto ModuleScript representa um script reutilizável que você pode require() tanto de scripts do servidor quanto do cliente.
Para que os scripts funcionem corretamente, você deve colocá-los nos contêineres corretos no modelo de dados. Para mais informações, veja as seções Servidor e Cliente.
Organização do objeto
Embora você tenha muita flexibilidade em como organiza seu modelo de dados, o Motor Roblox espera que certos objetos estejam em determinados serviços de contêiner, que são objetos que possuem comportamentos específicos e podem afetar os comportamentos dos objetos que contêm. As principais categorias de serviços de contêiner incluem:
- Workspace — Workspace armazena todos os objetos que são renderizados no mundo 3D.
- Ambiente — Contêineres como Lighting e SoundService que contêm objetos para configurações e elementos ambientais.
- Replicação — Contêineres para conteúdo e lógica que se replicam entre o servidor e o cliente, como ReplicatedStorage e ReplicatedFirst.
- Servidor — Contêineres para conteúdo e lógica apenas do lado do servidor, como ServerScriptService e ServerStorage.
- Chat — Contêineres para objetos que permitem recursos de chat, como VoiceChatService e TextChatService.
Além disso, você pode organizar ainda mais seus objetos com os seguintes objetos:
- Pastas — Uma Folder é para fins organizacionais e não define nenhum comportamento. Por exemplo, você pode usar pastas para agrupar objetos semelhantes como um conjunto de scripts no armazenamento do servidor.
- Modelos — Um Model é principalmente destinado a agrupamentos geométricos de partes, como agrupar um conjunto de mesa que inclui uma cadeira, uma mesa e uma lâmpada. Para organizar conjuntos mais complexos, você pode até aninhar modelos dentro de modelos.
Workspace
Workspace contém todos os objetos que compõem o mundo 3D do lugar. Você pode adicionar objetos ao espaço de trabalho para personalizar seu mundo 3D, como partes base, partes de malha e modelos. Os clientes renderizam tudo que aparece neste contêiner e nada fora dele, portanto, você pode controlar o que os usuários veem e interagem em seu lugar. Embora não sejam realmente renderizados, você também pode adicionar scripts que são parentados às partes e modelos aos quais estão associados. Por padrão, o espaço de trabalho é pré-populado com um objeto Terrain e Camera.
Câmera
Camera determina como o cliente vê o mundo 3D. Por padrão, há uma câmera no espaço de trabalho, mas você pode adicionar vários objetos de câmera para criar diferentes perspectivas e visualizações. Cada cliente pega essas configurações e cria sua própria visão de câmera que o servidor não pode modificar diretamente.
Por exemplo, você pode definir uma câmera para seguir os movimentos do usuário ou permanecer fixa em uma localização particular. Você também pode ajustar o campo de visão, distância e ângulo para criar diferentes efeitos visuais de como os usuários veem seu mundo 3D.
Para mais informações, consulte personalizar a câmera.
Terreno
Terrain permite que você crie paisagens para o seu lugar. Você pode aplicar um material ao terreno para simular ambientes naturais desejados, como grama, água, areia ou um material personalizado. Embora você só possa ter um objeto de terreno para o seu mundo 3D e aplicar um material a esse terreno, você pode usar o Editor de Terreno para editar regiões do seu terreno.
Para mais informações, veja terreno ambiental.
Ambiente
Iluminação personalizada pode tornar seu mundo 3D muito mais imersivo e realista. O serviço Lighting contém objetos que controlam as configurações de iluminação global do seu lugar, como Atmosphere para simular efeitos atmosféricos ou Sky para alterar o sol, a lua e as estrelas em seus ambientes. Além disso, você pode usar fontes de luz para emitir luz de objetos específicos.
Adicionar áudio às suas experiências também é crucial para elevar suas experiências a novos patamares. Ao usar estrategicamente áudio posicional e não posicional, você pode imergir os jogadores em seus mundos, fornecer feedback útil para suas ações e direcionar sua atenção ao que eles precisam fazer para ter sucesso em seus objetivos.
Replicação
Replicação é o processo pelo qual o servidor sincroniza o estado do seu lugar com todos os clientes conectados. O Motor Roblox replica automaticamente e de forma inteligente dados, físicos e mensagens de chat entre o servidor e o cliente para muitos casos, mas você também pode especificar certos objetos para replicar colocando-os em contêineres específicos.
ReplicatedFirst
ReplicatedFirst contém objetos que você deseja replicar para um cliente quando ele entra em seu lugar. Normalmente, contém objetos que são essenciais para inicializar um jogador, como objetos LocalScript do lado do cliente e os objetos associados aos scripts. Todo o conteúdo neste contêiner é replicado do servidor para o cliente apenas uma vez.
ReplicatedStorage
ReplicatedStorage contém objetos que estão disponíveis tanto para o servidor quanto para os clientes conectados. Quaisquer alterações que ocorrerem no cliente persistem, mas não serão replicadas para o servidor. O servidor pode sobrescrever alterações no cliente para manter a consistência. Este contêiner é normalmente usado para objetos ModuleScript que precisam ser compartilhados e acessados tanto por objetos Script (lado do servidor) quanto por objetos LocalScript (lado do cliente). Além disso, você pode usar este contêiner para replicar quaisquer objetos que não precisam existir no mundo 3D até serem necessários, como um ParticleEmitter para clonar e parentar a todos os modelos de personagens que chegam.
Para mais informações sobre como a replicação funciona, veja runtime cliente-servidor.
Servidor
O modelo de dados define contêineres dedicados para objetos que são apenas do lado do servidor e que nunca são replicados para o cliente. Isso permite que o servidor afete o comportamento e o estado do cliente sem expor os objetos e a lógica do servidor ao cliente.
ServerScriptService
ServerScriptService contém objetos Script, objetos ModuleScript que são necessários por scripts do servidor e outros objetos relacionados a scripting que são destinados apenas ao uso do servidor. Se seus scripts exigirem outros objetos que não são de scripting, você deve colocá-los em ServerStorage. Scripts neste contêiner nunca são replicados para clientes, o que permite que você tenha lógica segura do lado do servidor.
ServerStorage
ServerStorage contém objetos que são destinados apenas ao uso do servidor. Você pode usar este contêiner para armazenar objetos que deseja clonar e parentar ao espaço de trabalho ou outros contêineres em tempo de execução. Por exemplo, você pode armazenar objetos grandes como mapas neste contêiner até que sejam necessários e movê-los para o espaço de trabalho apenas quando necessário. Isso permite que você diminua o tráfego de rede do cliente na entrada inicial.
Cliente
Os serviços de contêiner do cliente são destinados a objetos que são replicados para todos os clientes conectados. Esta categoria de contêineres se replica para todos os clientes conectados e normalmente contém objetos 3D e objetos LocalScript associados. Todos os objetos que você armazena nesses contêineres são não persistentes entre sessões e são redefinidos toda vez que um cliente se junta novamente. Você pode colocar objetos nesses contêineres, como GUIs de jogadores, scripts do lado do cliente e outros objetos que são apenas relevantes para o cliente.
Quando um cliente se conecta a um servidor, o serviço de contêiner Players escuta os usuários que entram em seu lugar e cria um objeto Player para cada cliente. O servidor copia os objetos dos contêineres do cliente no modelo de dados de edição para o local correspondente no modelo de dados em tempo de execução dentro do objeto Players. A tabela a seguir descreve o contêiner original em que reside no contêiner e o contêiner resultante para o qual são copiados no cliente:
Modelo de dados de edição | Modelo de dados em tempo de execução | Anotações |
---|---|---|
StarterPack | Player.Backpack | Scripts que configuram o inventário do jogador e geralmente contêm objetos Tool, mas frequentemente também contêm scripts locais. |
StarterGui | Player.PlayerGui | Scripts que podem gerenciar a GUI local do jogador. Quando um jogador renasce, o conteúdo do PlayerGui é esvaziado. O servidor copia os objetos dentro de StarterGui para o PlayerGui. |
StarterPlayerScripts | Player.PlayerScripts | Scripts de propósito geral para o cliente. Por exemplo, se você quiser criar efeitos especiais no cliente quando certas condições forem atendidas, pode colocar um script local neste contêiner para fazer isso. O servidor não pode acessar este contêiner. |
StarterCharacterScripts | Player.Character | Scripts que são copiados para o cliente quando ele aparece. Esses scripts não persistem quando o jogador renasce. |
ReplicatedFirst | O conteúdo deste contêiner é replicado para todos os clientes (mas não de volta para o servidor) primeiro, antes de qualquer outra coisa. |
Chat
TextChatService
TextChatService representa o serviço que lida com várias tarefas de chat de texto dentro da experiência, como gerenciar canais, decorar mensagens, filtrar texto, criar comandos e desenvolver interfaces de chat personalizadas.
Para mais informações, veja visão geral do chat de texto.
VoiceChatService
VoiceChatService representa o recurso de chat de voz baseado em proximidade que simula comunicação realista com base em quão próximo você está de outros usuários. Você pode usar este serviço para ativar ou desativar o recurso.
Para mais informações, veja chat de voz.
Pastas e modelos
Existem dois principais métodos para agrupar objetos no modelo de dados: pastas e modelos. Ambos são contêineres para objetos, mas têm propósitos diferentes.
- Pastas são melhores para armazenar seções de um ambiente, como o lobby ou uma arena de combate.
- Modelos são usados para conjuntos de objetos, como um conjunto de mesa que inclui uma cadeira, uma mesa e uma lâmpada. Para organizar conjuntos mais complexos, aninhe modelos dentro de modelos.
Você deve sempre nomear seus objetos de forma descritiva. Isso facilita a localização e modificação de objetos posteriormente, se necessário.

