Para los estudios de desarrollo profesionales, configurar herramientas de terceros e invertir en automatización puede mejorar drásticamente la productividad del desarrollador. El enfoque de Roblox basado en la nube 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 idiomas 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 recuperar tus archivos en tu proyecto de Roblox después de terminar de trabajar en ellos.
- Si alguien más ha cambiado esos mismos archivos mientras tanto, tienes que lidiar con cualquier conflicto.
Para que toda la solución se sienta perfecta y automática, necesita a) escuchar los cambios en los archivos y b) incorporar estos cambios en Studio. En otras palabras, necesita un servidor y un complementode Studio, que es cómo Rojo resuelve este problema.
En lugar del enfoque de la nube de Roblox, Rojo permite un enfoque de "sistema de archivos primero." Extrae todos los archivos de script en su proyecto en archivos Luau. Luego 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 de Rojo, pero ese enfoque corre el riesgo de que diferentes desarrolladores de su equipo utilicen diferentes versiones de Rojo. Una mejor solución es usar un administrador 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 constante en todas las máquinas.
Debido a que administra su entorno de desarrollo de línea de base en lugar de los paquetes dentro de su proyecto, Foreman se parece más a nvm que a npm, pero la comparación no es perfecta. Un simple foreman.toml archivo se ve así:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Luego instalarestas herramientas con foreman install . Además de un archivo foreman.toml global, Foreman admite archivos por proyecto, por lo que puede usar fácilmente diferentes versiones de Rojo, Wally o cualquier otra herramienta para diferentes proyectos y mantener a todo su equipo en las mismas versiones.
Cuando una herramienta lanza una nueva versión, entonces explícitamente pones el número de la versión en tu .toml archivo, usa Foreman para realizar la mejora, probar la nueva versión y degradar si causa algún problema. Para obtener comandos e instrucciones de instalación, consulta Foreman .
Corriendo Rojo
Después de instalar Rojo con Foreman, lo que realmente has instalado es el servidor Rojo. El siguiente paso es instalar el plugin 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, puedes portar una experiencia existente . De cualquier manera, después de tener un proyecto, inicie el servidor Rojo:
rojo serve
En Roblox Studio, abre el archivo .rbxl que acabas de crear, inicia el complemento Rojo y conéctate a tu servidor en ejecución, en cuyo momento puedes comenzar a realizar cambios en tu editor de texto preferido y ver cómo esos cambios se sincronizan automáticamente con Studio.
Los proyectos de Rojo tienen ciertos requisitos de nombre para archivos, numerosas opciones de configuración y algunas limitaciones, todas las cuales se cubren en la documentación de Rojo .
Administradores de paquetes
Roblox tiene un conjunto robusto de API incluidas, pero si quieres hacer uso de los paquetes de software de la comunidad de una manera consistente y reproducible, necesitas un administrador de paquetes. Wally es una opción popular. Puedes instalarlo a través de Foreman, al igual que Rojo.
Dentro del directorio Rojo de su experiencia, ejecute wally init . Luego agregue los paquetes deseados a wally.toml . El archivo podría 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 un directorio Packages y descarga los paquetes especificados allí. El paso final es agregar el directorio Packages a Rojo para que su contenido se sincronice con Roblox. Abre default.project.json y añade la ruta. Para mayor simplicidad, este ejemplo agrega el directorio completo a ReplicatedStorage para que todos los paquetes estén disponibles para todos los scripts, pero es posible que prefiera agregar paquetes específicos a ServerScriptService o StarterPlayerScripts:
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Luego 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)
Como la mayoría de los otros proyectos de software, el objetivo es que los colaboradores 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 sin formato en tu ordenador desbloquea una variedad de capacidades, pero la principal es el control de versión **. Puedes almacenar tus scripts y archivos de configuración en un repositorio Git o Mercurial; aloja repositorios remotos y revisa los cambios de código en GitHub , GitLab , o Bitbucket ; y usa el editor de texto que quieras.
Visual Studio Code tiene el mayor ecosistema de extensiones, pero Sublime Text, Notepad++ y Vim son todas las opciones populares. Sea cual sea el editor que elegir, igualar las capacidades del editor de scripts de Studio requerirá algunas extensiones.
También podrías considerar añadir:
- Un linter como selene para atrapar problemas comunes y hacer cumplir los estándares de codificación
- Un formateador de código como StyLua
- Un servidor de idiomas como Luau Language Server para autocompletar, verificar tipos y más
- Abre scripts de Cloud (no sincronizados con Studio) para actualizar una experiencia publicada o reiniciar servidores
Activos
Las herramientas de esta página son más aplicables a los scripts; los artistas 3D ya usan herramientas externas como Blender y Maya, almacenan los archivos de origen en el control de versiones e importan sus creaciones a Studio. Después de tener un recurso de Studio, recomendamos usar los paquetes siempre que sea posible.
La implementación de paquetes de Roblox sigue muchos de los mismos principios que las herramientas de esta página: un repositorio centralizado con historial de versiones que ofrece una manera perfecta de mantener sincronizadas todas las copias de un recurso. Para obtener más información sobre cómo pueden mejorar su flujo de trabajo, consulte Paquetes .
Deshacer todo
Debido a que las herramientas de terceros sincronizan los cambios de nuevo en Roblox Studio en lugar de reemplazarlo, 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 experimentar con herramientas de terceros sea particularmente atractivo.