Roblox
Si has creado juegos en Roblox, hay algunas diferencias clave que necesitarás conocer para empezar en All Out.
Si vienes de Roblox Studio + Lua, esta página te ayudará a traducir tu modelo mental a All Out + CSL (el lenguaje de scripting de All Out).
Las diferencias principales (de un vistazo)
Entidades + componentes (no Instances + Services): los mundos se construyen a partir de entidades en el Jerarquía, y el comportamiento proviene de añadir componentes (integrados o programados).
Multijugador está “integrado”: CSL está diseñado para que la mayor parte del código de gameplay pueda escribirse como singleplayer mientras el motor sincroniza el estado relevante.
CSL está tipado estáticamente: se sentirá más parecido a Go/Odin que a Lua. (Ver Primeros pasos con CSL.)
Las transformaciones de gameplay son 2D: la posición y la escala usan
v2, la rotación es un solo ángulo en grados, y las capas de sprites controlan el orden de dibujo.
Chuleta de Roblox → All Out
Lugar / Experiencia
Proyecto de juego de All Out
La carpeta local de tu proyecto incluye un directorio scripts para .csl archivos.
Explorador / Espacio de trabajo
Jerarquía
La jerarquía muestra todas las entidades en el mundo/escena actual.
Instancia / Modelo / Parte
Entidad
La organización “tipo carpeta” se hace poniendo entidades como padre (ver “Carpetas” en Jerarquía).
Ventana de propiedades
Inspector
Donde editas los campos de la entidad/componente y añades componentes.
Atributos
Campos de componente serializados
Expón campos al editor con @ao_serialize (ejemplo abajo).
CFrame / Vector3
Transformación 2D de la entidad
La posición y la escala son v2; la rotación es un solo ángulo en grados.
Clone()
Scene.instantiate
Carga un Prefab_Asset, luego instáncialo en la escena.
Reutilización de modelos
Prefabs
Las instancias vinculadas conservan las propiedades raíz, pero los campos de componente no son sobrescrituras independientes (ver Prefabs).
ProximityPrompt / ClickDetector
Componente interactuable
Añade Interactable-derivado e implementa can_use/on_interact (ver Interactuables).
Touched / Region3 / GetPartsInPart
Disparadores / consultas de rango
Usa callbacks de disparador para el comportamiento de entrada/salida y Scene.get_all_components_in_range para detección amplia (ver Navmesh y colisión).
Acciones / habilidades / botones móviles
Habilidades
Interfaz de botón integrada compatible con móvil/PC + patrones de tiempo de reutilización (ver Habilidades).
Tu primera hora (ruta recomendada)
Sigue el recorrido de “recolección de manzanas” en Creando un juego básico.
Repasa lo básico de CSL en Primeros pasos con CSL (especialmente
ao_start,ao_update, y la creación de componentes).Aprende a adjuntar tus nuevos componentes a objetos del mundo a través de la Inspector.
Modelo mental de scripting (Lua → CSL)
En Roblox a menudo escribes un Script/LocalScript que encuentra objetos (Workspace.Foo.Bar) y conecta eventos. En All Out, normalmente:
Escribes clases de componentes en CSL (comportamiento).
Adjúntalas a entidades en el editor (o genera entidades y añade componentes en tiempo de ejecución).
Almacena valores ajustables en el componente con
@ao_serialize(para que puedas retocar por entidad en el inspector).
Aquí hay un pequeño ejemplo que se siente como “un Script parentado debajo de un objeto”, pero expresado como un componente CSL:
Registra la moneda durante la configuración de la escena antes de depositarla. Los procedimientos de ciclo de vida global como ao_start y ao_update se ejecutan en cada simulación de escena; no son solo del servidor. Ver Ciclo de vida de juego/frame.
Interacciones que reconocerás (y cómo se traducen)
ProximityPrompt → Interactable
Si usaste ProximityPrompt.Triggered en Roblox, el equivalente más cercano es un componente Interactable-derivado. Empieza aquí:
Recogibles / zonas de disparo de “Touched”
de Roblox BasePart.Touched es un patrón muy común para recogibles, zonas de daño y puntos de control. En All Out, añade un collider habilitado, establece is_trigger, y asigna on_trigger_start, on_trigger_stay, o on_trigger_end. El otro collider se pasa al callback. Un Movement_Agent no es necesario.
Usa Scene.get_all_components_in_range cuando necesites detección amplia o una comprobación de distancia. La colisión sólida no proporciona un Touched callback genérico al estilo de Roblox.
Ver Navmesh y colisión.
Acciones del jugador (Tools / binds de teclas / controles móviles)
Si estás acostumbrado a scripts de “tool” de Roblox o a sistemas de entrada + enfriamiento hechos a mano, usa Habilidades en su lugar. Están diseñadas para funcionar bien tanto en móvil como en PC con una UI consistente.
Guardado de datos (DataStoreService → sistema de guardado)
Para persistencia (monedas, desbloqueos, progresión, cosméticos), empieza con:
UI (ScreenGui → UI de All Out)
La UI de Roblox a menudo empieza con ScreenGui y Frame/TextButton jerarquías. En All Out, empieza aquí:
Dibuja la UI del jugador desde el ao_late_update interior de ese jugador is_local_or_server().
Trampas comunes al portar para devs de Roblox
No hay árbol de “workspace services”: no busques
ReplicatedStorage/ServerScriptServiceequivalentes—usa la jerarquía del editor + lascriptscarpeta de tu proyecto.No protejas la jugabilidad con
Game.is_server(): la jugabilidad normal se ejecuta en el cliente que predice y en el servidor autoritativo.Los campos de componente del prefab no son sobrescrituras independientes: desvincula la instancia o crea otro prefab cuando las copias necesiten valores de componente distintos.
Piensa en “componentes” en lugar de “etiquetas”: donde usarías etiquetas de CollectionService, a menudo añadirás en su lugar un componente marcador/de comportamiento.
Recuerda que la escena es 2D: usa capas de renderizado en lugar de una transformación Z.
Adónde ir después
Construye tu primer juego: Creando un juego básico
Aprende lo básico del editor: Introducción/Vista de escena
Aprende lo básico de scripting: Primeros pasos con CSL
Aprende los bloques básicos de construcción del gameplay: Interactuables, Inventario, Habilidades
Última actualización