Введение
Серверные скрипты позволяют расширять логику квестов с помощью кода на JavaScript. Скриптовый движок предоставляет доступ к внутреннему состоянию игры, переменным команд и встроенным функциям управления игровым процессом.
Место скриптов в архитектуре игры
Выполнение скриптов тесно интегрировано с базовой механикой движка — переходами. Скрипт не выполняется автономно или в фоновом режиме; его запуск всегда является следствием срабатывания определенного перехода.
Каждый переход состоит из трех элементов:
- Событие (триггер, инициирующий проверку).
- Условие (требования, при которых переход сработает).
- Действие (результат успешного выполнения перехода).
Выполнение JavaScript-кода — это один из видов действий.
Пример логики:
- Событие: Игрок ввел правильный код.
- Условие: на уровне «Информация».
- Действие: Выполнить скрипт (например, начислить игровую валюту и рассчитать штраф).
Управление состоянием и переменные
По умолчанию среда выполнения скрипта является изолированной. Любые переменные, объявленные внутри скрипта (через let, const или var), уничтожаются сразу после завершения его работы.
Для сохранения данных между запусками скриптов используется объект контекста ctx и Редактор переменных.
ctx.team— доступ к переменным конкретной команды.ctx.game— доступ к глобальным переменным всего квеста.
Чтобы значение сохранилось в течение игры, переменная должна быть явно заведена в Редакторе переменных. Например, если в редакторе создана командная переменная money, в скрипте к ней можно обращаться как к ctx.team.money.
Вывод данных в игровой клиент
Движок накладывает ограничения на типы данных, которые могут быть отображены в мобильном приложении игрока:
- В клиент можно выводить только переменные, явно заданные в Редакторе переменных.
- Поддерживается отображение только примитивных типов данных: чисел и строк.
- Вывести в клиент объект, массив, свойство объекта или элемент массива напрямую нельзя. Для отображения таких данных необходимо предварительно скопировать нужное значение в объявленную примитивную переменную.
Системные переменные и функции движка
Помимо пользовательских переменных, скриптам доступен встроенный API:
- Системные переменные — содержат контекст текущего перехода. Например, переменная
teamIdвсегда содержит идентификатор команды, для которой в данный момент выполняется скрипт. Другие переменные зависят от события-триггера (например, переменнаяcodeсодержит текст кода, введенного игроком). - Функции движка — методы для управления игрой напрямую из кода. К ним относятся функции вроде
AddAction(выполнить действие),FlashMessage(вывести сообщение) и другие.
Дальнейшие шаги:
- Изучите Модель выполнения, чтобы понять особенности срабатывания скриптов для нескольких команд.
- Ознакомьтесь с правилами работы с Переменными и состоянием.