В этом практическом руководстве мы расскажем вам о том, как разместить 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‑платформ он будет отличаться.
В следующем разделе мы займемся подготовкой WebGL‑проекта Unity к интеграции с xAPI.
2. Реализация xAPI в вашем WebGL-проекте
В этом разделе мы расскажем вам о том, как реализовать отслеживание по xAPI в WebGL‑проекте Unity с помощью пользовательского скрипта XAPIManager. Этот скрипт генерирует xAPI‑отчеты (структурированные данные о действиях учащегося) и отправляет их в LRS выбранной вами LMS.
2.1 Создание скрипта XAPIManager
Для начала создайте в Unity скрипт, который будет обрабатывать отправку xAPI‑запросов в LRS.
-
Создайте скрипт 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}"" }} }} }} }}"; } }
-
Объяснение:
-
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. Вот простой пример:
-
Прикрепите 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." ); } }
-
Объяснение:
-
OnGameComplete
: Этот метод запускается, когда игрок завершает игру. Он вызывает методSendStatement
XAPIManager для отправки сообщения о завершении игры в LRS. -
В реальном проекте имя и электронная почта игрока должны вводиться динамически, возможно, через экран входа в систему или поля пользовательского ввода.
-
Примечание: В реальном проекте вы бы заменили «Player Name» и «player@example.com» на реальные динамические значения, например, введенные пользователем.
2.3 Тестирование XAPIManager в Unity
Чтобы проверить правильность работы функционала:
-
В Play Mode:
-
Запустите свою игру в редакторе Unity и смоделируйте завершение игры. Будет сгенерировано xAPI‑утверждение, и вы увидите результат в консоли Unity.
-
В 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 предоставляет базовый шаблон, который вы можете настроить под свои нужды. Вот как можно создать собственный шаблон:
-
Найдите шаблон дефолтный 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/
.
-
-
Эта папка содержит дефолтные шаблоны, которые Unity использует для WebGL‑билдов.
-
Скопируйте папку с дефолтными шаблонами:
-
Найдите папку Default в каталоге WebGLTemplates.
-
Скопируйте папку Default. Она послужит основой для вашего пользовательского шаблона.
3.2 Создание пользовательского шаблона в проекте Unity
После того как вы скопировали дефолтный шаблон, следующим шагом будет его настройка в вашем проекте Unity.
-
Вставьте скопированный шаблон в ваш проект Unity:
-
Перейдите в папку Assets вашего проекта Unity.
-
Внутри папки Assets создайте новую папку с именем WebGLTemplates (если она еще не создана).
-
Вставьте скопированную папку Default в каталог
Assets/WebGLTemplates/
. -
Переименуйте вставленную папку, например SCORMTemplate.
Теперь структура ваших папок должна выглядеть следующим образом:
Assets/ └── WebGLTemplates/ └── SCORMTemplate/ └── index.html └── ... (other template files)
3.3 Изменение файла index.html
Файл index.html в папке пользовательского шаблона очень важен, поскольку он управляет тем, как ваш WebGL‑билд Unity будет представлена в браузере.
-
Откройте файл index.html:
-
В папке SCORMTemplate найдите файл index.html.
-
Откройте этот файл в текстовом редакторе, например Visual Studio Code, Sublime Text или даже Notepad.
-
Позаботьтесь о совместимости с xAPI:
-
Редактируя index.html, убедитесь, что он правильно загружает содержимое Unity WebGL и включает любые скрипты или код, необходимые для инициализации xAPI‑трекинга. Сюда входят ссылки на файл tincan.xml и любой JavaScript‑код, необходимый для взаимодействия с SCORM Cloud LRS.
-
Убедитесь, что ваш index.html правильно включает все библиотеки JavaScript, необходимые для взаимодействия с xAPI, например библиотеку TinCanJS, если она требуется вашей LMS.
3.4 Добавьте файл tincan.xml
Файл tincan.xml определяет механизм запуска и ID активити для вашего пакета xAPI, которые некоторые LMS‑платформы требуют для правильного отслеживания xAPI‑утверждений.
-
Создайте файл tincan.xml:
-
В папке SCORMTemplate создайте новый файл с именем tincan.xml.
-
Определите структуру 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>
-
Измените XML: Заполните свою информацию:
-
yourdomain.com
: Имя вашего домена. -
your‑activity‑id
: Уникальный идентификатор вашей активити. -
Your Activity Name
: Имя вашей активити. -
A description of your activity…
: Описание, в котором подробно описывается ваша активити. -
Убедитесь, что тег launch указывает на файл index.html, который будет сгенерирован Unity.
3.5 Выбор пользовательского шаблона в Unity
Теперь, когда ваш шаблон готов, вам нужно указать Unity, чтобы она использовала его при создании вашего проекта.
-
Откройте Unity и перейдите к настройкам проекта:
-
В Unity перейдите в меню Edit > Project Settings.
-
Выберите пользовательский шаблон:
-
В настройках проекта перейдите к настройкам Player на вкладке Resolution and Presentation.
-
Найдите выпадающее меню WebGL Template.
-
Выберите свой собственный шаблон (SCORMTemplate).
3.6 Создание проекта Unity с помощью пользовательского шаблона
-
Создайте свой проект:
-
Перейдите в меню File > Build Settings в Unity.
-
Выберите WebGL в качестве целевой платформы.
-
Нажмите Build и выберите место для сохранения билда.
-
Проверьте билд:
-
После завершения сборки убедитесь, что в выходном каталоге содержатся необходимые файлы, включая index.html и tincan.xml в папке вашего пользовательского шаблона.
4. Упаковка и загрузка WebGL-билда Unity в LMS
В этом разделе мы расскажем вам о том, как упаковать WebGL‑билд Unity, загрузить его в SCORM Cloud и убедиться, что xAPI‑утверждения отправлены и зарегистрированы правильно.
Примечание: В качестве примера мы будем использовать SCORM Cloud, но общие принципы применимы и к другим LMS‑платформам, совместимым с xAPI.
4.1 Создание и упаковка вашего WebGL‑билда
-
Создайте свой WebGL‑проект:
-
В Unity перейдите в меню File > Build Settings.
-
Выберите WebGL в качестве платформы.
-
Убедитесь, что ваш пользовательский шаблон, включающий файл tincan.xml, выбран в разделе Player Settings > Resolution and Presentation > WebGL Template.
-
Нажмите на Build и выберите папку для сохранения сборки WebGL (например, Builds/WebGL).
-
Проверьте файл tincan.xml:
-
После завершения процесса сборки перейдите в папку, в которой был сохранен билд.
-
Убедитесь, что файл tincan.xml присутствует в корневой директории папки WebGL‑билда вместе с файлом index.html.
-
Упакуйте все содержимое папки с билдом (не не саму папку) в.zip‑файл:
-
Выберите все содержимое папки с билдом (включая index.html, папку Build, папку TemplateData и tincan.xml).
-
Щелкните правой кнопкой мыши и выберите Send to > Compressed (zipped) folder, чтобы создать.zip‑файл. Это и будет пакет, который вы загрузите в SCORM Cloud.
4.2 Загрузка в SCORM Cloud
Загрузите пакет в вашу LMS: В большинстве LMS‑платформ есть возможность импортировать или загрузить пакет курса. Перейдите в этот раздел на панели управления вашей LMS. Например, в SCORM Cloud:
-
Войдите в систему SCORM Cloud:
-
Зайдите на сайт SCORM Cloud и войдите в свою учетную запись.
-
Загрузите пакет с курсом:
-
Перейдите в раздел Library на панели управления SCORM Cloud.
-
Нажмите на Import Course и загрузите.zip‑файл с вашим WebGL‑билдом.
-
Укажите Course ID, если хотите его задать. В противном случае оставьте это поле пустым, чтобы он был сгенерирован автоматически.
-
Нажмите кнопку Import, чтобы загрузить курс в SCORM Cloud.
-
Проверьте загрузку:
-
После загрузки курса он появится в вашей библиотеке SCORM Cloud.
-
Нажмите на курс, чтобы просмотреть его и убедиться, что все работает так, как нужно.
4.3 Просмотр xAPI‑утверждений в SCORM Cloud
После того как пользователи начнут взаимодействовать с вашей WebGL‑игрой, вы можете просмотреть xAPI‑утверждения, которые были отправлены в LRS. Утверждения обычно появляются в LRS Viewer в течение нескольких минут после взаимодействия, что позволяет быстро проверить и проанализировать данные пользователей. На панели управления LMS найдите раздел для просмотра xAPI‑утверждений или записей обучения. В зависимости от LMS он может называться по‑разному (например, ‘LRS Viewer’, ‘Reports’, ‘Analytics’). Например, в SCORM Cloud:
-
Зайдите в LRS Viewer:
-
На панели управления SCORM Cloud перейдите в раздел LRS (Learning Record Store).
-
Нажмите на LRS Viewer, чтобы просмотреть xAPI‑утверждения.
-
Фильтр и поисковые запросы:
-
Используйте фильтры для поиска конкретных утверждений по акторам, глаголам или видам деятельности.
-
Вы должны увидеть утверждения, соответствующие взаимодействиям в вашей WebGL‑игре, например «completed» или «experienced».
4.4 Создание публичной ссылки‑приглашения
Чтобы предоставить другим доступ к вашему курсу, SCORM Cloud позволяет создавать публичные ссылки‑приглашения:
-
Создайте приглашение:
-
В SCORM Cloud перейдите в раздел Invitations.
-
Нажмите на кнопку Create Invitation и выберите курс, которым вы хотите поделиться.
-
Настройте приглашение:
-
Выберите, каким будет приглашение — публичным или приватным. Публичные приглашения могут быть доступны любому, у кого есть ссылка, а для приватных требуется адрес электронной почты.
-
Установите любые другие необходимые параметры, например максимальное количество использований или срок действия.
-
Поделитесь ссылкой на приглашение:
-
После создания приглашения SCORM Cloud сгенерирует уникальную ссылку.
-
Поделитесь этой ссылкой со своей целевой аудиторией.
-
Тестирование публичной ссылки‑приглашения:
-
Откройте ссылку в режиме инкогнито или в другом браузере, чтобы убедиться, что она работает как надо.
-
Пройдите курс самостоятельно, чтобы убедиться, что xAPI‑утверждения записываются в SCORM Cloud LRS Viewer.
Выполнив эти шаги, вы сможете успешно загрузить 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/
Добавить комментарий