clockЖизненный цикл игры/кадра

В отличие от событийно-ориентированного скриптинга, как в Roblox, игры в All Out используют модель жизненного цикла кадра, которая позволяет запускать код при старте игры, каждый кадр и в конце сессии.

Все игры All Out работают по простому жизненному циклу: некоторые обратные вызовы происходят один раз при запуске, а некоторые — каждый кадр.

Вы будете реализовывать эти обратные вызовы одним из следующих способов:

  • Глобально (верхнеуровневые ao_* процедуры в main.csl), или

  • На компонентах (методы вроде ao_update внутри Player или ваших собственных Component подклассов)

circle-info

Если вы ищете «шаблон» main.csl, см. Начало работы с CSL.

Глобальный жизненный цикл (на уровне сцены)

Это верхнеуровневые процедуры в main.csl:

ao_before_scene_load

Запускается до создания сцены. Здесь вы обычно регистрируете «глобальные определения»:

  • Определения предметов (система инвентаря)

  • Валюты (экономическая система)

  • Глобальные конфигурационные значения/константы

ao_start

Запускается один раз при старте сцены.

Распространённые случаи использования:

  • Создание сущностей/префабов во время выполнения

  • Инициализация глобальных систем

  • Чтение данных сохранения для всей игры

ao_update(dt)

Запускается каждый кадр.

Распространённые случаи использования:

  • Игровые таймеры, менеджеры волн

  • Логика спавна, зависящая от времени

  • Игровые правила с авторитетом сервера

ao_late_update(dt)

Запускается каждый кадр после ao_update.

Распространённые случаи использования:

  • Интерфейс, зависящий от окончательных позиций/состояния за кадр

  • «Уборочная» работа после обновлений

Жизненный цикл компонентов (для каждой сущности)

Компоненты (включая Player) могут реализовывать:

  • ao_start()

  • ao_update(dt)

  • ao_late_update(dt)

  • ao_end()

Пример:

Куда поместить код: эмпирическое правило

  • Состояние/логика на игрока: поместите это в Player (см. Добавление логики игрока)

  • Повторно используемое поведение сущностей: поместите это в пользовательские компоненты (см. Сущности и компоненты)

  • Глобальная координация / правила: поместите это в глобальный жизненный цикл (ao_* процедуры)

Сервер против локального

All Out синхронизирует состояние игрового процесса с сервера на клиенты автоматически, но вам всё равно стоит держать только косметические вещи локальными.

Используйте:

  • is_local_or_server() для игрового интерфейса + обработки ввода (работает на сервере и локальном клиенте)

  • is_local() для косметического интерфейса/эффектов (работает только на локальном клиенте)

Последнее обновление