Esta página incluye información para ayudar a los desarrolladores de Unreal Engine experimentados a comenzar con Roblox: orientación básica, una comparación conceptual y diferencias clave entre las dos plataformas.
Obtener orientación
El delineador de Unreal y el explorador de Roblox Studio son las ventanas principales para organizar elementos en espacios 3D.Ambos muestran una jerarquía de objetos y carpetas.Sin embargo, Outliner tiene una estructura más plana y menos definida y solo muestra Actors .La ventana Explorador tiene una estructura profundamente anidada y estricta y muestra todos los objetos como parte de la jerarquía, incluso los objetos que se considerarían componentes en Unreal.
El administrador de recursos de Roblox Studio y la caja de herramientas coinciden con el navegador de contenido Unreal.El administrador de activos te permite administrar todos los activos dentro de tu experiencia, mientras que la caja de herramientas te permite acceder a cualquier activo que hayas publicado.La caja de herramientas también te permite buscar en la tienda de creadores recursos de Roblox o de la comunidad.La tienda de creadores es similar al mercado de Unreal Engine, pero puedes acceder a él directamente desde la interfaz de usuario de Studio.
Diferencias filosóficas
Roblox es un "motor de simulación" en lugar de un motor de juego tradicional.Unreal Actors y Roblox Parts ambos sirven como bloques de construcción fundamentales, pero en la práctica, los dos son bastante diferentes:
- Representación : Actors en Unreal son un concepto de nivel superior para cualquier objeto en un nivel, mientras que Parts en Roblox están diseñados para representar objetos físicos como bloques de madera y esferas de plástico.
- Física : Para realizar simulaciones de física en Unreal, activas la física dentro de ciertos componentes (como el StaticMeshComponent ) o al agregar componentes a Actors , como restricciones de física.En Roblox, la física se integra en el tipo de datos Parts ; el motor maneja las interacciones automáticamente.
Puedes ver la diferencia de inmediato si creas un Actor y un Part.El Actor tiene poco más que una ubicación, rotación y escala.El Part tiene esa misma información—más un material y color, valores para el reflejo y la transparencia, masa y forma, y mucho más.Las dos solo comienzan a compartir propiedades similares cuando comparas un StaticMeshActor en Unreal (por ejemploun cubo) a un MeshPart en Roblox.


