Roblox para desarrolladores de Unreal

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Esta página contiene información para ayudar a los desarrolladores experimentados de Unreal Engine a comenzar con Roblox, incluyendo orientación básica, una comparación conceptual y las diferencias clave entre las dos plataformas.

Orientación

La interfaz de usuario del Editor de Unreal con marcas para mostrar las varias ventanas y paneles. La interfaz de usuario de Roblox Studio con marcas para mostrar las varias ventanas y paneles.

Outliner de Unreal y el Explorer de Roblox Studio son las ventanas principales para organizar elementos en espacios 3D. Ambas muestran una jerarquía de objetos y carpetas. Sin embargo, el Outliner tiene una estructura más plana y menos definida y solo muestra Actors. La ventana Explorer tiene una estructura estrictamente anidada y profunda y muestra todos los objetos como parte de la jerarquía, incluso objetos que se considerarían componentes en Unreal.

El Asset Manager de Roblox Studio y la Toolbox se superponen con el Content Browser de Unreal. El Asset Manager te permite gestionar todos los activos dentro de tu juego, mientras que la Toolbox te permite acceder a cualquier activo que hayas publicado. La Toolbox también te permite buscar en la Creator Store activos de Roblox o de la comunidad, similar al Marketplace de Unreal Engine pero accesible 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. Los Actors de Unreal y los Parts de Roblox sirven como bloques de construcción fundamentales, pero en la práctica, los dos son bastante diferentes:

  • Representación: Los Actors en Unreal son un concepto de nivel superior para cualquier objeto en un nivel, mientras que los 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, habilitas física dentro de ciertos componentes (como el StaticMeshComponent) o añadiendo componentes a los Actors, como restricciones físicas. En Roblox, la física está integrada 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, además de un material y color, valores de reflectancia y transparencia, masa y forma, y mucho más. Los dos solo comienzan a compartir propiedades similares cuando comparas un StaticMeshActor en Unreal con un MeshPart en Roblox.

Un actor de Unreal de ejemplo en el panel de Detalles.
Panel de Detalles del Editor de Unreal
Una parte de Roblox de ejemplo en la ventana de Propiedades.
Ventana de Propiedades de Roblox Studio

Otra comparación útil es el Actor de Unreal con el Model de Roblox. Los modelos actúan como un contenedor para un conjunto de partes interconectadas de la misma manera que los 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, mensajes, restricciones, emisores de partículas y más.

Por ejemplo, un Actor de Unreal podría tener un NiagaraComponent que utiliza varios emisores para lograr el efecto visual deseado, una malla para la forma, una restricción de física para añadir elasticidad, y un script para la interactividad con el jugador. En Outliner, ves un único Actor llamado SpringyFireball.

En Roblox, un modelo comparable de SpringyFireball en la ventana Explorer podría verse 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 partes juntas en un ensamblaje es una excelente manera de construir cosas rápidamente, porque Roblox trata las partes soldadas como un solo cuerpo rígido. Este enfoque no es práctico en Unreal.

En lugar de utilizar unidades métricas estándar para longitud y masa, Roblox utiliza unidades notionales llamadas studs y Unidades de Masa de Roblox (RMUs). Para conversiones métricas aproximadas y recomendaciones sobre su uso, consulta Units.

La ubicación importa

Los juegos de Roblox son multijugador por defecto, por lo que Roblox Studio incluye muchas ubicaciones de almacenamiento diferentes con comportamientos específicos. Para más información, consulta runtime cliente-servidor y organización de objetos.

LocationDescription
WorkspaceRepresenta el mundo 3D del juego. Esta ubicación funciona bien para scripts de servidor que se adjuntan directamente a objetos y controlan su comportamiento.
ReplicatedFirstContiene 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 del cliente necesarios para mostrar una pantalla de carga.
ReplicatedStorageContiene objetos que se replican tanto al cliente como al servidor. Esta ubicación es ideal para ModuleScripts que deseas usar tanto en el servidor como en el cliente. LocalScripts no se ejecutan desde esta ubicación, pero Scripts con un RunContext de Client sí lo hacen.
ServerScriptServiceContiene scripts de servidor. Esta ubicación es ideal para scripts que necesitan acceder a funcionalidades u objetos del lado del servidor, como la lógica del juego y el almacenamiento en la nube.
ServerStorageContiene 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 un juego. Los scripts no se ejecutan desde esta ubicación, pero puedes almacenar ModuleScripts del lado del servidor aquí.
StarterPlayerStarterCharacterScriptsContiene LocalScripts que se ejecutan cuando el personaje aparece.
StarterPlayerStarterPlayerScriptsContiene LocalScripts de propósito general que se ejecutan cuando el jugador se une al juego.
StarterGuiContiene elementos de la GUI que el cliente muestra cuando carga el juego. LocalScripts pueden ejecutarse desde esta ubicación. Esta ubicación es ideal para scripts que modifican la interfaz de usuario del juego, como agregar botones, menús y ventanas emergentes.
StarterPackGeneralmente solo contiene Tools, pero también puede incluir LocalScripts para configurar las mochilas de los jugadores.

