Per gli studi di sviluppo professionale, configurare strumenti di terze parti e investire in automazione può migliorare drammaticamente la produttività degli sviluppatori.L'approccio cloud-first di Roblox ha molti vantaggi, ma spostare alcune parti del flusso di lavoro di sviluppo fuori del cloud può aiutare le squadre più grandi a tracciare le modifiche nel tempo, a rivedere il codice e a utilizzare le lingue e gli strumenti con cui sono già familiari.
Il problema di sincronizzazione
Al suo centro, l'uso di strumenti esterni con Roblox è un problema di sincronizzazione sincronizzazione:
- Vuoi che i tuoi script Roblox esistano come .luau su disco in modo da poter usare i tuoi strumenti per lavorarci.
- Devi riportare i tuoi file nel tuo progetto Roblox dopo aver terminato di lavorarci.
- Se qualcun altro cambia gli stessi file nel frattempo, devi gestire qualsiasi conflitto.
Perché l'intera soluzione si senta senza soluzione di continuità e automatica, devi a) ascoltare i cambiamenti nei file e b) incorporare questi cambiamenti nuovamente in Studio.In altre parole, hai bisogno di un server e di un CollegareStudio, che è il modo in cui Rojo risolve questo problema.
Piuttosto che l'approccio cloud-first di Roblox, Rojo consente un approccio "file system-first".Estrae tutti i file di script nel tuo progetto nei file Luau.Quindi esegue un Server.Il plugin Rojo si connette al server per sincronizzare quei file con Studio.
Installa Rojo con Foreman
Puoi scaricare e eseguire manualmente un binario Rojo, ma tale approccio corre il rischio che diversi sviluppatori nella tua squadra utilizzino diverse versioni di Rojo.Una soluzione migliore è utilizzare un gestore di strumenti come Foreman, che utilizza un file di configurazione — un elenco di repository e versioni — per rendere coerente il processo di installazione e aggiornamento su più macchine.
Poiché gestisce l'ambiente di sviluppo di base piuttosto che i pacchetti all'interno del tuo progetto, Foreman è più simile a nvm che a npm, ma la comparazione non è perfetta.Un semplice file foreman.toml file sembra questo:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Quindi installi questi strumenti con foreman install .Oltre a un file globale foreman.toml , Foreman supporta i file per progetto, quindi puoi facilmente utilizzare diverse versioni di Rojo, Wally o qualsiasi altro strumento per progetti diversi e mantenere tutta la tua squadra su quelle stesse versioni.
Quando un tool rilascia una nuova versione, quindi aumenta esplicitamente il numero di versione nel tuo file .toml, usa Foreman per eseguire l'Aggiornarmento, testa la nuova versione e declassa se causa problemi.Per comandi e istruzioni di installazione, vedi Foreman.
Esecuzione di Rojo
Dopo aver installato Rojo con Foreman, ciò che hai realmente installato è il ServerRojo. Il prossimo passo è quello di installare il plugin Rojo per Roblox Studio:
rojo plugin install
Quindi genera la struttura del progetto per la tua nuova esperienza e costruiscila:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
In alternativa, puoi portare un'esperienza esistente. In ogni caso, dopo aver avuto un progetto, avvia il ServerRojo:
rojo serve
In Roblox Studio, apri il file .rbxl appena costruito, avvia il CollegareRojo e connetti al tuo Serverin esecuzione, a cui punto puoi iniziare a fare modifiche nel tuo editor di testo preferito e osservare tali modifiche sincronizzate automaticamente in Studio.
I progetti Rojo hanno determinati requisiti di denominazione per i file, numerose opzioni di configurazione e alcune limitazioni, tutte le quali sono coperte nella documentazione Rojo .
Gestori di pacchetti
Roblox ha un set robusto di API incluse, ma se vuoi usare i pacchetti software della comunità in modo coerente e riproducibile, hai bisogno di un gestore dei pacchetti.Wally è un'opzione popolare.Puoi installarlo attraverso Foreman, proprio come Rojo.
All'interno della directory Rojo della tua esperienza, esegui wally init . Quindi aggiungi i pacchetti desiderati a wally.toml . Il file potrebbe sembrare così:
[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"
Quindi esegui wally install.Wally crea una directory Packages e scarica i pacchetti specificati lì.L'ultimo passo è quello di aggiungere la directory Packages a Rojo in modo che i suoi contenuti si sincronizzino con Roblox.Apri default.project.json e aggiungi il percorso.Per semplicità, questo esempio aggiunge l'intera directory a ReplicatedStorage in modo che tutti i pacchetti siano disponibili per tutti gli script, ma potresti preferire aggiungere pacchetti specifici a ServerScriptService o StarterPlayerScripts :
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Quindi puoi richiedere pacchetti all'interno dei tuoi script come qualsiasi altro 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)
Come la maggior parte degli altri progetti software, l'obiettivo è che i contributori possano clonare un repository, installare Foreman, eseguire alcuni comandi e avere lo stesso ambiente di sviluppo del resto della team.
Controllo della versione
Avere un insieme di file di testo semplice sul tuo computer sblocca una varietà di capacità, ma la principale è il controllo della versione.Puoi archiviare gli script e i file di configurazione in un repository Git o Mercurial; ospita i repository remoti e rivedi le modifiche al codice nel GitHub, GitLab o Bitbucket ; e usa l'editor di testo che preferisci.
Visual Studio Code ha l'ecosistema di estensione più grande, ma Sublime Text , Notepad++ e Vim sono tutte scelte popolari.Qualunque editor Scegli, corrispondere alle capacità dell'editor dello script di Studio richiederà alcune estensioni.
Potresti anche considerare di aggiungere:
- Un linter come selene per catturare problemi comuni e applicare gli standard di codifica
- Un formattatore di codice come StyLua
- Un server di lingua come Luau Language Server per l'autocompletamento, il controllo del tipo e altro ancora
- Apri gli script del cloud (non sincronizzati con Studio) a aggiornare un'esperienza pubblicata o riavvia i server
Risorse
Gli strumenti di questa pagina sono più applicabili agli script; gli artisti 3D già utilizzano strumenti esterni come Blender e Maya, memorizzano i file sorgenti nel controllo della versione e importano le loro creazioni in Studio.Dopo aver ottenuto una risorsa Studio, raccomandiamo di utilizzare pacchetti ogni volta che possibile.
L'implementazione dei pacchetti di Roblox segue molti degli stessi principi degli strumenti di questa pagina: un repository centralizzato con cronologia delle versioni che offre un modo senza soluzione di continuità per mantenere tutte le copie di una risorsa sincronizzate.Per ulteriori informazioni su come possono migliorare il tuo flusso di lavoro, vedi Pacchetti.
Annulla tutto
Poiché gli strumenti di terze parti sincronizzano le modifiche tornando a Roblox Studio piuttosto che sostituirlo, nessuna parte di questo flusso di lavoro coinvolge alcun blocco.In qualsiasi momento, puoi smettere di utilizzare uno o tutti questi strumenti e tornare a modificare la tua esperienza esclusivamente in Studio.La mancanza di rischi rende l'esperimento con strumenti di terze parti particolarmente attraente.