Para los estudios de desarrollo profesional, configurar herramientas de terceros y invertir en automatización puede mejorar drásticamente la productividad del desarrollador. El enfoque de Roblox de nube primero tiene muchas ventajas, pero mover ciertas partes del flujo de trabajo de desarrollo fuera de la nube puede ayudar a los equipos más grandes a rastrear los cambios con el tiempo, revisar el código y usar los lenguajes y herramientas con los que ya están familiarizados.
El problema de sincronización
En su núcleo, usar herramientas externas con Roblox es un problema de sincronización :
- Quieres que tus scripts de Roblox existan como archivos .luau en el disco para que puedas usar tus propias herramientas para trabajar en ellos.
- Tienes que devolver tus archivos a tu proyecto Roblox después de haber terminado de trabajar en ellos.
- Si alguien más cambió esos mismos archivos en el momento, tienes que manejar cualquier conflicto.
Para que toda la solución se sienta sin fisuras y automática, necesitas a) escuchar las actualizaciones de los archivos y b) incorporar estas actualizaciones de vuelta en Studio. En otras palabras, necesitas un servidor y un complementode Studio, que es cómo Rojo soluciona este problema.
En lugar de la aproximación de Roblox basada en la nube, Rojo permite una aproximación "de sistema de archivos primero". Extrae todos los archivos de script en tu proyecto a archivos Luau. Luego se ejecuta un servidor. El plugin Rojo se conecta al servidor para sincronizar esos archivos con Studio.
Instalando Rojo con Foreman
Puede descargar y ejecutar manualmente un binario Rojo, pero ese enfoque tiene el riesgo de diferentes desarrolladores en su equipo usando diferentes versiones de Rojo. Una mejor solución es usar un gestor de herramientas como Foreman, que usa un archivo de configuración—una lista de repositorios y versiones—para hacer que el proceso de instalación y actualización sea consistente en todas las máquinas.
Dado que gestiona su entorno de desarrollo de base en lugar de los paquetes dentro de su proyecto, Foreman es más parecido a nvm que npm, pero la comparación no es perfecta. Un simple archivo foreman.toml se ve así:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Luego instalas estas herramientas con foreman install . Además de un archivo global foreman.toml , Foreman soporta archivos por proyecto, para que puedas usar fácilmente diferentes versiones de Rojo, Wally o cualquier otra herramienta para diferentes proyectos y mantener a tu equipo entero en las mismas versiones.
Cuando una herramienta publica una nueva versión, entonces específicamente salta el número de versión en tu archivo .toml, usa a Foreman para realizar la mejora, probar la nueva versión y des actualizar si causa algún problema. Para comandos y instrucciones de instalación, véase Foreman.
Corriendo Rojo
Después de que hayas instalado Rojo con Foreman, lo que realmente has instalado es el servidor de Rojo. El siguiente paso es instalar el plugin de Rojo para Roblox Studio:
rojo plugin install
Luego genera la estructura del proyecto para tu nueva experiencia y construyelo:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
Alternativamente, puede transportar una experiencia existente . De cualquier manera, después de tener un proyecto, inicie el servidor Rojo:
rojo serve
En Roblox Studio, abra el archivo .rbxl que acaba de crear, inicie el complementoRojo y conecte a su servidor actual, en el que puede comenzar a hacer cambios en su editor de texto preferido y ver esos cambios automáticamente sincronizados de vuelta en el Studio.
Las proyectos Rojo tienen ciertos requisitos de nomenaje para los archivos, numerosas opciones de configuración y algunas limitaciones, todas las cuales se cubren en la documentación Rojo.
Administradores de paquetes
Roblox tiene un conjunto robusto de API incluidas, pero si desea utilizar los paquetes de software de la comunidad de forma consistente y reproducible, necesita un gestor de paquetes. Wally es una opción popular. Puede instalarlo a través de Foreman, como Rojo.
Dentro de la carpeta Rojo de tu experiencia, ejecuta wally init . Luego agrega tus paquetes deseados a wally.toml . El archivo puede verse así:
[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"
Luego ejecuta wally install . Wally crea una Packages directorio y descarga los paquetes especificados allí. El paso
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Entonces, puedes requerir paquetes dentro de tus scripts como cualquier otro 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)
Al igual que la mayoría de otros proyectos de software, el objetivo es que los contribuidores puedan clonar un repositorio, instalar Foreman, ejecutar algunos comandos y tener el mismo entorno de desarrollo que el resto del equipo.
Control de Versión
Tener un conjunto de archivos de texto plano en su ordenador desbloquea una variedad de capacidades, pero la principal es control de versión . Puede almacenar sus scripts y archivos de configuración en un repositorio git o mercurial ; host repositorios remotos y cambios de código de revisión en 2> gitHub
Visual Studio Code tiene el mayor ecosistema de extensiones, pero Sublime Text , Notepad++ y 0> Vim0> son todas las opciones populares. Independientemente del editor que elegir, que coincida con las capacidades del script del editor Studio requerirá algunas extensiones.
También podría considerar agregar:
- Un linter como selene para atrapar problemas comunes y hacer cumplir estándares de codificación
- Un formador de código como StyLua
- Un servidor de lenguaje como Luau Language Server para autocompletar, verificar el tipo y más
- Abre scripts de Open Cloud (no sincronizados con Studio) para actualizar una experiencia publicada o reiniciar servidores
Activos
Las herramientas en esta página son aplicables a los scripts; los artistas 3D ya usan herramientas externas como Blender y Maya, almacenan los archivos de la fuente en el control de versión y importan sus creaciones en Studio. Después de tener una recursoStudio, recomendamos usar los paquetes paquetes siempre que sea posible.
La implementación de paquetes de Roblox sigue muchos de los mismos principios que las herramientas en esta página: un repositorio centralizado con un registro de versiones que ofrece una manera sin problemas de mantener todas las copias de un activo al día. Para obtener más información sobre cómo pueden mejorar su flujo de trabajo, consulte Paquetes .
Deshaciendo todo
Dado que las herramientas de terceros sincronizan los cambios de regreso a Roblox Studio en lugar de reemplazarlos, ninguna parte de este flujo de trabajo implica ningún bloqueo. En cualquier momento, puede dejar de usar una o todas estas herramientas y volver a editar su experiencia exclusivamente en Studio. La falta de riesgo hace que el experimento con herramientas de terceros sea especialmente atractivo.