Pour les studios de développement professionnels, la mise en place d'outils tiers et l'investissement dans l'automatisation peuvent améliorer de manière spectaculaire la productivité des développeurs.L'approche cloud-first de Roblox a de nombreux avantages, mais déplacer certaines parties du flux de travail de développement en dehors du cloud peut aider les équipes plus importantes à suivre les changements au fil du temps, à revoir le code et à utiliser les langues et les outils auxquels elles sont déjà familières.
Le problème de synchronisation
À son cœur, l'utilisation d'outils externes avec Roblox est un problème de synchronisation :
- Vous voulez que vos scripts Roblox existent en tant que .luau fichiers sur disque afin que vous puissiez utiliser vos propres outils pour y travailler.
- Vous devez récupérer vos fichiers dans votre projet Roblox après avoir terminé de les travailler.
- Si quelqu'un d'autre modifie ces mêmes fichiers en attendant, vous devez gérer tout conflit.
Pour que toute la solution soit fluide et automatique, vous devez a) écouter les modifications des fichiers et b) intégrer ces modifications dans Studio.En d'autres termes, vous avez besoin d'un serveur et d'un plugin Studio, c'est ainsi que Rojo résout ce problème.
Plutôt que l'approche cloud-first de Roblox, Rojo permet une approche « système de fichiers en premier ».Il extrait tous les fichiers de script dans votre projet en fichiers Luau.Ensuite, il exécute un serveur.Le plugin Rojo se connecte au serveur pour synchroniser ces fichiers avec Studio.
Installer Rojo avec Foreman
Vous pouvez télécharger et exécuter manuellement un binaire Rojo, mais cette approche coure le risque que différents développeurs de votre équipe utilisent différentes versions de Rojo.Une meilleure solution consiste à utiliser un gestionnaire d'outils comme Foreman, qui utilise un fichier de configuration — une liste de référentiels et de versions — pour rendre le processus d'installation et de mise à niveau cohérent sur les machines.
Parce qu'il gère l'environnement de développement de base plutôt que les packages dans votre projet, Foreman est plus proche de nvm que de npm, mais la comparaison n'est pas parfaite.Un simple fichier foreman.toml simple 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, vous pouvez donc facilement utiliser différentes versions de Rojo, Wally ou tout autre outil pour différents projets et garder toute votre équipe sur ces mêmes versions.
Lorsqu'un outil publie une nouvelle version, vous devez alors augmenter explicitement le numéro de version dans votre fichier .toml, utiliser Foreman pour effectuer la mise à amélioration, tester la nouvelle version et rétrograder si elle cause des problèmes.Pour les commandes et les instructions d'installation, voir Foreman.
Exécuter Rojo
Après avoir installé Rojo avec Foreman, ce que vous avez vraiment installé est le serveur Rojo. La prochaine étape consiste à 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
Alternativement, vous pouvez porter une expérience existante. Quoi qu'il en soit, après avoir un projet, lancez le serveur Rojo :
rojo serve
Dans Roblox Studio, ouvrez le fichier .rbxl que vous venez de construire, lancez le plugin Rojo et connectez-vous à votre serveur en cours d'exécution, auquel point vous pouvez commencer à faire des modifications dans votre éditeur de texte préféré et regarder ces modifications se synchroniser automatiquement dans Studio.
Les projets Rojo ont certaines exigences de nomination pour les fichiers, de nombreuses options de configuration et quelques limitations, toutes lesquelles sont couvertes dans la documentation Rojo.
Gestionnaires de packages
Roblox a un ensemble robuste d'API incluses, mais si vous voulez utiliser les packages de logiciels communautaires de manière cohérente et reproductible, vous avez besoin d'un gestionnaire de paquet.Wally est une option populaire.Vous pouvez l'installer via Foreman, tout comme Rojo.
Dans le répertoire Rojo de votre expérience, exécutez wally init . Ensuite, ajoutez les packages 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 répertoire Packages et télécharge les packages spécifiés là-bas.La dernière étape consiste à ajouter le répertoire Packages à Rojo afin que son contenu soit synchronisé avec Roblox.Ouvrez default.project.json et ajoutez le chemin.Pour simplifier, cet exemple ajoute l'ensemble du répertoire à ReplicatedStorage afin que tous les packages soient disponibles pour tous les scripts, mais vous préférez peut-être ajouter des packages spécifiques à ServerScriptService ou StarterPlayerScripts :
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Vous pouvez ensuite 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 logiciels, l'objectif est que les contributeurs 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 version
Avoir un ensemble de fichiers de texte simple sur votre ordinateur débloque une variété de capacités, mais la principale est le contrôle de version.Vous pouvez stocker vos scripts et fichiers de configuration dans un référentiel Git ou Mercurial, héberger des référentiels à distance et examiner les modifications de code dans GitHub, GitLab ou Bitbucket ; et utiliser l'éditeur de texte que vous préférez.
Le code Visual Studio a le plus grand écosystème d'extensions, mais Sublime Text , Notepad++ et Vim sont tous des choix populaires.Quel que soit l'éditeur que vous choisir, le fait de correspondre aux capacités de l'éditeur de script Studio nécessitera quelques extensions.
Vous pouvez également envisager d'ajouter :
- Un linter comme selene pour capturer les problèmes communs et appliquer les normes de codage
- Un formatteur de code comme StyLua
- Un serveur de langue comme Luau Language Server pour l'autocomplétion, la vérification du type et plus encore
- Ouvrir les scripts du cloud (non synchronisés avec Studio) pour mettre à jour une expérience publiée ou redémarrer les serveurs
Actifs
Les outils de cette page sont les plus applicables aux scripts ; les artistes 3D utilisent déjà des outils externes comme Blender et Maya, stockent les fichiers sources dans le contrôle de version et importent leurs créations dans Studio.Une fois que vous avez une contenuStudio, nous vous recommandons d'utiliser packages chaque fois que possible.
La mise en œuvre des packages de Roblox suit de nombreux principes identiques à ceux des outils sur cette page : un référentiel centralisé avec historique des versions qui offre un moyen transparent de garder toutes les copies d'une ressource en phase.Pour plus d'informations sur la façon dont ils peuvent améliorer votre flux de travail, voir packages.
Retourner tout
Parce que les outils tiers synchronisent les modifications de retour à Roblox Studio plutôt que de les remplacer, aucune partie de ce flux de travail n'implique de verrouillage.À tout moment, vous pouvez arrêter d'utiliser l'un ou tous ces outils et revenir à l'édition de votre expérience exclusivement dans Studio.Le manque de risque rend l'expérimentation avec des outils tiers particulièrement attrayante.