Редактор сценариев. Руководство пользователя инструмента Scenario Editor
Инструмент Scenario Editor является компонентом Queen Studio и позволяет создавать сценарий для квеста без использования программирования, используя готовые блоки. Все блоки являются аналогами тех или иных структур.
Для разработки сценария с помощью Scenario Editor необходимо в первую очередь создать новый проект (File → New) и расположить на холсте все требующиеся объекты или открыть заранее созданный проект (File → Open…).
Запуск Scenario Editor возможен только тогда, когда в Queen Studio открыт проект, и осуществляется с помощью одноименной кнопки на панели инструментов.
При нажатии на кнопку открывается подменю, в котором можно создать новый сценарий, выбрав «new scenario…», или открыть для редактирования существующий. В данном подменю отображаются все файлы сценариев, расположенные в папке scenario проекта. Если сценарии отсутствуют, то отображается лишь пункт «new scenario…».
После выбора пункта подменю «new scenario…» открывается Scenario Editor , при выборе какого-либо сценария также открывается Scenario Editor, но вид окна будет несколько отличаться в зависимости от содержимого файла сценария.
Окно инструмента Scenario Editor состоит из четырёх следующих разделов: панель инструментов, стадии (stages), узлы (nodes) и журнал событий редактора сценариев.
Панель управления
Панель управления состоит из следующих элементов:
a – сохранение файла сценария,
b – поле изменения имени файла сценария,
c – блокировка/разблокировка смены имени файла сценария,
d – сохранение и валидация файла сценария,
e – включение/выключение резервирования,
f – восстановление файла сценария из резервной копии.
С помощью панели управления производятся следующие операции:
1) сохранение внесённых изменений в файл сценария;
2) изменение названия файла сценария. Имя файла задаётся автоматически в формате scenario_gear.month.date-hour.minute.second.xml. Для корректной работы резервирования рекомендуется изменять имя файла сценария, если необходимо, непосредственно после создания нового файла сценария. При изменении имени создаётся новый файл сценария с заданным именем, а старый остаётся без изменений;
Если вы решите переименовать файл сценария, то это может уничтожить все его резервные копии.
3) блокировка и разблокировка изменения имени файла сценария. При сохранении файла сценария блокировка активируется автоматически. Блокировка активна по умолчанию, если открывается существующий файл сценария. Снятие блокировки сопровождается диалогом подтверждения, в котором требуется нажать кнопку «Yes»;
4) проверка (валидация) файла сценария на наличие ошибок. Валидация сопровождается диалогом подтверждения, в котором требуется нажать кнопку «Yes», после чего появится сообщение об успешной проверке или сообщение об ошибке, текст сообщения может отличаться от представленного на рисунке.
Если перед запуском проверки изменения в сценарии не были сохранены, то программа предложит их сохранить.
В результате успешной проверки вы будет выведено следующее сообщение
Если в ходе проверки были выявлены ошибки, то в сообщении отобразится тип ошибки и строка, в которой она была допущена. Сообщение об ошибке может выглядеть следующим образом
5) включение или выключения функции автоматического резервирования файла сценария при сохранении. При установленной галочке при каждом сохранении предыдущая версия файла копируется в папку /scenarios/backup проекта;
6) восстановление файла сценария из резервной копии. При нажатии открывается список резервированных файлов, где у каждого файла после символа # указаны дата и время создания копии.
Стадии
Раздел стадий состоит из следующих элементов:
a – выбор начальной стадии,
b – список существующих в проекте стадий,
c – кнопки для перемещения стадий по списку,
d – настройки стадии.
Раздел стадий позволяет выполнять следующие операции:
1) выбор стадии сценария, которая при запуске квеста выполняется первой (пункт a). С помощью выпадающего списка можно выбрать любую из добавленных в проект стадий за исключением глобальной.
Примечание. Выбор стадии из списка соответствует присвоению значения атрибуту begin тэга <general> при ручном редактировании scenario.xml;
2) список существующих в проекте стадий (пункт b). Глобальная стадия добавляется автоматически и её невозможно удалить. Чтобы добавить новую стадию в сценарий, необходимо вызвать контекстно меню, нажав правой кнопкой мыши на стадию, после которой должна быть добавлена новая, а затем выбрать «add stage». Удаление стадии происходит посредством вызова контекстного меню данной стадии с последующим выбором «delete stage». Каждая стадия в списке соответствует отдельному тэгу <stage> в файле scenario.xml;
3) перемещение стадии по списку стадий (пункт c). Для возможности перемещения стадии необходимо выбрать её с помощью левой кнопки мыши. Последовательность стадий в списке не влияет на выполнение сценария. Глобальную стадию переместить по списку невозможно;
4) отображение и изменение параметров стадии (пункт d). Для отображения информации о стадии необходимо выбрать её с помощью левой в кнопки мыши в списке стадий. На примере выше выбрана глобальная стадия и отображается информация о ней. Глобальная стадия имеет единственный параметр info с неизменным значением global stage. Пример раздела с выбранной стадией, отличной от глобальной стадии, показан на примере ниже. Имя стадии вводится в качестве значения (value) параметра (parameter) name, а следующая стадия выбирается из выпадающего списка значений параметра next.
Примечание. Ввод имени стадии и выбор следующей стадии соответствует присвоению значений атрибутам name и next тэга <stage> при ручном редактировании scenario.xml.
Узлы
Раздел узлов состоит из следующих элементов:
a – название стадии,
b – поле для комментария к текущей стадии,
c – внутреннее содержимое стадии,
d – кнопки для перемещения узлов,
e, f, g – кнопки для управления вложенностью узлов,
h – помощник по составлению выражений,
i – настройки узла.
Раздел узлов имеет следующие возможности:
1) отображение названия выбранной для редактирования стадии (пункт a). Выбор стадии для редактирования осуществляется из списка стадий (пункт b) нажатием по ней левой кнопкой мыши;
2) добавление комментария к стадии (пункт b).
Примечание. Аналогично добавлению комментария к стадии с помощью тэга <com> при ручном редактировании scenario.xml;
3) редактирование содержимого стадии (пункт с). Любая стадия содержит блок пользовательских переменных (variables), блок инициализации (init), блок обработчика (loop). Блоки являются аналогами тэгов <vars>, <init> и <loop> соответственно. Добавление переменных в блок переменных или узлов в блоки инициализации и обработчика осуществляется путём вызова контекстного меню нажатием правой кнопки мыши по соответствующему блоку. В контекстном меню следует выбрать add, а затем необходимый узел.
При добавлении узла через контекстное меню существующего элемента новый будет добавлен следом за существующим узлом. Для удаления узла в контекстном меню следует выбрать delete.
Подробное описание каждого из узлов приведено ниже;
4) перемещение узла по блоку или в пределах ветви условия (пункт d). Для возможности перемещения узла необходимо выбрать его с помощью левой кнопки мыши;
5) перемещение узла из ветви условия на уровень выше (пункт e); перемещение узла в ветвь true условия (пункт f) или в ветвь else (пункт g). Подробное описание условного узла приведено ниже;
6) составление выражений с помощью помощника (пункт h);
7) отображение и изменение параметров узла (пункт j). Для возможности просмотра и изменения параметров узла необходимо выбрать его с помощью левой кнопки мыши. Подробная информация о настройке узла каждого типа приведена ниже.
Переменные (variables)
В блок пользовательских переменных имеется возможность добавлять переменные трёх типов: bool – логические переменные, int – целочисленные переменные time – переменные времени.
Примечание. Добавление данных переменных в редакторе равносильно использованию тэгов <bool>, <int>, <time> при ручном редактировании scenario.xml.
Настройки параметров узла одинаковы для переменных любого типа. Пример раздела узлов с добавленными переменными разных типов и выбранной логической переменной приведён ниже. Имя переменной вводится в качестве значения (value) параметра (parameter) name (аналог атрибута name). Тип переменной можно сменить, выбрав значение параметра type из выпадающего списка. Значение переменной задаётся в поле параметра value (аналог атрибута val)
Условия (conditions)
Условия могут быть добавлены в блоки init и loop. Для добавления условия в контекстном меню необходимо выбрать add → condition. Условие имеет две ветви: true – выполняется, если значение параметра expressions истинно; else – выполняется, если значение параметра expressions ложно. По умолчанию узел условия имеет обе ветви.
Примечание. Добавление условий в редакторе равносильно использованию тэга <if> при ручном редактировании scenario.xml.
При необходимости ветвь else можно удалить, выбрав в контекстном меню remove else node.
Неотъемлемой частью условия является логическое выражение. Логическое выражение вводится в качестве значения (value) параметра (parameter) expression в настройках узла (аналог атрибута exp). В логических выражениях используются переменные и константы. Пример условия с введённым логическим выражением приведён ниже.
Для упрощения ввода логических выражения существует помощник (wizard). Помощник вызывается либо с помощью одноименного пункта в контекстном меню условия, либо с помощью кнопки под содержимым стадии.
С помощью вкладки trigger составляются условия для отслеживания изменения состояний дискретных входов и выходов. В выпадающем списке object name выбирается переменная комнаты, а в выпадающем списке trigger type – тип события. Существуют события трёх типов: triggerhi – изменения состояния переменной комнаты с false на true, triggerlo – изменения состояния переменной с true на false, trigger – любое изменение состояния переменной. По завершении выбора необходимо нажать кнопку «ok».
Для создания сложных проверок условия могут быть вложены друг в друга, а также могут быть использованы предусловия (precondition), связанные между собой логической связкой И или ИЛИ. Для добавления предусловия в контекстном меню условия или другого предусловия необходимо выбрать add → precondition. Настройки узла предусловия отличаются наличием параметра logic, который отвечает за тип логически связки между условиями. Изменение логической связки возможно в настройках самого верхнего условия из связанных.
К каждой из ветвей условия возможно добавление комментария путём ввода текста в поле параметра comment.
Выражения (expressions)
Выражения могут быть добавлены в блоки init и loop. Для добавления выражения в контекстном меню необходимо выбрать add → expression. Непосредственно выражение вводится в качестве значения (value) параметра (parameter) expression в настройках узла. В примере ниже введено выражение, которое заставляет гореть диммируемый источник света на полную яркость.
Примечание. Добавление выражения в редакторе равносильно использованию тэга <act> c атрибутом exp при ручном редактировании scenario.xml.
Журнал событий (logger)
Сообщения в журнал событий могут выводиться из блоков init и loop. Для добавления узла, который будет выводить сообщения в журнал событий, в контекстном меню необходимо выбрать add → logger. После добавления необходимо произвести настройку узла. Если на плане комнаты размещено несколько журналов событий, то требуется выбрать из выпадающего списка параметра (parameter) logger выбрать имя того журнала событий, в котором будет отображаться сообщение. А в качестве значения (value) параметра text ввести сообщения для вывода. На примере ниже выбран журнал событий с именем «logger» и введено сообщение для отображения: «logging string…».
Макроэффекты (macroeffects)
Макроэффекты могут быть запущены из блоков init и loop. Для добавления узла, который будет запускать макроэффект, в контекстном меню необходимо выбрать add → macroeffect. После добавления необходимо произвести настройку узла. Из выпадающего списка параметра (parameter) file требуется макроэффект из списка существующих в проекте. Если требуется ожидание окончания выполнения макроэффекта, то следует поставить галочку у параметра wait. А количество повторений макроэффекта задаётся с помощью значения (value) параметра loop. На примере ниже для запуска выбран макроэффект с именем «blinking.mef», который будет проигран единожды с ожиданием окончания.
Пауза (delay)
Паузы могут быть добавлены в блоки init и loop. Для добавления паузы в контекстном меню необходимо выбрать add → delay. Длительность паузы в микросекундах устанавливается в настройках узла в качестве значения (value) параметра (parameter) delay. На примере ниже установлена пауза длительность в 1 секунду.
Переход к новой стадии (goto)
Узел перехода к новой стадии может быть добавлен в блоки init и loop. Для добавления узла перехода в контекстном меню необходимо выбрать add → goto. Стадия, к которой будет осуществлён переход, выбирается в настройках узла из выпадающего списка параметра (parameter) stage. Ниже показан пример, когда переход со стадии stage_1 на стадию stage_2 осуществится при изменении состояния дискретного входа с именем din_1.
Журнал событий редактора сценариев
Журнал событий располагается в нижней части окна редактора сценариев. В журнал событий выводятся сообщения обо всех действиях, который произвёл пользователь. Например, пользователь добавил новую стадию (menu action ‘stage add’ at ‘stage_1’ object), добавил условие в блок loop (menu action ‘unit add’ at ‘loop’ object) и узел перехода в ветвь true условия (menu action ‘unit add goto’ at ‘true’ object).