Para estúdios de desenvolvimento profissional, configurar ferramentas de terceiros e investir em automação pode melhorar drasticamente 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 alterações ao longo do tempo, revisar código e usar as linguagens e ferramentas com quais
O Problema de Sincronização
Em seu núcleo, usar ferramentas externas com Roblox é um problema de sincronização:
- Você quer que seus scripts Roblox existam como .luau no disco para que você possa usar suas próprias ferramentas para trabalhar neles.
- Você tem que obter seus arquivos de volta ao seu projeto Roblox depois de terminar de trabalhar neles.
- Se alguém mudou esses mesmos arquivos no meio, você tem que lidar com quaisquer conflitos.
Para que toda a solução se sinta perfeita 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 um plugin do Studio, que é como Rojo soluciona esse problema.
Em vez da abordagem de nuvem do Roblox, o Rojo permite uma abordagem "first-in-file". Ele extrai todos os arquivos de script em seu projeto em arquivos Luau. Em seguida, ele executa um servidor. O plugin Rojo se conecta ao servidor para sincronizar esses arquivos com o Studio.
Instalando Rojo com Foreman
Você pode baixar e executar um Rojo binário manualmente, mas esse método corre o risco de diferentes desenvolvedores em sua equipe usando versões diferentes de Rojo. Um método melhor é usar um gerenciador de ferramentas como Foreman, que usa um arquivo de configuração—uma lista de repositórios e versões—para fazer o processo de instalação e atualização consistente em todas as máquinas.
Por ser gerenciador de seu ambiente de desenvolvimento de base, em vez dos pacotes dentro de seu projeto, o Foreman é mais semelhante a nvm do que npm, mas a comparação não é perfeita. Um simples foreman.toml arquivo parece com isso:
[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, o Foreman suporta arquivos de projeto, para que você possa facilmente usar diferentes versões de Rojo, Wally ou qualquer outra ferramenta para diferentes projetos e manter sua equipe inteira em essas mesmas versões.
Quando uma ferramenta lança uma nova versão, você então explicitamente salta o número de versão em seu arquivo .toml, usa o Foreman para executar a upgrade / melhoria, testar a nova versão e desgrade se causar problemas. Para comandos e instruções de instalação, veja Foreman.
Executando Rojo
Depois de instalar o Rojo com o Foreman, o que você realmente instalou é o servidor do Rojo. O próximo passo é instalar o plugin Rojo para o Roblox Studio:
rojo plugin install
Então gere a estrutura do projeto para 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
In Roblox Studio, open the .rbxl file you just built, start the Rojo plugin, and connect to your now-running servidor, at which point you can start making changes in your preferred text editor and watch those changes automatically sync back to Studio.
Projetos Rojo têm certos requisitos de nomeação para arquivos, várias opções de configuração e algumas limitações, todas as quais estão abertas na documentação Rojo.
Gerenciadores de Pacotes
O Roblox tem um conjunto robusto de APIs incluídas, mas se você quiser usar pacotes de software da comunidade de maneira consistente e replicável, você precisa de um gerenciador de pacotes. Wally é uma opção popular. Você pode instalá-lo através do Foreman, como o Roblox.
Dentro da diretória Rojo da sua experiência, execute wally init. Em seguida, adicione os seus pacotes desejados à 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.1.0"
react-roblox = "jsdotlua/react-roblox@17.1.0"
cryo = "phalanxia/cryo@1.0.3"
Então execute wally install. Wally cria uma diretory Packages e baixa os pacotes especificados lá. O passo final é ad
{
"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 de outros projetos de software, o objetivo é que os contribuidores possam clonar um repositório, instalar o Foreman e executar alguns comandos, e ter o mesmo ambiente de desenvolvimento que o resto da Equipe.
Controle de Versão
Ter um conjunto de arquivos de texto simples no seu computador desbloqueia uma variedade de recursos, mas o 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 verificar alterações de códig
Código do Visual Studio tem o maior ecossistema de extensões, mas Sublime Text, Notepad++ e 0> Vim0> são todas escolhas populares. Se você escolher qualquer editor, combinando as capacidades do script do Studio exigirá algumas extensões.
Você também pode considerar adicionar:
- Um linter como selene para capturar problemas comuns e implementar padrões de código
- Um formato de código como StyLua
- Um servidor de linguagem, como Servidor de linguagem Luau para autocompletar, verificar tipo e muito mais
- Abra os scripts da nuvem (não sincronizados ao Studio) para atualizar uma experiência publicada ou reiniciar servidores
Recursos
As ferramentas nesta página são aplicáveis a scripts; os artistas 3D já usam ferramentas externas como o Blender e o Maya, armazenam os arquivos de origem em controle de versão e importam suas criações no Studio. Depois de ter um recurso Studio, recomendamos usar pacotes sempre que possível.
A implementação do pacote do Roblox segue muitos dos mesmos princípios que as ferramentas nesta página: um repositório centralizado com histórico de versões que oferece uma maneira contínua de manter todas as cópias de um recurso em sincronização. Para mais informações sobre como eles podem melhorar seu fluxo de trabalho, see Pacotes .
Desfazendo Tudo
Como ferramentas de terceiros sincronizam as alterações de volta ao Roblox Studio em vez de substituí-lo, nenhuma parte desse fluxo de trabalho envolve qualquer bloqueio. Em qualquer momento, você pode parar de usar uma ou todas essas ferramentas e voltar ao edição de sua experiência exclusivamente no Studio. A falta de risco torna o experimento com ferramentas de terceiros particularmente atraente.