For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

  • El flujo de trabajo del editor está más cerca de “editar escenas”: colocas entidades, ajustas sus componentes en el Inspector, y reutilizas grupos mediante Prefabs.

  • 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

Concepto de Roblox
Concepto de All Out / CSL
Notas

Roblox Studio

All Out Editor

Lo inicias desde el Creator Portal (ver Iniciando el editor).

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).

DataStoreService

Sistemas de guardado + JSON + economía

ScreenGui / GuiObjects

Sistema de UI de All Out


Tu primera hora (ruta recomendada)

  1. Sigue el recorrido de “recolección de manzanas” en Creando un juego básico.

  2. Repasa lo básico de CSL en Primeros pasos con CSL (especialmente ao_start, ao_update, y la creación de componentes).

  3. 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/ServerScriptService equivalentes—usa la jerarquía del editor + la scripts carpeta 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

Última actualización