В этом практическом руководстве мы расскажем вам о том, как разместить 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: в каталоге можно посмотреть список всех программ, а в календаре — записаться на открытые уроки.