clockCiclo de vida del juego/cuadro

En contraste con la programación basada en eventos como en Roblox, los juegos en All Out usan un modelo de ciclo de vida por fotogramas que te permite ejecutar código cuando el juego comienza, en cada fotograma y al final de una sesión.

Todos los juegos de Out siguen un ciclo de vida simple: algunos callbacks ocurren una vez al iniciar, y otros ocurren en cada frame.

Implementarás estos callbacks de una de las siguientes maneras:

  • Globalmente (nivel superior ao_* procs en main.csl), o

  • En componentes (métodos como ao_update dentro de Player o tus propias Component subclases)

circle-info

Si buscas la “plantilla” main.csl, ve Introducción a CSL.

Ciclo de vida global (a nivel de escena)

Estos son procs de nivel superior en main.csl:

ao_before_scene_load

Se ejecuta antes de que la escena sea creada. Aquí es donde típicamente registras “definiciones globales”:

  • Definiciones de objetos (sistema de inventario)

  • Monedas (sistema económico)

  • Valores/configuraciones globales/constantes

ao_start

Se ejecuta una vez cuando la escena comienza.

Usos comunes:

  • Generar entidades/prefabs en tiempo de ejecución

  • Inicializar sistemas globales

  • Leer datos guardados a nivel de juego

ao_update(dt)

Se ejecuta en cada frame.

Usos comunes:

  • Temporizadores del juego, gestores de oleadas

  • Lógica de generación que depende del tiempo

  • Reglas de juego con autoridad del servidor

ao_late_update(dt)

Se ejecuta en cada frame después de ao_update.

Usos comunes:

  • UI que depende de posiciones/estado finales para el frame

  • Trabajo de “limpieza” después de las actualizaciones

Ciclo de vida de componentes (por entidad)

Los componentes (incluyendo Player) pueden implementar:

  • ao_start()

  • ao_update(dt)

  • ao_late_update(dt)

  • ao_end()

Ejemplo:

Dónde poner el código: una regla general

  • Estado/lógica por jugador: colócalo en Player (ver Agregar Lógica de Jugador)

  • Comportamientos de entidad reutilizables: colócalos en componentes personalizados (ver Entidades y Componentes)

  • Coordinación / reglas globales: colócalo en el ciclo de vida global (ao_* procs)

Servidor vs local

Out sincroniza automáticamente el estado de juego del servidor a los clientes, pero aún quieres mantener solo cosmético el trabajo local.

Usa:

  • is_local_or_server() para UI de juego + manejo de entrada (se ejecuta en el servidor + cliente local)

  • is_local() para UI/efectos cosméticos (se ejecuta solo en el cliente local)

Última actualización