Für professionelle Entwicklungsstudios kann die Einrichtung von Drittwerkzeugen und die Investition in Automatisierung die Entwicklerproduktivität dramatisch verbessern.Der Cloud-First-Ansatz von Roblox hat viele Vorteile, aber das Verschieben bestimmter Teile des Entwicklungsprozesses außerhalb der Cloud kann größeren Teams helfen, Änderungen im Laufe der Zeit zu verfolgen, Codeszu überprüfen und die Sprachen und Werkzeuge zu verwenden, mit denen sie bereits vertraut sind.
Das Sync-Problem
Im Kern ist die Verwendung externer Tools mit Roblox ein Synchronisierungsproblem:
- Du möchtest, dass deine Roblox-Skripte als .luau Dateien auf der Festplatte existieren, damit du deine eigenen Werkzeuge verwenden kannst, um daran zu arbeiten.
- Du musst deine Dateien zurück in dein Roblox-Projekt bringen, nachdem du damit fertig bist, daran zu arbeiten.
- Wenn sich jemand anders in der Zwischenzeit die gleichen Dateien ändert, musst du alle Konflikte lösen.
Damit die gesamte Lösung nahtlos und automatisch wirkt, musst du a) auf Änderungen an Dateien hören und b) diese Änderungen wieder in Studio einbauen.Mit anderen Worten, du brauchst einen Server und ein Plug-in, wie Rojo dieses Problem löst.
Anstatt Roblox' Cloud-First-Ansatz, ermöglicht Rojo einen "Dateisystem-First-Ansatz".Es extrahiert alle Skriptdateien in deinem Projekt in Luau-Dateien.Dann läuft es einen Server.Das Rojo-Plugin verbindet sich mit dem Server, um diese Dateien mit Studio zu synchronisieren.
Rojo mit Foreman installieren
Du kannst eine Rojo-Binärdatei manuell herunterladen und ausführen, aber dieser Ansatz birgt das Risiko, dass verschiedene Entwickler in deinem Team verschiedene Rojo-Versionen verwenden.Eine bessere Lösung ist die Verwendung eines Toolmanagers wie Foreman, der eine Konfigurationsdatei verwendet - eine Liste von Repositories und Versionen -, um den Installations- und Upgrade-Prozess auf allen Maschinen konsistent zu machen.
Da es deine Basis-Entwicklungsumgebung verwaltet, anstatt die Pakete innerhalb deines Projekts, ist Foreman eher ähnlich mit nvm als npm, aber der Vergleich ist nicht perfekt.Eine einfache foreman.toml Datei sieht so aus:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Dann installierst du diese Tools mit foreman install.Zusätzlich zu einer globalen foreman.toml Datei unterstützt Foreman projektbezogene Dateien, so dass Sie einfach verschiedene Versionen von Rojo, Wally oder jedem anderen Werkzeug für verschiedene Projekte verwenden können und Ihr gesamtes Team auf diesen Versionen behalten können.
Wenn ein Werkzeug eine neue Version veröffentlicht, erhöhst du dann explizit die Versionsnummer in deiner .toml Datei, führe das Upgrade mit Foreman durch, teste die neue Version und downgrade, wenn es Probleme verursacht.Für Befehle und Installationsanweisungen siehe Vorgesetzter.
Rojo ausführen
Nachdem du Rojo mit Foreman installiert hast, was du wirklich installiert hast, ist der Rojo-Server. Der nächste Schritt besteht darin, das Rojo-Plugin für Roblox Studio zu installieren:
rojo plugin install
Generiere dann die Projektstruktur für deine neue Erfahrung und baue sie auf:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
Alternativ kannst du ein vorhandenes Erlebnis portieren. Wie auch immer, nachdem du ein Projekt hast, starte den Rojo-Server:
rojo serve
Öffne in Roblox Studio die .rbxl Datei, die du gerade erstellt hast, starte das Plug-inund verbinde dich mit deinem nun laufenden Server, bei dem du Änderungen in deinem bevorzugten Textbearbeiter vornehmen und diese Änderungen automatisch in Studio überprüfen kannst.
Rojo-Projekte haben bestimmte Namensanforderungen für Dateien, zahlreiche Konfigurationsoptionen und einige Einschränkungen, die alle in der Rojo-Dokumentation abgedeckt sind.
Paketmanager
Roblox hat eine robuste Reihe von enthaltenen APIs, aber wenn du Community-Softwarepakete auf konsistente, reproduzierbare Weise nutzen möchtest, brauchst du einen Paketenmanager.Wally ist eine beliebte Option.Sie können es durch Foreman installieren, genau wie Rojo.
Im Rojo-Verzeichnis deiner Erlebnisführst du wally init aus. Füge dann deine gewünschten Pakete zu wally.toml hinzu. Die Datei könnte wie folgt aussehen:
[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"
Dann führe wally install aus.Wally erstellt eine Packages-Verzeichnis und lädt die angegebenen Pakete dort herunter.Der letzte Schritt besteht darin, die Packages-Verzeichnis zu Rojo hinzuzufügen, damit seine Inhalte mit Roblox synchronisiert werden.Öffne default.project.json und füge den Pfad hinzu.Zum Einfachheitssinn fügt dieses Beispiel die gesamte Ordnerstruktur zu ReplicatedStorage hinzu, so dass alle Pakete für alle Skripte verfügbar sind, aber Sie möchten vielleicht spezifische Pakete zu ServerScriptService oder StarterPlayerScripts hinzufügen:
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Dann können Sie Pakete innerhalb Ihrer Skripte wie jedes andere ModuleScript erfordern:
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)
Wie die meisten anderen Softwareprojekte hat das Ziel, dass Mitwirkende ein Repository klonen, Foreman installieren, ein paar Befehle ausführen und die gleiche Entwicklungsumgebung wie der Rest des Teams haben.
Versionskontrolle
Eine Reihe von einfachen Textdateien auf Ihrem Computer freigeschaltet eine Vielzahl von Funktionen, aber die Hauptfunktion ist Versionierungskontrolle.Du kannst deine Skripte und Konfigurationsdateien in einem Git oder Mercurial Repository speichern; hoste ferne Repositories und prüfe Codeänderungen in GitHub, GitLab oder Bitbucket und verwende den Texteditor, den du magst.
Visual Studio-Code hat das größte Erweiterungsökosystem, aber Sublime Text , Notepad++ und Vim sind allesamt beliebte Optionen.Welchen Editor du wählenwählst, die Übereinstimmung der Fähigkeiten des Studio-Skript-Editors erfordert einige Erweiterungen.
Du kannst auch in Betracht ziehen, hinzuzufügen:
- Ein Linter wie selene, um häufige Probleme zu erkennen und Codierungsstandards durchzusetzen
- Ein Code-Formatierer wie StyLua
- Ein Sprachserver wie Luau Language Server für automatische Vervollständigung, Typprüfung und mehr
Vermögenswerte
Die Werkzeuge auf dieser Seite sind am ehesten für Skripte anwendbar; 3D-Künstler verwenden bereits externe Werkzeuge wie Blender und Maya, speichern die Quelldateien in der Versionskontrolle und importieren ihre Kreationen in Studio.Nachdem du ein Objekthast, empfehlen wir, Pakete so oft wie möglich zu verwenden.
Die Roblox-Implementierung von Paketen folgt vielen der gleichen Prinzipien wie die Werkzeuge auf dieser Seite: einem zentralisierten Repository mit Versionsverlauf, das einen nahtlosen Weg bietet, alle Kopien eines Assets im Einklang zu halten.Für weitere Informationen darüber, wie sie Ihren Workflow verbessern können, sehen Sie Pakete.
Alles rückgängig machen
Da Drittwerkzeuge Änderungen nicht in Roblox Studio wieder synchronisieren, sondern es ersetzen, beinhaltet kein Teil dieses Workflows irgendeine Sperre.Jederzeit kannst du aufhören, eines oder alle dieser Tools zu verwenden und geh zurück, deine Erfahrung ausschließlich in Studio zu bearbeiten.Das Fehlen von Risiken macht das Experimentieren mit Drittwerkzeugen besonders attraktiv.