Scripting

Los juegos de Roblox admiten tres tipos diferentes de scripts de Luau:

  • Scripts del cliente

    Estos scripts se ejecutan en el cliente y el servidor no tiene visibilidad sobre su comportamiento. Por razones de compatibilidad, estos scripts pueden tomar la forma de LocalScripts o Scripts con un valor de RunContext de Client. Los scripts del cliente generalmente se encuentran en ReplicatedStorage, StarterPlayerScripts o StarterCharacterScripts.

  • Scripts del servidor

    Estos scripts se ejecutan en el servidor y el cliente no tiene visibilidad sobre su comportamiento. Los scripts del servidor tienen un valor de RunContext de Server y generalmente se encuentran en ServerScriptService, cuyo contenido no se replica al cliente.

  • Scripts de módulo

    Estos scripts son piezas de código reutilizables que devuelven exactamente un valor, típicamente una función o tabla (o una tabla de funciones). En lugar de duplicar código en scripts del cliente y del servidor, utiliza scripts de módulo para compartir código y datos entre ambos. Los scripts de módulo suelen alojarse en ReplicatedStorage, pero pueden estar en otros lugares si deseas compartir código entre scripts en el mismo lado de la frontera cliente-servidor.

Unreal no tiene el concepto de diferentes tipos de script. 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 extendiendo clases integradas como UObject, ACharacters, ULevel y UWorld en C++ o Blueprint. Unreal admite eventos personalizados, pero muchas clases incluyen eventos que el motor invoca automáticamente como parte del ciclo de vida natural del nivel.

Comparado con el sistema de "tickeo" de Unreal, los scripts de Roblox son mucho más impulsados por eventos. Accedes a funcionalidades similares del motor suscribiéndote a servicios y escuchando actualizaciones.

C++ y Luau

Para scripting, Unreal utiliza C++. Roblox utiliza Luau, un lenguaje de scripting derivado de Lua 5.1.

En comparación con Luau, C++ tiene una ventaja de rendimiento general, lo cual puede o no ser relevante para los tipos de juegos que deseas construir. Luau es de tipado gradual y tiene una sintaxis menos verbosa. Sin embargo, en proyectos más grandes, el tipado gradual puede introducir categorías de errores que lenguajes de tipado fuerte como C++ evitan, así que considera habilitar verificación de tipos estricta en scripts de Roblox.

Unreal también incluye un sistema de scripting visual llamado Blueprints. Roblox tiene complementos de terceros que ofrecen funcionalidad similar, pero no un sistema comparable integrado.

Ejemplo de código Luau

El siguiente ejemplo de código Luau demuestra cómo, después de que un jugador equipe una caña de pescar, escuchar la entrada del usuario (en este caso, la tecla E) y llamar a funciones adicionales:


local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Obtener un script de módulo de ReplicatedStorage que devuelve una única 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 = "Lanzar"
-- Verifica que la tecla esté presionada, luego llama 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)
-- Deshabilita 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

Tanto Unreal como Roblox admiten la importación de mallas y modelos personalizados en formato .fbx. Ciertos tipos de activos pueden requerir configuraciones específicas y ajustes de exportación desde tu software de modelado de terceros. Para más información, consulta las siguientes páginas:

En Unreal, los activos se importan a tu directorio Content, visible en el Content Browser. En Roblox, los activos se importan a tu Workspace y a la Toolbox o al Asset Manager.

Roblox también ofrece un complemento de Blender de código abierto para agilizar el proceso de importación, similar a la función Enviar a Unreal de Blender Tools.

Transformaciones

Las transformaciones de Unreal Engine y CFrames de Roblox sirven propósitos similares al representar transformaciones 3D de objetos:

  • Tanto las transformaciones como CFrames representan la posición y rotación de un objeto en un espacio 3D. Las transformaciones incluyen escala, mientras que Roblox utiliza una propiedad BasePart.Size que no es parte de CFrame.
  • Ambos soportan la multiplicación para transformaciones complejas y tienen métodos incorporados 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 incorporada de Unreal. Estos sistemas de control de versiones utilizan el modelo centralizado de "checkout" que bloquea 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 edición simultánea, gestión de grupos, permisos, redacción de scripts y más. Consulta Collaboration.

Complementos

Similar a Unreal, Roblox Studio admite plugins, que pueden simplificar o darte un control adicional sobre varios aspectos del proceso de desarrollo. Los complementos están disponibles en la Creator Store, al igual que los activos, muchos de forma gratuita.

Glosario

UnrealRobloxNotas
LevelPlace
ActorPart o ModelConsulta Diferencias filosóficas.
Blueprint ClassPackage
TransformCFrameCFrame no incluye información sobre la escala. Consulta Transformaciones.
OutlinerExplorer
Details panelProperties
Level Viewport3D viewport
Content BrowserAsset Manager o Toolbox
Landscape ModeTerrain Editor
PlayerStartSpawnLocation
Output LogOutput
MarketplaceCreator Store
Menu barToolbar
PluginPlugin
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.