Para estúdios de desenvolvimento profissionais, configurar ferramentas de terceiros e investir em automação pode melhorar drasticamente a produtividade dos desenvolvedores. A abordagem cloud-first da Roblox tem muitas vantagens, mas mover certas partes do fluxo de trabalho de desenvolvimento para fora da nuvem pode ajudar equipes maiores a rastrear mudanças ao longo do tempo, revisar código e usar as linguagens e ferramentas com as quais já estão familiarizadas.
- Se você só quer usar um editor de texto externo ou manter o código sob controle de versão, Script Sync é uma ótima escolha.
- Se você deseja gerenciar todo o seu projeto como um conjunto de arquivos locais, esta página aborda algumas ferramentas e estratégias.
O problema de sincronização
Em sua essência, usar ferramentas externas com a Roblox é um problema de sincronização:
- Você quer que suas instâncias do Roblox existam como arquivos no disco para que possa usar suas próprias ferramentas para trabalhar nelas.
- Você precisa trazer seus arquivos de volta para o seu projeto Roblox após ter terminado de trabalhar neles.
- Se outra pessoa alterou esses mesmos arquivos nesse meio tempo, você terá que lidar com conflitos.
Para que a solução completa pareça suave e automática, você precisa a) escutar as mudanças nos arquivos e b) incorporar essas mudanças de volta ao Studio.
Em vez da abordagem cloud-first da Roblox, Rojo permite uma abordagem "file system-first". Ele executa um servidor na sua máquina que se comunica com um plugin do Studio para sincronizar seus arquivos e o modelo de dados do Studio.
Instale o Rojo com Rokit
Você pode baixar e executar manualmente um binário do Rojo, mas essa abordagem corre o risco de diferentes desenvolvedores da sua equipe usarem diferentes versões do Rojo. Uma solução melhor é usar um gerenciador de toolchain como Rokit, que usa um arquivo de configuração — uma lista de repositórios e versões — para tornar o processo de instalação e atualização consistente entre as máquinas.
Como ele gerencia seu ambiente de desenvolvimento padrão em vez dos pacotes dentro do seu projeto, o Rokit se assemelha mais ao nvm do que ao npm, mas a comparação não é perfeita. Um simples arquivo rokit.toml parece com isto:
[tools]
rojo = "rojo-rbx/rojo@7.6.1"
wally = "upliftgames/wally@0.3.2"
lune = "lune-org/lune@0.10.4"
Então você instala essas ferramentas com rokit install. Além de um arquivo global rokit.toml, o Rokit suporta arquivos por projeto, para que você possa facilmente usar diferentes versões do Rojo, Wally ou qualquer outra ferramenta para diferentes projetos e manter toda a sua equipe nessas mesmas versões.
Quando uma ferramenta lança uma nova versão, você então aumenta explicitamente o número da versão no seu arquivo .toml, usa o Rokit para realizar a atualização, testa a nova versão e reverte se causar problemas. Para comandos e instruções de instalação, veja Rokit.
Execute o Rojo
Depois de instalar o Rojo com o Rokit, o que você realmente instalou é o servidor Rojo. O próximo passo é instalar o plugin Rojo para Roblox Studio.
Você pode instalá-lo na Creator Store ou instalá-lo localmente com este comando:
rojo plugin install
Depois, gere a estrutura do projeto para o seu novo jogo e construa-o:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
Alternativamente, você pode portar um jogo existente. De qualquer forma, após ter um projeto, inicie o servidor Rojo:
rojo serve
No Roblox Studio, abra o arquivo .rbxl que você acabou de construir, abra o plugin Rojo e conecte-se ao seu servidor que agora está funcionando, momento em que você pode começar a fazer mudanças no seu editor de texto preferido e observar essas mudanças sincronizarem automaticamente de volta para o Studio.


Os projetos Rojo têm certos requisitos de nomenclatura para arquivos, inúmeras opções de configuração e algumas limitações, todas as quais são abordadas na documentação do Rojo.
Gerenciadores de pacotes
A Roblox possui um conjunto robusto de APIs incluídas, mas se você deseja usar pacotes de software da comunidade de maneira consistente e reproduzível, você precisa de um gerenciador de pacotes. Wally é uma opção popular. Você pode instalá-lo através do Rokit, assim como o Rojo.
Dentro do diretório Rojo do seu jogo, execute wally init. Em seguida, adicione os pacotes desejados ao wally.toml. O arquivo pode parecer assim:
[package]
name = "my-home-directory/my-new-experience"
version = "0.1.0"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
[dependencies]
react = "jsdotlua/react@17.2.1"
react-roblox = "jsdotlua/react-roblox@17.2.1"
cryo = "phalanxia/cryo@1.0.3"
Em seguida, execute wally install. O Wally cria um diretório Packages e baixa os pacotes especificados lá. O passo final é adicionar o diretório Packages ao Rojo para que seu conteúdo sincronize de volta para a Roblox. Abra default.project.json e adicione o caminho. Para simplificar, este exemplo adiciona todo o diretório à ReplicatedStorage para que todos os pacotes estejam disponíveis para todos os scripts, mas você pode preferir adicionar pacotes específicos a ServerScriptService ou StarterPlayerScripts:
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Então você pode requerer pacotes dentro dos seus scripts como qualquer outro ModuleScript:
local Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local React = require(ReplicatedStorage.Packages.react)local ReactRoblox = require(ReplicatedStorage.Packages["react-roblox"])local handle = Instance.new("ScreenGui", Players.LocalPlayer.PlayerGui)local root = ReactRoblox.createRoot(handle)local helloFrame = React.createElement("TextLabel", {Text = "Olá Mundo!",Size = UDim2.new(0, 200, 0, 200),Position = UDim2.new(0.5, 0, 0.5, 0),AnchorPoint = Vector2.new(0.5, 0.5),BackgroundColor3 = Color3.fromRGB(248, 217, 109),Font = Enum.Font.LuckiestGuy,TextSize = 24})root:render(helloFrame)
Como a maioria dos outros projetos de software, o objetivo é que os contribuintes possam clonar um repositório, instalar o Rokit, executar alguns comandos e ter o mesmo ambiente de desenvolvimento que o restante da equipe.
Controle de versão
Ter um conjunto de arquivos de texto simples no seu computador desbloqueia uma variedade de capacidades, mas a principal é o controle de versão. Você pode armazenar seus arquivos em um repositório Git ou Mercurial; hospedar repositórios remotos e revisar as mudanças de código no GitHub, GitLab ou Bitbucket; e usar o editor de texto que você preferir.
Visual Studio Code e Cursor têm o maior ecossistema de extensões, mas Sublime Text e Notepad++, e Vim são todas opções populares. Qualquer que seja o editor que você escolher, igualar as capacidades do editor de scripts do Studio exigirá algumas extensões.
Você também pode considerar adicionar:
- Um linter como selene para detectar problemas comuns e impor padrões de codificação
- Um formatador de código como StyLua
- Um servidor de linguagem como Luau Language Server para autocompletar, verificação de tipo e mais
- Scripts de Open Cloud (não sincronizados com o Studio) para atualizar um jogo publicado ou reiniciar servidores
Desfazer tudo
Como as ferramentas de terceiros sincronizam as mudanças de volta ao Roblox Studio, em vez de substituí-lo, nenhuma parte deste fluxo de trabalho envolve qualquer bloqueio. A qualquer momento, você pode parar de usar uma ou todas essas ferramentas e voltar a editar seu jogo exclusivamente no Studio. A falta de risco torna a experimentação com ferramentas de terceiros particularmente atraente.