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

Добавление логики игрока

В All Out игрок — это игровой объект первого класса. Ваш Player :: класс : Player_Base это место, куда вы помещаете состояние для каждого игрока (здоровье, наборы экипировки, кулдауны, переключатели UI, прогресс и т. д.).

Состояние для каждого игрока

Храните состояние геймплея на игроке или объектах, принадлежащих игроку.

Player :: class : Player_Base {
    health: int;
    inventory_open: bool;
}

Сервер + клиент: что где выполняется?

All Out автоматически синхронизирует состояние геймплея с сервера на клиенты. Методы геймплея выполняются и на предсказывающем клиенте, и на сервере, поэтому не оборачивайте их в Game.is_server().

Две распространённые проверки:

  • is_local_or_server(): весь пользовательский интерфейс игрока и производимый им ввод

  • is_local(): только визуальные переопределения, специфичные для игрока

Player :: class : Player_Base {
    ao_late_update :: method(dt: float) {
        if is_local_or_server() {
            // Рисуйте здесь весь UI игрока и обрабатывайте его ввод.
        }

        if is_local() {
            // Примените здесь индивидуальную видимость для игрока, но не изменяйте поля.
        }
    }
}

Стройте весь UI игрока из Player.ao_late_update этого игрока в is_local_or_server(). Поля, изменяемые только внутри is_local() заменяются во время согласования.

Идентификационные данные игрока и данные профиля

Player_Base предоставляет поля идентификации, которые вы будете часто использовать:

  • p.get_username() -> string

  • p.get_user_id() -> string

  • p.avatar_color

  • p.device_kind (.PHONE, .TABLET, .PC)

  • p.is_admin(), p.is_vip(), p.is_moderator(), p.is_youtuber()

  • p.is_chat_open() и вспомогательные функции для прямоугольников UI, такие как p.get_chat_rect()

Постоянное хранение: где хранить прогресс игрока

  • Экономика: валюты (монеты/самоцветы/опыт) с автоматическим сохранением + редактированием через портал создателя См. Экономика.

  • Сохранение: общее сохранение пар ключ/значение (настройки, состояние заданий, списки разблокировок и т. д.) См. Система сохранения.

  • Inventory: стаки/экземпляры предметов в инвентаре игрока (при необходимости с автосохранением) См. Inventory.

Распространённый шаблон: загружайте сохранённые значения в ao_start

Лучшие практики

  • Храните состояние, относящееся к конкретному игроку, в Player. Избегайте глобальных переменных для всего, что относится к конкретному игроку.

  • Запускайте геймплей в общем предсказанном пути. Рисуйте UI игрока в is_local_or_server() и оставляйте is_local() для визуальных переопределений, специфичных для игрока.

  • Предпочитайте встроенные API постоянного хранения вместо того, чтобы писать свои собственные (Economy/Save/Inventory).

Справка по Player_Base

См. api_references/core/ao/core.csl_engine в папке проекта для полного Player_Base API.

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