Ferramentas de Terceiros

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

Para estúdios de desenvolvimento profissionais, configurar ferramentas de terceiros e investir em automação pode melhorar drasticamente a produtividade do desenvolvedor. A abordagem cloud-first do Roblox tem muitas vantagens, mas mover certas partes do workflow de desenvolvimento fora da nuvem pode ajudar equipes maiores a rastrear mudanças ao longo do tempo, revisar código e usar os idiomas e ferramentas com os quais eles já estão familiarizados.

O Problema da Sincronização

No seu núcleo, usar ferramentas externas com o Roblox é um problema de sincronização:

  • Você quer que seus scripts do Roblox existam como .luau arquivos no disco para que você possa usar suas próprias ferramentas para trabalhá-los.
  • Você tem que colocar seus arquivos de volta no seu projeto Roblox depois de terminar de trabalhar neles.
  • Se alguém alterou os mesmos arquivos enquanto isso, você tem que lidar com quaisquer conflitos.

Para que toda a solução se sinta perfeita e automática, você precisa de a) ouvir as mudanças nos arquivos e b) incorporar essas mudanças no 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 cloud-first do Roblox, Rojo permite uma abordagem de "file system-first." Ele extrai todos os arquivos de script do seu projeto em arquivos Luau. Em seguida, roda um servidor. O plugin Rojo se conecta ao servidor para sincronizar esses arquivos com o Studio.

Instalando Rojo com Foreman

Você pode baixar e correr um binário Rojo manualmente, mas essa abordagem corre o risco de diferentes desenvolvedores em sua equipe usarem diferentes versões de 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 entre as máquinas.

Como gerencia seu ambiente de desenvolvimento de linha de base em vez dos pacotes dentro do seu projeto, Foreman é mais parecido com nvm do que npm , mas a comparação não é perfeita. Um simples foreman.toml arquivo se parece com isso:


[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }

Em seguida, você instalaressas ferramentas com foreman install . Além de um arquivo foreman.toml global, o Foreman suporta arquivos por projeto, para que você possa facilmente usar diferentes versões de 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ê explicitamente anota o número da versão no seu arquivo .toml, use o Foreman para realizar a upgrade / melhoria, testar a nova versão e fazer downgrade se causar problemas. Para comandos e instruções de instalação, consulte Foreman.

Correndo Rojo

Depois de instalar Rojo com Foreman, o que você realmente instalou é o servidor Rojo. O próximo passo é instalar o plugin Rojo para Roblox Studio:


rojo plugin install

Em seguida, crie a estrutura do projeto para sua nova experiência e construa-a:


rojo init my-new-experience
cd my-new-experience
rojo 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 criar, inicie o plugin Rojo e conecte-se ao seu servidor agora em funcionamento. Nesse ponto, você pode começar a fazer alterações no seu editor de texto preferido e assistir a essas alterações automaticamente sincronizadas de volta ao Studio.

Os projetos do Rojo têm certos requisitos de nomeação para arquivos, inúmeras opções de configuração e algumas limitações, todas cobertas na documentação do Rojo.

Gerenciadores de Pacotes

O Roblox tem um conjunto robusto de APIs incluídas, mas se você quiser usar os pacotes de software da comunidade de uma 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, corra wally init . Em seguida, adicione os pacotes desejados a wally.toml . O arquivo pode se 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"

Em seguida, corra wally install. Wally cria um Packages diretório e baixa os pacotes especificados lá. O passo final é adicionar o Packages diretório ao Rojo para que seu conteúdo seja sincronizado de volta ao Roblox. Abra default.project.json e adicione o caminho. Para simplificar, este exemplo adiciona o diretório inteiro ao ReplicatedStorage para que todos os pacotes estejam disponíveis para todos os scripts, mas você pode preferir adicionar pacotes específicos ao 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 Foreman, rodar 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 em seu computador desbloqueia uma variedade de capacidades, mas a principal é o 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 mudanças de código em GitHub , GitLab , ou Bitbucket ; e usar o editor de texto que você quiser.

O 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, corresponder às capacidades do editor de scripts do Studio exigirá algumas extensões.

Você também pode considerar adicionar:

Ativos

As ferramentas nesta página são mais aplicáveis a scripts; 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 para o Studio. Depois de ter um ativo do Studio, recomendamos o uso de pacotes sempre que possível.

A implementação de pacotes 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 perfeita de manter todas as cópias de um ativo em sincronia. Para mais informações sobre como eles podem melhorar seu workflow, consulte Pacotes .

Desfazendo Tudo

Como as ferramentas de terceiros sincronizam as alterações de volta para o Roblox Studio em vez de substituí-lo, nenhuma parte deste workflow 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 especialmente atraente.