Per gli studi di sviluppo professionale, l'impostazione di strumenti di terze parti e l'investimento nell'automatizzazione può migliorare drasticamente la produttività degli sviluppatori. L'approccio cloud-first di Roblox ha molti vantaggi, ma spostare alcune parti del flusso di lavoro di sviluppo fuori dal cloud può aiutare le grandi aziende a tracciare le modifiche nel tempo, a rivedere il codice e ad utilizzare le lingue e gli strumenti con cui
Il problema della sincronizzazione
Al suo core, l'uso di strumenti esterni con Roblox è un problema di sync :
- Vuoi che i tuoi script Roblox esistano come .luau file sul disco in modo da poter utilizzare i tuoi strumenti per lavorarci.
- Devi restituire i tuoi file nel tuo progetto Roblox dopo aver finito di lavorarci.
- Se qualcun altro ha cambiato questi stessi file nel frattempo, devi gestire eventuali conflitti.
Per il fatto che l'intera soluzione si senta perfetta e automatica, devi a) ascoltare le modifiche ai file e b) incorporare queste modifiche nel tuo Studio. In altre parole, hai bisogno di un server e un CollegareStudio, che è come Rojo risolve questo problema.
Piuttosto che l'approccio cloud-first di Roblox, Rojo consente un approccio "first file system" . Esso estrae tutti i file di script nel tuo progetto in file Luau. Quindi esegue un Server. Il plugin Rojo si connette al server per sincronizzare questi file con Studio.
Installazione di Rojo con Foreman
Puoi scaricare e eseguire manualmente un binario Rojo, ma questo approccio corre il rischio di diversi sviluppatori sul tuo team utilizzando diverse versioni Rojo. Un approccio migliore è utilizzare un gestore di strumenti come Foreman, che utilizza un file di configurazione—una lista di repository e versioni—per rendere il processo di installazione e aggiornamento coerente tra le macchine.
Poiché gestisce il tuo ambiente di sviluppo di base invece che i pacchetti all'interno del tuo progetto, Foreman è più simile a nvm che npm , ma la comparazione non è perfetta. Un semplice foreman.toml file sembra come 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, in modo da poter facilmente utilizzare diverse versioni di Rojo, Wally o qualsiasi altro strumento per progetti diversi e mantenere tutta la tua squadra su le stesse versioni.
Quando uno strumento rilascia una nuova versione, devi quindi esplicitamente aumentare il numero di versione nel tuo file .toml, usare Foreman per eseguire l'Aggiornarmento, testare la nuova versione e downgrade se causa problemi. Per i comandi e le istruzioni di installazione, vedi Foreman.
Rojo in esecuzione
Dopo aver installato Rojo con Foreman, ciò che hai davvero installato è il ServerRojo. Il prossimo passo è 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 un progetto, inizia il ServerRojo:
rojo serve
In Roblox Studio, apri il file .rbxl che hai appena creato, inizia il CollegareRojo e connetti al tuo Serverin esecuzione, al quale punto puoi iniziare a apportare modifiche nel tuo editor di testo preferito e guardare queste modifiche in automatico sincronizzate al tuo Studio.
I progetti Rojo hanno alcuni requisiti di nome per i file, numerose opzioni di configurazione e alcune limitazioni, tutte delle quali sono descritte nella documentazione Rojo.
Gestori di pacchetto
Roblox ha un set robusto di API incluse, ma se vuoi usare le API della community in modo coerente e riproдуibile, hai bisogno di un gestore di pacchetti. Wally è un'opzione popolare. Puoi installarlo attraverso Foreman, proprio come Rojo.
All'interno della direttoria Rojo della tua esperienza, esegui wally init . Quindi aggiungi i pacchetti desiderati a wally.toml . Il file potrebbe sembrare come questo:
[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 cartella Packages e scarica i pacchetti specificati lì. Il passo finale è ag
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Allora 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 set di file di testo piani sul tuo computer sblocca una varietà di funzionalità, ma la principale è controllo della versione. Puoi archiviare i tuoi script e file di configurazione in un Git o Mercurial repository; hostare i depositi remoti e modificare le modifiche del codice in 1>Git
Visual Studio Code ha il più grande ekosistema di estensioni, ma Sublime Text , Notepad++ e 0> Vim0> sono tutte scelte popolari. Qualunque editor Scegli, corrispondere alle capacità dello script editor Studio richiederà alcune estensioni.
Potresti anche considerare di aggiungere:
- Un linter come selene per catturare problemi comuni e applicare standard di codifica
- Un codice formatter come StyLua
- Un server di lingua come Luau Language Server per l'autocompletamento, il tipo di controllo e molto altro
- Apri gli script del cloud Open Cloud (non sincronizzati con Studio) per aggiornare un'esperienza pubblicata o riavviare i server
Risorse
Gli strumenti su questa pagina sono più applicabili agli script; gli artisti 3D già utilizzano strumenti esterni come Blender e Maya, memorizzano i file di origine in controllo della versione e importano le loro creazioni in Studio. Dopo aver un risorsa Studio, raccomandiamo di utilizzare pacchetti ogni volta possibile.
L'implementazione dei pacchetti segue molti dei medesimi principi delle risorse su questa pagina: una repository centralizzata con cronologia delle versioni che offre un modo coerente per mantenere tutte le copie di una risorsa in sincronia. Per ulteriori informazioni su come possono migliorare il tuo flusso di lavoro, vedi Pacchetti .
Ripristinare tutto
Poiché gli strumenti di terze parti sincronizzano le modifiche a Roblox Studio invece di 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 all'editing della tua esperienza esclusivamente in Studio. Il mancato rischio rende l'esperienza con gli strumenti di terze parti particolarmente attraente.