Otra comparación útil es la Unreal Actor a la Roblox Model.Los modelos actúan como contenedor para una colección de partes interconectadas de la misma manera que Actors en Unreal son contenedores para componentes.Especificas una de las partes del modelo como su parte principal para definir el punto de pivote.Los modelos también contienen scripts, animaciones, efectos de sonido, indicaciones, emisores de partículas y más.
Por ejemplo, un Unreal Actor podría tener un NiagaraComponent que use varios emisores para lograr el efecto visual deseado, una malla para la forma, una restricción de física para agregar elasticidad y un script para la interactividad del jugador.En Outliner, ves un solo Actor llamado SpringyFireball .
En Roblox, un modelo comparable SpringyFireball en la ventana Explorador podría parecer algo así:
Model|- ParticleEmitter|- MeshPart|- SpringConstraint|- ClickDetector| |- Script
La filosofía de física por defecto de Roblox se extiende al proceso de construcción de modelos 3D.En Roblox, soldar múltiples piezas juntas en una ensamble es una excelente manera de construir rápidamente cosas, porque Roblox trata las piezas soldadas como un solo cuerpo rígido.Este enfoque no es práctico en Unreal.
En lugar de usar unidades métricas estándar para longitud y masa, Roblox usa unidades conceptuales llamadas tachuelas y unidades de masa de Roblox (RMU).Para conversiones y recomendaciones de métricas aproximadas alrededor del uso, vea Unidades.
Importa la ubicación
Las experiencias de Roblox son multijugador por defecto, por lo que Roblox Studio incluye muchos almacenamientos diferentes con comportamientos específicos.Por ejemplo, un script podría ejecutarse cuando lo pongas en ReplicatedStorage , pero no cuando lo pongas en StarterPlayerScripts .Para obtener más información, vea tiempo de ejecución cliente-servidor y organización de objetos.
Ubicación | Descripción :--- | :--- Espacio de trabajo | Representa el mundo del juego.Esta ubicación funciona bien para los scripts del servidor que se adhieren directamente a los objetos y controlan su comportamiento.ReplicatedFirst | Contiene objetos que se replican al cliente antes que cualquier otra cosa.Esta ubicación es ideal para el conjunto mínimo absoluto de objetos y scripts de cliente necesarios para mostrar una pantalla de carga.ReplicatedStorage | Contiene objetos que se replican tanto al cliente como al servidor.Esta ubicación es ideal para Class.ModuleScript\|ModuleScripts que quieres usar tanto en el servidor como en el cliente.Class.LocalScript\|LocalScripts no corra de esta ubicación, pero Class.Script\|Scripts con un contexto de ejecución de Client lo hace.ServerScriptService | Contiene scripts del servidor.Esta ubicación es ideal para scripts que necesitan acceder a la funcionalidad o a los objetos del lado del servidor, como la lógica del juego y el almacenamiento en la nube.ServerStorage | Contiene objetos del lado del servidor.Esta ubicación es ideal para objetos grandes que no necesitan ser replicados inmediatamente a los clientes cuando se unen a una experiencia.Los scripts no se ejecutan desde esta ubicación, pero puedes almacenar el lado del servidor Class.ModuleScript\|ModuleScripts aquí.StarterPlayer.StarterCharacterScripts | Contiene Class.LocalScript\|LocalScripts que se ejecuta cuando se genera el personaje.StarterPlayer.StarterPlayerScripts | Contiene Class.LocalScript\|LocalScripts scripts de propósito general que se ejecutan cuando el jugador se une a la experiencia.StarterGui | Contiene elementos de interfaz de usuario que el cliente muestra cuando carga el juego.Class.LocalScript\|LocalScripts puede correr desde esta ubicación.Esta ubicación es ideal para scripts que modifiquen la interfaz de usuario del juego, como agregar botones, menús y ventanas emergentes.Paquete de inicio | Generalmente solo contiene Class.Tool\|Tools , pero también puede incluir Class.LocalScript\|LocalScripts para configurar mochilas de jugador.
Programación
Las experiencias de Roblox admiten tres tipos diferentes de scripts Luau:
Scripts del cliente
Estos scripts se ejecutan en el cliente y el servidor no tiene visibilidad sobre su comportamiento.Por razones legadas, estos scripts pueden tomar la forma de LocalScripts o Scripts con un valor de RunContext de Client.Los scripts del cliente suelen vivir en ReplicatedStorage , StarterPlayerScripts o StarterCharacterScripts .
Scripts del servidor
Estos scripts se ejecutan en el servidor y el cliente no tiene visibilidad de su comportamiento.Los scripts del servidor tienen un valor de RunContext de Server y, por lo general, viven en ServerScriptService, el contenido del cual no se replica al cliente del juego.
Scripts de módulo
Estos scripts son piezas reutilizables de código que devuelven exactamente un valor, por lo general una función o una tabla (o una tabla de funciones).En lugar de duplicar el código en los scripts del cliente y del servidor, utilice los scripts de módulo para compartir código y datos entre los dos.Los scripts de módulo a menudo viven en ReplicatedStorage, pero pueden vivir en otro lugar si desea compartir código entre scripts en el mismo lado del límite cliente-servidor.
Unreal no tiene el concepto de diferentes tipos de guiones.Si eliges hacer un juego multijugador, escribes código adicional para sincronizar el estado del juego entre el servidor y los clientes.
En Unreal, gran parte de la funcionalidad del motor está disponible al extender clases integradas como UObject , ACharacters , ULevel y UWorld en C++ o en Blueprint.Unreal soporta eventos personalizados, pero muchas clases incluyen eventos que el motor invoca automáticamente como parte del ciclo de vida natural del nivel.
En comparación con el sistema de "tique" irreal, los scripts de Roblox son mucho más impulsados por eventos.Accede a la funcionalidad del motor similar suscribiéndose a servicios y escuchando actualizaciones.
C++ y Luau
Para la programación, Unreal usa C++. Roblox usa Luau, un lenguaje de programación derivado de Lua 5.1.
En comparación con Luau, C++ tiene una ventaja de rendimiento general, que puede ser o no relevante para los tipos de experiencias que desea crear.Luau se escribe gradualmente y tiene una sintaxis menos verbosa.En proyectos más grandes, sin embargo, el tecleo gradual puede introducir categorías de errores que los lenguajes fuertemente tipados como C++ evitan, por lo que considere habilitar verificación de tipo estricto en los scripts de Roblox.
Unreal también incluye un sistema de programación visual llamado planos.Roblox tiene plugins de terceros que ofrecen funcionalidad similar, pero sin sistema comparable integrado.
Ejemplo de código Luau
El siguiente ejemplo de código Luau muestra cómo, después de que un jugador equipa una caña de pescar, escuchar la entrada del usuario (en este caso, la claveE ) y llamar funciones adicionales:
-- Obtener los servicios de juego necesarios
local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Obtenga un guión de módulo de ReplicatedStorage que devuelve una sola función
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Supone que este script es un hijo de la caña de pescar
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Compruebe que la clave está hacia abajo, luego llame a otra función
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Solo habilita la acción cuando el jugador equipa la caña de pescar
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Desactivar la acción cuando el jugador desequipa la caña de pescar
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)
El script de Roblox puede ser relativamente conciso porque Roblox tiene muchas suposiciones integradas: un Player con un personaje Humanoid conectado al servidor y puede equipar Tools .Estas suposiciones no existen en Unreal, por lo que la implementación sería muy diferente.
Activos
Unreal y Roblox ambos admiten la importación de mallas y modelos personalizados en formato .fbx .Ciertos tipos de activos pueden requerir configuraciones y opciones de exportación específicas de tu software de modelado de terceros.Para obtener más información, consulte las siguientes páginas:
En Unreal, la importación de recursos se realiza en tu directorio Content, visible en el navegador de contenido.En Roblox, las importaciones de activos se realizan en tu espacio de trabajo y en la sección Caja de herramientas o Inventario de la sección Gestor de activos.
Roblox también ofrece un plugin de código abierto Blender para simplificar el proceso de importación, similar a la función Enviar a Unreal de las herramientas de Blender.
Transformaciones
Las transformaciones de props.engine y las de Roblox CFrames sirven para representar transformaciones 3D de objetos similares:
- Ambas transformaciones y CFrames representan la posición y rotación de un objeto en el espacio 3D.Las transformaciones incluyen redimensionar, mientras que Roblox usa una propiedad BasePart.Size que no forma parte del CFrame.
- Ambos admiten multiplicación (es decir, composición) para transformaciones complejas y tienen métodos integrados para otras manipulaciones.
Colaboración
En Unreal, colaboras con sistemas de control de versiones como Perforce o SVN, generalmente a través de la interfaz de usuario integrada de Unreal.Estos sistemas de control de versiones usan el modelo centralizado de "caja" que bloquea los archivos mientras una persona trabaja en ellos.
Los archivos de Roblox viven en la nube (aunque puedes exportar copias), por lo que Roblox Studio proporciona flujos de trabajo de colaboración integrados para editar simultáneamente, gestión de grupos, permisos, redacción de guiones y más.Ver Colaboración.
Plugins
Al igual que Unreal, Roblox Studio soporta plugins , que pueden simplificar o darle control adicional sobre varios aspectos del proceso de desarrollo.Los plugins están disponibles en la tienda de creadores, al igual que los recursos, muchos de forma gratuita.
Glosario
| Irreal | Roblox | Notas | | :--- | :--- | :--- | | Nivel | Lugar | | | Actriz | Part o Model | Ve Diferencias filosóficas .| | Clase de blueprint | Paquete | | | Transform | CFrame | CFrame no incluye información de escala.Vea Transformaciones.| | Outliner | Ventana de explorador | | | Panel de detalles | Ventana de propiedades | | Nivel de vista de la ventana | Ventana de vista | | | Navegador de contenido | Administrador de recursos o Caja de herramientas | | | Modo paisaje | Editor de terreno | | | Inicio del jugador | | | | Registro de salida | Salida | | | Tienda de plugins | | | | Barra de menú | Barra de menú | | | Plugin | Plugin | | | Log de exportación | Exportación | | | Mercado | Tienda de creadores | | | Barra de menú | Barra de menú | | | Plugin | Plugin | |