Практическое руководство по Unity: Настраиваем xAPI-трекинг и размещаем WebGL-билд в LMS

от автора

В этом практическом руководстве мы расскажем вам о том, как разместить WebGL‑билд Unity в системе управления обучением (Learning Management System, LMS) с отслеживанием по xAPI. На сегодняшний день LMS‑платформы, такие как SCORM Cloud, являются самым популярным решением для доставки и отслеживания учебного материала в онлайне. Интегрировав xAPI, в свой проект Unity, вы сможете отслеживать детальные взаимодействия с учащимися и отправлять эти данные в выбранную вами LMS. В этом руководстве мы используем в качестве примера SCORM Cloud, но эти шаги применимы к любой другой LMS‑платформе, совместимой с xAPI.

Создаете ли вы полноценную игру, обучающую симуляцию или образовательный опыт, это руководство поможет вам настроить ваш проект для взаимодействия с любой LMS с поддержкой xAPI, что позволит вам эффективно отслеживать и документировать успехи ваших пользователей.

Мы рассмотрим все, начиная с создания учетной записи LMS (на примере SCORM Cloud), подготовки проекта Unity WebGL к xAPI‑трекингу, создания и настройки пользовательского шаблона WebGL и заканчивая загрузкой и тестированием проекта в LMS. К концу этого руководства у вас будет полностью функциональный WebGL‑билд, отправляющая xAPI‑отчеты в хранилище учебных записей (Learning Record Store, LRS).

1. Учетная запись в LMS

Прежде чем вы начнете загружать ваш WebGL‑билд в выбранной вами LMS с поддержкой xAPI‑трекинга, вам необходимо создать учетную запись и настроить приложение. Вот как это можно сделать (на примере SCORM Cloud):

1.1 Создание учетной записи

Если у вас еще нет учетной записи в вашей LMS, вам нужно ее создать. Многие LMS‑платформы, например SCORM Cloud, предлагают различные тарифные планы, включая бесплатные варианты для начала работы с ограниченным базовым функционалом.

  • Выберите LMS‑платформу: Выберите LMS, которая поддерживает отслеживание по xAPI. Среди популярных вариантов можно выделить SCORM Cloud, Moodle, Learning Locker и Docebo.

  • Создайте учетную запись: Зайдите на выбранную вами платформу LMS и создайте учетную запись.

  • Залогиньтесь: После создания учетной записи вам нужно войти в панель управления вашей LMS.

1.2 Создание приложения или интеграции

Чтобы интегрировать ваш проект Unity WebGL с LMS, вам нужно создать приложение или настроить учетные данные API в вашем аккаунте LMS. Вот как это можно сделать (в качестве примера мы будем использовать SCORM Cloud):

  • На панели управления LMS перейдите в раздел «Apps» (для SCORM Cloud).
    Нажмите на кнопку «Add App», чтобы создать новое приложение.

  • Введите имя приложения и настройте другие параметры, если это необходимо.

  • После создания приложения вам будут предоставлены идентификатор приложения (App ID) и ключ (Secret Key). Держите эти учетные данные под рукой, так как они понадобятся вам для настройки проекта Unity.

1.3 Учетные данные

  • App ID: Служит в качестве имени пользователя при выполнении xAPI‑запросов.

  • Secret Key: Это ваш пароль для аутентификации в xAPI.

  • LRS Endpoint: Это URL, по которому вы будете отправлять xAPI‑запросы. Формат эндпоинта для SCORM Cloud — https://cloud.scorm.com/lrs/YOUR_APP_ID/statements, но для других LMS‑платформ он будет отличаться.

Understanding the Credentials

В следующем разделе мы займемся подготовкой WebGL‑проекта Unity к интеграции с xAPI.

2. Реализация xAPI в вашем WebGL-проекте 

