Как мы строим геймифицированную образовательную платформу: от Node.js и React до Unity и Blender

Всем привет! Это моя первая статья, в ней я расскажу о том, как мы с командой строим геймифицированную образовательную платформу.

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

О проекте

Cryptex Corporation - это проект, который связывает игру и обучение - пользователь проходит образовательный курс, получает в награду монеты, эти монеты он тратит в игре (там же их дополнительно зарабатывает). Игра - 3д-шутер в стилистике советского киберпанка. В рамках прохождения игры, помимо сюжетной части, пользователь решает мини-игры, ребусы, головоломки и прочее, связанные с образовательными модулями.

Выбор на геймификацию пал по причине ожидаемой трансформации образования: в эпоху появления ИИ и обучения в игровой форме, стандартный подход к обучению рискует устареть (безусловно, это произойдет не сразу). Поколение меняется - меняются и подходы к нему.

О команде

На данный момент в команде 3 человека: fullstack-разработчик, 3D-artist & Game Designer, C# & Unity-разработчик. Отмечу, что, как это обычно бывает в стартапах, fullstack-разработчик занимается не только разработкой, но и тестированием и деплоем, 3D-artist занимается не только моделированием, но и текстурированием и 2D-графикой и т.д.

Как водится в стартапах, работаем пока на энтузиазме).

Архитектура проекта

Технически продукт можно разделить на 3 большие части:

  1. Веб-сайт
  2. Игра
  3. Образовательный материал(видеоролики + текст + мини-игры и прочее)

Так выглядит технологический стек продукта:

  • Backend: Node.js, Express, PostgreSQL, MySQL
  • Frontend: React, Vercel
  • Игра: Unity, MySQL
  • Контейнеризация: Docker, Docker Compose
  • Мониторинг: Grafana, Prometheus

Backend

Node.js и React были выбраны для скорости создания MVP-версии продукта, поскольку 2 разработчика умели писать код на js - разрабатывать стало проще и чуточку быстрее.

В качестве архитектурного паттерна используется MVC, вся структура разделена на controllers(логика обработки), models(сущности: sequalize, pool, user и т.д). В качестве Views целиком и полностью используется frontend часть, а backend выступает в роли Models + Controllers.

Middleware

Для разработки MVP версии продукта уже используются middleware CORS, Helmet для обеспечения безопасности(XSS-атак, Clickjacking, отключение старых браузерных фич, которые могут использоваться в атаке и т.д.).

Почему внедрили систему мониторинга на MVP стадии продукта

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

Frontend

Фронтенд веб-сайта реализован на React. Для авторизации пользователей мы выбрали OAuth2 через Google — это позволяет избежать написания собственной системы аутентификации и сократить время на разработку и тестирование. Отдельно понимаем риски, связанные с внешними сервисами, но для MVP такой подход оказался наиболее рациональным.

Функционал личного кабинета

В личном кабинете пользователи могут:

  • Просматривать количество монет, заработанных за день;
  • Изучать таблицу лидеров;
  • Менять никнейм, почту и аватар;

Главная страница сайта

Главная страница выполнена в формате лендинга:

  • Трейлер игры;
  • Краткое описание проекта;
  • Блок с юридической информацией и контактами в футере.
  • Страница с образовательным контентом представляет собой:
  • Меню с модулями и главами
  • Карточки с описанием главы и уровнем сложности
  • Для каждого модуля присутствует описание

Для предотвращения быстрого и неосмысленного прохождения образовательных модулей и глав, была придумана и реализована система, при которой у пользователя за каждый неправильный ответ отнимается определённая с общего банка.

Например, общий банк 200 монет, если пользователь за тест ошибся 2 раза - у него остаётся 160 монет.

За повторное прохождения главы банк срезается в 2 раза. Данная идея появилась с целью предотвращения зарабатывания монет на одних и тех же карточках.

После прохождения главы на следующую главу накладывается таймер.

Для оценки и закрепления знаний пользователю предлагается не только прохождения тестов, но и мини-игр, которые связаны с образовательным контентом. Их цель - проверить, как пользователь понял образовательный материал.

На этом пока всё про архитектуру и технические основы нашего проекта. В следующих материалах я планирую подробнее рассказать о:

  • Организации взаимодействия между игрой и веб-платформой;
  • Подробно про подходы к геймификации и мотивации пользователей;
  • Оптимизации инфраструктуры и выборе серверных решений.

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

Будем рады видеть вас в нашем Telegram-канале, там делимся процессом разработки и новостями проекта : https://t.me/cryptexcorp.

Всем добра!

Начать дискуссию