Scripting

Varwin SDK предназначен для создания контента для платформы Varwin RMS.

Понятие контента включает в себя:

  • шаблоны сцен (scene templates)
  • объекты (objects)

Создание шаблонов сцен не предполагает программирования, даже наоборот, на сценах не может быть скриптов не из библиотеки Varwin SDK. Поэтому данная статья сосредотачивается на объяснении принципов работы Varwin объектов.

Здесь и далее под объектом понимается Varwin объект.

Для каждого объекта обязательны три класса:

  • Основной класс объекта ObjectName - наследник VarwinObject, базового класса для всех объектов;
  • Wrapper - обертка над объектом;
  • Varwin Object Descriptor - дескриптор объекта, хранит мета-данные объекта.

Workflow

Краткое описание процесса создания объекта и основных особенностей Varwin платформы и Varwin SDK.

  1. Программист создает варвин объект из простого game object-а. Объект превращается в префаб, а на корень объекта добавляются компоненты:

    • VarwinObjectDescriptor.
    • Основной класс объекта ObjectName - наследник класса VarwinObject (генерируется автоматически).
  2. Платформа Varwin RMS (Reality Management System) предназначена для пользователей-непрограммистов. Поэтому на юнити разработчика ложится задача реализации основной логики объектов и предоставление упрощенного интерфейса для конечного пользователя.

    • Для наиболее часто используемой логики Varwin SDK предоставляет готовые компоненты.

    • Более сложная логика должна быть реализована программистом.

      Важно

      Для реализации логики в классах отличных от ObjectName .asmdef-файл объекта должен ссылаться на эти классы. Подробнее: Переиспользование компонентов.

    • Для корректной работы некоторых стандартных действий (например, детектирования коллизий) необходимо реализовывать определенные Varwin интерфейсы. Подобные моменты описаны в данным разделе документации.

  3. В RMS для пользователя доступна система визуального программирования blockly.

    • Некоторые из блоков входят в стандартную библиотеку или создаются автоматически для всех объектов.
    • Однако программист может предоставить пользователю дополнительный функционал, тогда в блокли появится новый раздел объект-специфичных блоков.
    • Блоки генерируются автоматически для полей, методов, свойств и событий, помеченных специальными атрибутами (ссылка).
    • Такой публичный функционал может быть реализован только в основном классе объекта (классе-наследнике от VarwinObject). При этом на объекте могут быть и другие скрипты, управляющие его состоянием и взаимодействующие с основным классом.
    • RMS - локалезависимая платформа, поэтому необходимо указывать публичные названия объектов, шаблонов сцен, а также публичных (тех, из которых генерируются блоки) компонентов класса на всех языках, которые будут использоваться (на данный момент доступны только русский и английский).
  4. Объект оборачивается во Wrapper - системный класс, представляющий объект в RMS. С точки зрения кода, когда нужно общаться с другим объектом, на входе всегда имеется именно его Wrapper.

  5. Программист билдит объект. Varwin SDK упаковывает созданный объект в файл с расширением .vwo.

  6. Конечный пользователь импортирует файл объекта в платформу Varwin, собирает сцену из готовых объектов и реализует простую логику с помощью предоставленных программистом интерфейсов в блокли.