clockCiclo de vida del juego/fotograma

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

Todos los juegos de All Out funcionan con un ciclo de vida simple: algunos callbacks ocurren una vez al inicio, y otros ocurren en cada fotograma.

Implementarás estos callbacks de una de estas formas:

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

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

circle-info

Si estás buscando la “plantilla” main.csl, consulta Primeros pasos con CSL.

Ciclo de vida global (para toda la escena)

Estos son procedimientos de nivel superior en main.csl:

ao_before_scene_load

Se ejecuta antes de que se cree la escena. Aquí es donde normalmente registras “definiciones globales”:

  • Definiciones de objetos (sistema de inventario)

  • Monedas (sistema económico)

  • Valores/constantes globales de configuración

ao_start

Se ejecuta una vez cuando comienza la escena.

Usos comunes:

  • Generar entidades/prefabs en tiempo de ejecución

  • Inicializar sistemas globales

  • Leer datos de guardado de todo el juego

ao_update(dt)

Se ejecuta en cada fotograma.

Usos comunes:

  • Temporizadores del juego, gestores de oleadas

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

  • Reglas del juego autoritativas del servidor

ao_late_update(dt)

Se ejecuta en cada fotograma después de ao_update.

Usos comunes:

  • Interfaz que depende de las posiciones/estado finales del fotograma

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

Ciclo de vida del componente (por entidad)

Los componentes (incluidos Player) pueden implementar:

  • ao_start()

  • ao_update(dt)

  • ao_late_update(dt)

  • ao_end()

  • ao_on_state_sync() (se llama cuando se sincroniza el estado de red)

Ejemplo:

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

  • Estado/lógica por jugador: ponlo en Player (ver Añadir lógica de jugador)

  • Comportamientos reutilizables de entidades: ponlos en componentes personalizados (consulta Entidades y componentes)

  • Coordinación global / reglas: ponlo en el ciclo de vida global (ao_* procedimientos)

Servidor vs. local

All Out sincroniza automáticamente el estado de la jugabilidad del servidor a los clientes, pero aun así conviene mantener el trabajo solo cosmético local.

Usa:

  • this->is_local_or_server() para la interfaz de jugabilidad + manejo de entrada (se ejecuta en el servidor + cliente local)

  • this->is_local() para la interfaz/efectos cosméticos (se ejecuta solo en el cliente local)

Estos son métodos en Player_Base. Llámalos sobre una referencia de jugador, o como is_local_or_server() / is_local() dentro de un Player método (implícito) this).

Última actualización