Para estúdios de desenvolvimento profissional, configurar ferramentas de terceiros e investir em automação pode melhorar dramaticamente a produtividade do desenvolvedor.A abordagem de nuvem primeiro do Roblox tem muitas vantagens, mas mover certas partes do fluxo de trabalho de desenvolvimento fora da nuvem pode ajudar equipes maiores a rastrear mudanças ao longo do tempo, revisar código e usar as línguas e ferramentas com as quais eles já estão familiarizados.
O problema de sincronização
Em seu núcleo, usar ferramentas externas com o Roblox é um problema de sincronização sincronização:
- Você quer que seus scripts do Roblox existam como .luau para que você possa usar suas próprias ferramentas para trabalhar neles.
- Você tem que devolver seus arquivos ao seu projeto Roblox depois de terminar de trabalhar neles.
- Se outra pessoa mudou os mesmos arquivos nesse meio tempo, você tem que lidar com quaisquer conflitos.
Para que toda a solução se sinta sem atritos e automática, você precisa a) ouvir as alterações nos arquivos e b) incorporar essas alterações de volta ao Studio.Em outras palavras, você precisa de um servidor e de um plugin do Studio, que é como Rojo resolve esse problema.
Em vez da abordagem de nuvem primeiro do Roblox, Rojo permite uma abordagem "sistema de arquivos em primeiro lugar".Ele extrai todos os arquivos de script em seu projeto em arquivos Luau.Então, ele executa um servidor.O plugin Rojo se conecta ao servidor para sincronizar esses arquivos com o Studio.
Instale o Rojo com o Foreman
Você pode baixar e executar manualmente um binário Rojo, mas essa abordagem corre o risco de diferentes desenvolvedores em sua equipe usarem diferentes versões do Rojo.Uma solução melhor é usar um gerenciador de ferramentas como Foreman, 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 em máquinas.
Porque ele gerencia o ambiente de desenvolvimento de referência ao invés dos pacotes dentro do seu projeto, o Foreman está mais próximo de nvm do que npm, mas a comparação não é perfeita.Um arquivo simples foreman.toml parece assim:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Então você instala essas ferramentas com foreman install .Além de um arquivo global foreman.toml , Foreman 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 de versão em seu arquivo .toml, usa o Foreman para realizar a upgrade / melhoria, testa a nova versão e rebaixa se causar quaisquer problemas.Para comandos e instruções de instalação, veja Foreman.
Executar Rojo
Depois de instalar o Rojo com o Foreman, o que você realmente instalou é o servidor Rojo. O próximo passo é instalar o plugin Rojo para o Roblox Studio:
rojo plugin install
Então gere a estrutura do projeto para a sua nova experiência e construa-a:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
Alternativamente, você pode portar uma experiência existente. De qualquer forma, depois de ter um projeto, inicie o servidor Rojo:
rojo serve
No Roblox Studio, abra o arquivo .rbxl que você acabou de construir, inicie o plugin Rojo e conecte-se ao seu servidor em execução, momento em que você pode começar a fazer alterações em seu editor de texto preferido e assistir essas alterações sincronizarem automaticamente de volta ao Studio.
Projetos Rojo têm certos requisitos de nomeação para arquivos, numerosas opções de configuração e algumas limitações, todas as quais são abrangidas na documentação Rojo.
Gerentes de pacotes
O Roblox tem um conjunto robusto de APIs incluídas, mas se você quiser fazer uso de pacotes de software da comunidade de maneira consistente e reprodutível, você precisa de um gerenciador de pacotes.Wally é uma opção popular.Você pode instalá-lo através do Foreman, assim como Rojo.
Dentro do diretório Rojo da sua experiência, execute wally init . Em seguida, adicione os pacotes desejados ao wally.toml . O arquivo pode parecer com isso:
[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.1.0"
react-roblox = "jsdotlua/react-roblox@17.1.0"
cryo = "phalanxia/cryo@1.0.3"
Então execute wally install.Wally cria um diretório Packages e baixa os pacotes especificados lá.O último passo é adicionar o diretório Packages final ao Rojo para que seu conteúdo sincronize de volta ao Roblox.Abra default.project.json e adicione o caminho.Para simplicidade, este exemplo adiciona todo o diretório a 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 exigir pacotes dentro de 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 = "Hello World!",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 contribuidores possam clonar um repositório, instalar o Foreman, executar alguns comandos e ter o mesmo ambiente de desenvolvimento do resto 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 é controle de versão.Você pode armazenar seus scripts e arquivos de configuração em um repositório Git ou Mercurial, hospedar repositórios remotos e revisar alterações de código em GitHub, GitLab ou Bitbucket; e use qualquer editor de texto que você goste.
Visual Studio Code tem o maior ecossistema de extensões, mas Sublime Text , Notepad++ e Vim são todas escolhas populares.Qualquer que seja o editor que você escolher, combinar as capacidades do editor de script 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 formataador de código como StyLua
- Um servidor de idioma como Servidor de idioma Luau para preenchimento automático, verificação de tipo e muito mais
- Abra os scripts da Nuvem (não sincronizados com o Studio) para atualizar uma experiência publicada ou reiniciar os servidores
Recursos
As ferramentas nesta página são mais aplicáveis a scripts; os artistas 3D já usam ferramentas externas como Blender e Maya, armazenam os arquivos de origem no controle de versão e importam suas criações no Studio.Depois de ter um recurso do Studio, recomendamos fazer uso de pacotes sempre que possível.
A implementação de pacotes do Roblox segue muitos dos mesmos princípios das ferramentas nesta página: um repositório centralizado com histórico de versões que oferece uma maneira sem problemas de manter todas as cópias de um recurso sincronizadas.Para mais informações sobre como eles podem melhorar seu fluxo de trabalho, veja Pacotes.
Desfaça tudo
Porque as ferramentas de terceiros sincronizam alterações de volta ao Roblox Studio em vez de substituí-lo, nenhuma parte desse fluxo de trabalho envolve qualquer bloqueio.A qualquer momento, você pode parar de usar uma ou todas essas ferramentas e voltar a editar sua experiência exclusivamente no Studio.A falta de risco torna a experimentação com ferramentas de terceiros particularmente atraente.