Pour les studios de développement professionnels, le fait de mettre en œuvre des outils tiers et d'investir dans l'automatisation peut améliorer de manière dramatique la productivité des développeurs. L'approche cloud-first de Roblox a de nombreux avantages, mais le déplacement de certaines parties du flux de travail de développement hors du cloud peut aider les équipes plus grandes à suivre les modifications au fil du temps, à vérifier le code et à utiliser les langues et les outils avec lesquels ils sont déjà familiers.
Le problème de la synchronisation
Au cœur, l'utilisation d'outils externes avec Roblox est un problème de synchronisation :
- Vous voulez que vos scripts Roblox existent comme des fichiers .luau sur disque afin que vous puissiez utiliser vos propres outils pour les travailler.
- Vous devez reprendre vos fichiers dans votre projet Roblox après avoir terminé leur travail.
- Si quelqu'un d'autre a changé ces mêmes fichiers en attendant, vous devez gérer tout conflit.
Pour que toute la solution se sente fluide et automatique, vous devez a) écouter les modifications des fichiers et b) incorporer ces modifications dans Studio. En d'autres termes, vous avez besoin d'un serveur et d'un plugin Studio, ce qui est comment Rojo résoud ce problème.
Au lieu de l'approche cloud-first de Roblox, Rojo permet d'utiliser une approche "système de fichiers en premier". Il extrait tous les fichiers de script dans votre projet dans des fichiers Luau. Puis il exécute un serveur. Le plugin Rojo se connecte au serveur pour synchroniser ces fichiers avec Studio.
Installation de Rojo avec Foreman
Vous pouvez télécharger et exécuter manuellement un binaire Rojo, mais cette approche risque de différents développeurs sur votre équipe en utilisant différentes versions de Rojo. Une meilleure solution est d'utiliser un gestionnaire d'outils comme Foreman, qui utilise un fichier de configuration — une liste de répositoires et de versions — pour rendre le processus d'installation et d'amélioration cohérent sur les machines.
Puisque il gère votre environnement de développement de base plutôt que les packages dans votre projet, Foreman ressemble plus à nvm que npm, mais le comparaison n'est pas parfaite. Un simple foreman.toml fichier ressemble à ceci :
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Ensuite, vous installez ces outils avec foreman install . En plus d'un fichier global foreman.toml , Foreman prend en charge les fichiers par projet, afin que vous puissiez facilement utiliser différentes versions de Rojo, Wally ou n'importe quelle autre outil pour différents projets et garder votre équipe entière sur ces mêmes versions.
Lorsqu'un outil publie une nouvelle version, vous exécutez alors explicitement le numéro de version dans votre fichier .toml, utilisez Foreman pour exécuter la améliorationà jour, tester la nouvelle version et dégradez si elle cause des problèmes. Pour les commandes et les instructions d'installation, voir Foreman.
Courir Rojo
Après l'installation de Rojo avec Foreman, ce que vous avez vraiment installé, c'est le serveur Rojo. La prochaine étape est d'installer le plugin Rojo pour Roblox Studio :
rojo plugin install
Ensuite, générez la structure du projet pour votre nouvelle expérience et construisez-la :
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
En outre, vous pouvez porter une expérience existante. De toute façon, après avoir un projet, démarrez le serveur Rojo :
rojo serve
Dans Roblox Studio, ouvrez le .rbxl fichier que vous venez de construire, démarrez le plugin Rojo et connectez-vous à votre serveur en cours d'exécution, à partir duquel vous pouvez commencer à apporter des modifications dans votre éditeur de texte préféré et voir ces changements automatiquement synchronisés à Studio.
Les projets Rojo ont des exigences de nommage certaines pour les fichiers, de nombreuses options de configuration et certaines limites, toutes lesquelles sont couvertes dans la documentation Rojo.
Gestionnaires de paquet
Roblox a un ensemble robuste d'API incluses, mais si vous voulez utiliser les logiciels de communauté dans une manière cohérente et répliquable, vous avez besoin d'un gestionnaire de packs. Wally est une option populaire. Vous pouvez l'installer via Foreman, comme Rojo.
Dans la direction de votre expérience Rojo, exécutez wally init . Ensuite, ajoutez vos packs souhaités à wally.toml . Le fichier pourrait ressembler à ceci :
[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"
Ensuite, exécutez wally install. Wally crée un Packages dossier et télécharge les packages spécifiés là-bas.
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Vous pouvez alors exiger des packages dans vos scripts comme n'importe quel autre 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)
Comme la plupart des autres projets de logiciel, l'objectif est que les contribuables puissent cloner un référentiel, installer Foreman, exécuter quelques commandes et avoir le même environnement de développement que le reste de l'équipe.
Contrôle de la version
Avoir un ensemble de fichiers de texte simples sur votre ordinateur déverrouille une variété de capacités, mais le principal est contrôle de la version. Vous pouvez stocker vos scripts et vos fichiers de configuration dans un git ou mercurial réfétoire ; héberter des référentiels à distance et modifier les modifications du code dans 2>
Visual Studio Code a le plus grand écosystème d' extensions, mais Sublime Text, Notepad++ et 0> Vim 0> sont tous des choix populaires. Quelle que soit l' éditeur que vous choisir, correspondant aux capacités du script Studio exigez quelques extensions.
Vous pourriez également envisager d'ajouter :
- Un linter comme selene pour attraper les problèmes communs et appliquer les normes de codage
- Un modificateur de code comme StyLua
- Un serveur de langue comme Luau Language Server pour l'autocomplétion, le type de vérification et plus encore
- Ouvrez les scripts Cloud (pas synchronisés à Studio) pour mettre à jour une expérience publiée ou redémarrer les serveurs
Ressources
Les outils sur cette page sont les plus applicables aux scripts ; les artistes 3D utilisent déjà des outils externes comme Blender et Maya, stockent les fichiers source dans la version de contrôle et importent leurs créations dans Studio. Après avoir un contenuStudio, nous recommandons d'utiliser des packs à chaque fois que possible.
L'implémentation Roblox des packages suit de nombreux principes similaires aux outils sur cette page : un référentiel centralisé avec une histoire des versions qui offre une façon transparente de garder toutes les copies d'une ressource en synchronisation. Pour plus d'informations sur la façon dont ils peuvent améliorer votre flux de travail, voir les packages.
Annuler tout
Puisque les outils tiers synchronisent les modifications de retour dans Roblox Studio plutôt que de les remplacer, aucune partie de ce workflow n'involve de verrouillage. À tout moment, vous pouvez arrêter d'utiliser l'un ou tous ces outils et retourner à l'édition de votre expérience exclusivement dans Studio. Le manque de risque rend l'expérience avec des outils tiers particulièrement attrayante.