В этом разделе мы расскажем вам о том, как реализовать отслеживание по xAPI в WebGL‑проекте Unity с помощью пользовательского скрипта XAPIManager. Этот скрипт генерирует xAPI‑отчеты (структурированные данные о действиях учащегося) и отправляет их в LRS выбранной вами LMS.

2.1 Создание скрипта XAPIManager

Для начала создайте в Unity скрипт, который будет обрабатывать отправку xAPI‑запросов в LRS.

  1. Создайте скрипт XAPIManager:

  • В Unity перейдите в папку Assets и создайте новый C#‑скрипт под названием XAPIManager.

  • Откройте скрипт в удобном для вас редакторе кода.

Отредактируйте скрипт:

Замените содержимое скрипта XAPIManager следующим кодом: (Не забудьте заменить YOUR_LRS_ID и YOUR_LRS_SecretKey на App ID и Secret Key, предоставленные вашей LMS‑платформой).

using System.Collections; using UnityEngine; using UnityEngine.Networking;  public class XAPIManager : MonoBehaviour {     private string endpoint =  "https://cloud.scorm.com/lrs/YOUR_LRS_ID/statements";     private string username = "YOUR_LRS_ID";     private string password = "YOUR_LRS_SecretKey";      public void SendStatement(string actorName, string actorEmail, string verbId,  string verbDisplay, string activityId, string activityName,  string activityDescription)     {         // Используйте значения по умолчанию, если имя или email не указаны         if (string.IsNullOrEmpty(actorName)) actorName = "Tester";         if (string.IsNullOrEmpty(actorEmail)) actorEmail = "tester@test.com";          string jsonStatement = GenerateStatement(actorName, actorEmail, verbId,  verbDisplay, activityId, activityName, activityDescription);         StartCoroutine(PostStatement(jsonStatement));     }      private IEnumerator PostStatement(string jsonStatement)     {         UnityWebRequest request = new UnityWebRequest(endpoint, "POST");         byte[] bodyRaw = new System.Text.UTF8Encoding().GetBytes(jsonStatement);         request.uploadHandler = new UploadHandlerRaw(bodyRaw);         request.downloadHandler = new DownloadHandlerBuffer();         request.SetRequestHeader("Content-Type", "application/json");         request.SetRequestHeader("X-Experience-API-Version", "1.0.3");          string auth = System.Convert.ToBase64String(System.Text.Encoding.ASCII. GetBytes(username + ":" + password));         request.SetRequestHeader("Authorization", "Basic " + auth);          yield return request.SendWebRequest();          if (request.result == UnityWebRequest.Result.Success)         {             Debug.Log("Successfully sent xAPI statement");         }         else         {             Debug.LogError("Error sending xAPI statement: " + request.error);             Debug.LogError("Response: " + request.downloadHandler.text);         }     }      private string GenerateStatement(string actorName, string actorEmail,  string verbId, string verbDisplay, string activityId, string activityName,  string activityDescription)     {         return $@"         {{             ""actor"": {{                 ""name"": ""{actorName}"",                 ""mbox"": ""mailto:{actorEmail}""             }},             ""verb"": {{                 ""id"": ""{verbId}"",                 ""display"": {{ ""en-GB"": ""{verbDisplay}"" }}             }},             ""object"": {{                 ""id"": ""{activityId}"",                 ""definition"": {{                     ""name"": {{ ""en-GB"": ""{activityName}"" }},                     ""description"": {{ ""en-GB"": ""{activityDescription}"" }}                 }}             }}         }}";     } }
  1. Объяснение:

  • Endpoint, Username, Password: эти поля необходимы для аутентификации и отправки данных в LRS. Замените «YOUR_LRS_ID» и «YOUR_LRS_SecretKey» на ваши реальные учетные данные из LMS.

  • SendStatement: Этот метод генерирует xAPI‑утверждение (statement) и отправляет его в LRS. Он принимает такие параметры, как actorName, actorEmail, verbId, verbDisplay, activityId, activityName и activityDescription.

  • PostStatement: Эта корутина обрабатывает HTTP POST‑запрос для отправки утверждения в LRS.

  • GenerateStatement: Этот метод создает JSON‑структуру для xAPI‑утверждения.

2.2 Использование XAPIManager в вашем проекте Unity

Чтобы отправить xAPI‑утверждение, вам нужно вызвать метод SendStatement из проекта Unity. Вот простой пример:

  1. Прикрепите XAPIManager к GameObject:

  • В Unity на вашей сцене создайте пустой GameObject (например, с именем XAPIManager).

  • Прикрепите скрипт XAPIManager к этому GameObject.

Вызовите метод SendStatement:

Вот базовый пример того, как вызвать метод SendStatement, когда игрок завершает игру:

public class GameCompletionHandler : MonoBehaviour {     public XAPIManager xapiManager;      void Start()     {         // Ищет XAPIManager на сцене         xapiManager = FindObjectOfType();     }      public void OnGameComplete()     {         // Отправляет сообщение о завершении игры, когда она будет завершена         xapiManager.SendStatement(             actorName: "Player Name",         // Замените на реальное имя игрока             actorEmail: "player@example.com", // Замените на реальный email игрока             verbId: "http://adlnet.gov/expapi/verbs/completed",             verbDisplay: "completed",             activityId: "http://yourdomain.com/activities/your-activity-id",             activityName: "Your Game Name",             activityDescription: "Completed the game."         );     } }
  1. Объяснение:

  • OnGameComplete: Этот метод запускается, когда игрок завершает игру. Он вызывает метод SendStatement XAPIManager для отправки сообщения о завершении игры в LRS.

  • В реальном проекте имя и электронная почта игрока должны вводиться динамически, возможно, через экран входа в систему или поля пользовательского ввода.

  1. Примечание: В реальном проекте вы бы заменили «Player Name» и «player@example.com» на реальные динамические значения, например, введенные пользователем.

2.3 Тестирование XAPIManager в Unity

Чтобы проверить правильность работы функционала:

  1. В Play Mode:

  • Запустите свою игру в редакторе Unity и смоделируйте завершение игры. Будет сгенерировано xAPI‑утверждение, и вы увидите результат в консоли Unity.

  1. В WebGL‑билде:

  • Когда вы соберете и развернете игру, xAPI‑утверждения будут отправлены в LRS, как и ожидалось.

Выполнив эти шаги, вы интегрировали xAPI‑трекинг в свой проект Unity. В следующем разделе мы расскажем о том, как создать пользовательский шаблон WebGL и загрузить проект в LMS.

3. Подготовка WebGL-проекта Unity к интеграции с xAPI

В этом разделе мы рассмотрим создание пользовательского шаблона WebGL для вашего проекта Unity. Этот шаблон необходим для интеграции xAPI‑трекинга с SCORM Cloud. Он позволяет включить необходимые файлы и скрипты, такие как файл tincan.xml, которые SCORM Cloud использует для распознавания и отслеживания WebGL‑билда.

Примечание: В качестве примера мы используем SCORM Cloud, но вам следует почитать документацию вашей LMS, чтобы узнать о требованиях к конкретной платформе.

3.1 Найдите и скопируйте дефолтный шаблон WebGL

Unity использует HTML‑шаблоны для структурирования вывода WebGL‑билда. По умолчанию Unity предоставляет базовый шаблон, который вы можете настроить под свои нужды. Вот как можно создать собственный шаблон:

  1. Найдите шаблон дефолтный WebGL:

  • Windows:

    • Перейдите в C:\Program Files\Unity\Hub\Editor\<Ваша версия Unity>\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\WebGLTemplates\.

  • Mac:

    • Перейдите в /Applications/Unity/Hub/Editor/<Ваша версия Unity>/PlaybackEngines/WebGLSupport/BuildTools/WebGLTemplates/.

  1. Эта папка содержит дефолтные шаблоны, которые Unity использует для WebGL‑билдов.

  2. Скопируйте папку с дефолтными шаблонами:

  • Найдите папку Default в каталоге WebGLTemplates.

  • Скопируйте папку Default. Она послужит основой для вашего пользовательского шаблона.

3.2 Создание пользовательского шаблона в проекте Unity

После того как вы скопировали дефолтный шаблон, следующим шагом будет его настройка в вашем проекте Unity.

  1. Вставьте скопированный шаблон в ваш проект Unity:

  • Перейдите в папку Assets вашего проекта Unity.

  • Внутри папки Assets создайте новую папку с именем WebGLTemplates (если она еще не создана).

  • Вставьте скопированную папку Default в каталог Assets/WebGLTemplates/.

  • Переименуйте вставленную папку, например SCORMTemplate.

Теперь структура ваших папок должна выглядеть следующим образом:

Assets/ └── WebGLTemplates/     └── SCORMTemplate/         └── index.html         └── ... (other template files)
Custom Template Hierarchy

Hierarchy
Custom Template Folder View

3.3 Изменение файла index.html

Файл index.html в папке пользовательского шаблона очень важен, поскольку он управляет тем, как ваш WebGL‑билд Unity будет представлена в браузере.

  1. Откройте файл index.html:

  • В папке SCORMTemplate найдите файл index.html.

  • Откройте этот файл в текстовом редакторе, например Visual Studio Code, Sublime Text или даже Notepad.

  1. Позаботьтесь о совместимости с xAPI:

  • Редактируя index.html, убедитесь, что он правильно загружает содержимое Unity WebGL и включает любые скрипты или код, необходимые для инициализации xAPI‑трекинга. Сюда входят ссылки на файл tincan.xml и любой JavaScript‑код, необходимый для взаимодействия с SCORM Cloud LRS.

  1. Убедитесь, что ваш index.html правильно включает все библиотеки JavaScript, необходимые для взаимодействия с xAPI, например библиотеку TinCanJS, если она требуется вашей LMS.

3.4 Добавьте файл tincan.xml

Файл tincan.xml определяет механизм запуска и ID активити для вашего пакета xAPI, которые некоторые LMS‑платформы требуют для правильного отслеживания xAPI‑утверждений.

  1. Создайте файл tincan.xml:

  • В папке SCORMTemplate создайте новый файл с именем tincan.xml.

  1. Определите структуру tincan.xml:
    Откройте файл tincan.xml в текстовом редакторе и вставьте следующую XML‑структуру:

<?xml version="1.0" encoding="utf-8" ?> <tincan xmlns="http://projecttincan.com/tincan.xsd">     <activities>         <activity id="http://yourdomain.com/activities/your-activity-id"  type="http://adlnet.gov/expapi/activities/course">             <name>Your Activity Name</name>             <description lang="en-GB">A description of your activity that  includes xAPI tracking.</description>             <launch lang="en-GB">index.html</launch>         </activity>     </activities> </tincan>
  1. Измените XML: Заполните свою информацию:

  • yourdomain.com: Имя вашего домена.

  • your‑activity‑id: Уникальный идентификатор вашей активити.

  • Your Activity Name: Имя вашей активити.

  • A description of your activity…: Описание, в котором подробно описывается ваша активити.

  • Убедитесь, что тег launch указывает на файл index.html, который будет сгенерирован Unity.

3.5 Выбор пользовательского шаблона в Unity

Теперь, когда ваш шаблон готов, вам нужно указать Unity, чтобы она использовала его при создании вашего проекта.

  1. Откройте Unity и перейдите к настройкам проекта:

  • В Unity перейдите в меню Edit > Project Settings.

  1. Выберите пользовательский шаблон:

  • В настройках проекта перейдите к настройкам Player на вкладке Resolution and Presentation.

  • Найдите выпадающее меню WebGL Template.

  • Выберите свой собственный шаблон (SCORMTemplate).

Resolution and Presentation Settings

3.6 Создание проекта Unity с помощью пользовательского шаблона

  1. Создайте свой проект:

  • Перейдите в меню File > Build Settings в Unity.

  • Выберите WebGL в качестве целевой платформы.

  • Нажмите Build и выберите место для сохранения билда.

  1. Проверьте билд:

  • После завершения сборки убедитесь, что в выходном каталоге содержатся необходимые файлы, включая index.html и tincan.xml в папке вашего пользовательского шаблона.

4. Упаковка и загрузка WebGL-билда Unity в LMS

В этом разделе мы расскажем вам о том, как упаковать WebGL‑билд Unity, загрузить его в SCORM Cloud и убедиться, что xAPI‑утверждения отправлены и зарегистрированы правильно.

Примечание: В качестве примера мы будем использовать SCORM Cloud, но общие принципы применимы и к другим LMS‑платформам, совместимым с xAPI.

4.1 Создание и упаковка вашего WebGL‑билда

  1. Создайте свой WebGL‑проект:

  • В Unity перейдите в меню File > Build Settings.

  • Выберите WebGL в качестве платформы.

  • Убедитесь, что ваш пользовательский шаблон, включающий файл tincan.xml, выбран в разделе Player Settings > Resolution and Presentation > WebGL Template.

  • Нажмите на Build и выберите папку для сохранения сборки WebGL (например, Builds/WebGL).

  1. Проверьте файл tincan.xml:

  • После завершения процесса сборки перейдите в папку, в которой был сохранен билд.

  • Убедитесь, что файл tincan.xml присутствует в корневой директории папки WebGL‑билда вместе с файлом index.html.

  1. Упакуйте все содержимое папки с билдом (не не саму папку) в.zip‑файл:

  • Выберите все содержимое папки с билдом (включая index.html, папку Build, папку TemplateData и tincan.xml).

  • Щелкните правой кнопкой мыши и выберите Send to > Compressed (zipped) folder, чтобы создать.zip‑файл. Это и будет пакет, который вы загрузите в SCORM Cloud.

4.2 Загрузка в SCORM Cloud

Загрузите пакет в вашу LMS: В большинстве LMS‑платформ есть возможность импортировать или загрузить пакет курса. Перейдите в этот раздел на панели управления вашей LMS. Например, в SCORM Cloud:

  1. Войдите в систему SCORM Cloud:

  • Зайдите на сайт SCORM Cloud и войдите в свою учетную запись.

  1. Загрузите пакет с курсом:

  • Перейдите в раздел Library на панели управления SCORM Cloud.

  • Нажмите на Import Course и загрузите.zip‑файл с вашим WebGL‑билдом.

  • Укажите Course ID, если хотите его задать. В противном случае оставьте это поле пустым, чтобы он был сгенерирован автоматически.

  • Нажмите кнопку Import, чтобы загрузить курс в SCORM Cloud.

Add Content Dialogue
Upload xAPI Dialogue
  1. Проверьте загрузку:

  • После загрузки курса он появится в вашей библиотеке SCORM Cloud.

  • Нажмите на курс, чтобы просмотреть его и убедиться, что все работает так, как нужно.

4.3 Просмотр xAPI‑утверждений в SCORM Cloud

После того как пользователи начнут взаимодействовать с вашей WebGL‑игрой, вы можете просмотреть xAPI‑утверждения, которые были отправлены в LRS. Утверждения обычно появляются в LRS Viewer в течение нескольких минут после взаимодействия, что позволяет быстро проверить и проанализировать данные пользователей. На панели управления LMS найдите раздел для просмотра xAPI‑утверждений или записей обучения. В зависимости от LMS он может называться по‑разному (например, ‘LRS Viewer’, ‘Reports’, ‘Analytics’). Например, в SCORM Cloud:

  1. Зайдите в LRS Viewer:

  • На панели управления SCORM Cloud перейдите в раздел LRS (Learning Record Store).

  • Нажмите на LRS Viewer, чтобы просмотреть xAPI‑утверждения.

  1. Фильтр и поисковые запросы:

  • Используйте фильтры для поиска конкретных утверждений по акторам, глаголам или видам деятельности.

  • Вы должны увидеть утверждения, соответствующие взаимодействиям в вашей WebGL‑игре, например «completed» или «experienced».

LRS Viewer Page

4.4 Создание публичной ссылки‑приглашения

Чтобы предоставить другим доступ к вашему курсу, SCORM Cloud позволяет создавать публичные ссылки‑приглашения:

  1. Создайте приглашение:

  • В SCORM Cloud перейдите в раздел Invitations.

  • Нажмите на кнопку Create Invitation и выберите курс, которым вы хотите поделиться.

  1. Настройте приглашение:

  • Выберите, каким будет приглашение — публичным или приватным. Публичные приглашения могут быть доступны любому, у кого есть ссылка, а для приватных требуется адрес электронной почты.

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

  1. Поделитесь ссылкой на приглашение:

  • После создания приглашения SCORM Cloud сгенерирует уникальную ссылку.

  • Поделитесь этой ссылкой со своей целевой аудиторией.

  1. Тестирование публичной ссылки‑приглашения:

  • Откройте ссылку в режиме инкогнито или в другом браузере, чтобы убедиться, что она работает как надо.

  • Пройдите курс самостоятельно, чтобы убедиться, что xAPI‑утверждения записываются в SCORM Cloud LRS Viewer.

Invitation Dialogue

Выполнив эти шаги, вы сможете успешно загрузить WebGL‑билд Unity в SCORM Cloud, создать публичные ссылки для пользователей и отслеживать их взаимодействие с помощью xAPI.

Заключение

Размещение WebGL‑билда Unity в LMS с xAPI‑трекингом обеспечивает мощный способ мониторинга и отчетности о взаимодействии пользователей в играх, учебных симуляторах или образовательных мероприятиях. Следуя этому руководству, вы узнаете, как настроить среду LMS, интегрировать xAPI в проект Unity с помощью пользовательского скрипта, создать пользовательский шаблон WebGL для совместимости с xAPI, упаковать и загрузить свой билд в LMS.

Этот процесс позволяет использовать возможности хранилища учебных записей (LRS) выбранной вами LMS для сбора подробной информации о поведении пользователей, например о завершении курса и других важных взаимодействиях. Эти данные бесценны для понимания того, как пользователи взаимодействуют с вашими материалами, и улучшения ваших курсов на основе реальных отзывов.

Настроив публичные приглашения, вы можете легко поделиться своими курсами с широкой аудиторией, обеспечив доступность и отслеживаемость вашего образовательного контента. Будь вы педагогом, корпоративным тренером или разработчиком игр, эта интеграция позволит вам создавать более увлекательные и ответственные учебные курсы.

Теперь, когда ваш WebGL‑билд Unity работает в вашей LMS, вы можете отслеживать xAPI‑утверждения, дорабатывать контент и продолжать внедрять инновации в интерактивное обучение. Воспользуйтесь функциями LRS вашей LMS, чтобы изучить более сложные сценарии отслеживания, интегрироваться с другими системами или расширить возможности отчетности. Основы, заложенные в этом руководстве, позволят вам и дальше настраивать и оптимизировать контент для достижения максимального эффекта в процессе обучения и подготовки.

Примечание: Хотя мы использовали SCORM Cloud в качестве примера в этом руководстве, описанные принципы и шаги применимы к любой xAPI‑совместимой LMS. За подробными инструкциями всегда обращайтесь к документации вашей конкретной LMS.


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


ссылка на оригинал статьи https://habr.com/ru/articles/869660/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *