Вернуться

Интеллектуальные игры для школьников Сайт-сервис интеллектуальных игр для РосНОУ

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

Заказчик

Российский новый университет или просто РосНОУ — один из крупнейших частных вузов нашей страны. Он входит в сотню лучших российских вузов по версии рейтингового агентства «Эксперт РА» и в список Round University Ranking.

Ситуация

Интеллектуальные игры для школьников — инициатива Росмолодежи. Осенью 2018 года федеральное агентство разыграло грант среди учебных учреждений, и РосНОУ его выиграл. Но, как это часто бывает с грантами, сроки на реализацию оказались очень жесткими и ограниченными. Опоздай мы хоть на день, сорвали бы мероприятие детям. 

Что такое Интеллектуальные игры?

Игры — это командное соревнование для учеников школ и средне-специальных учебных заведений от 14 до 18 лет. В рамках гранта РосНОУ решили провести два чемпионата.

Чемпионат для команд Москвы и Московской области

  • 3 дистанционные отборочные игры 
  • 3 очных полуфинала
  • Финал

Открытый Чемпионат России для команд из любых регионов страны

  • 2 дистанционные игры

Дистанционные игры проходят на сайте. На Чемпионате Москвы по их результатам отбираются команды для полуфинала. На Чемпионате России победители определяются по результатам дистанционных игр. Очные игры, в том числе финал, проходят в РосНОУ — но и для них нужен сайт.

Задачи

Перед нами стояло три задачи:

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

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

Реализация

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

 

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

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

Регистрация

Регистрация проходит в два этапа. На первом команда подает заявку и сразу получает доступ в личный кабинет. На втором этапе команда проходит премодерацию, ей присваивается регион, что влияет на фильтрацию событий на сайте — например, приглашения на Чемпионат Москвы и новости, связанные с ним, получают только столичные команды.

Демо-версия

Чтобы подготовить команды к чемпионату, мы создали демо-версию, которая позволила ученикам не только понять, что и где нажимать, но и оценить сложность вопросов и свои шансы на победу. Проходить тренировочную игру можно было сколько угодно раз — разумеется, баллы за нее не шли в общий зачет.

Отборочные игры

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

Когда ребята отвечают, они видят результат (правильно или нет) и количество игроков, которые ответили верно. А в реальном времени обновляется чарт: первая пятерка команд выходит в полуфинал.

Отборочные игры Чемпионата Москвы начались 12 ноября в три часа дня. Мы открыли доступ к старту игры и обеспечили до 1000 одновременных стабильных подключений — участников и зрителей.

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

  • Выбрать один правильный ответ
  • Сопоставить одно с другим
  • Заполнить пропуски
Павел Бондарович
Технический директор
Павел Бондарович

Требование клиента — обеспечить возможность подключиться к игре 1000 пользователям одновременно. Это и игроки, и многочисленные зрители. При этом состояние игры должно отображаться в реальном времени и без задержек. На ответ команде дается ограниченное время, поэтому каждая секунда на счету!

Для решения этой непростой задачи мы написали приложение на Node.js (менеджер игры), которое общается с браузером через socket, принимает ответы и рассылает пользователям все изменения, произошедшие в игре. Благодаря хорошо продуманной архитектуре приложения-менеджера игр мы не загружаем основной веб-сервер и готовы принять значительно больше, чем 1000 пользователей.

Полуфинал и финал

Последняя отборочная игра завершилась 14 ноября, а уже 17 мы запустили первый полуфинал. Каждая игра полуфинала состоит из трех раундов.

А-ля «Что? Где? Когда?». Ведущий зачитывает вопрос и включает обратный отсчет. Если команда дает правильный ответ, ей начисляются баллы, неправильный дает шанс ответить другой команде.

Викторина по типу «Своей игры». Перед игроками табло с вопросами разных тематик и «веса». Если участник дает правильный ответ, зарабатывает баллы для команды и место для одного игрока в последнем раунде.

Заключительный раунд проходит как первый. Только команды играют не в полном составе. Начинают те игроки, для кого заработали места в предыдущем туре. Если команда отвечает правильно, к ним присоединяется один игрок. Побеждает тот, кто первым соберет за столом всю команду.

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

Админка

  • экземпляр игры с вопросами
  • возможность отмечать, кто ответил правильно
  • формировать состав игроков следующего раунда
  • начислять и списывать баллы
  • старт и переключение раундов

Публичная часть

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

Рейтинги обновляются в реальном времени

Павел Бондарович
Технический директор
Павел Бондарович

Для отрисовки интерфейса игры мы использовали Vue.js, он отлично подошел для отображения состояния игры в реальном времени. Панель управления игрой тоже работает в реальном времени на Vue.js.

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

Результаты

Интеллектуальные игры состоялись! Оба чемпионата прошли по расписанию, без неприятных сюрпризов и срывов. Заказчик потом признался, что был морально готов выводить на проектор баллы в Excel-табличке, так как понимал всю нереальность сроков. Но мы справились с этим вызовом.

2
месяца работы
207
зарегистрированных команд
1000+
участников и 70 публикаций в СМИ

Сервис — не одноразовая история, его можно использовать в будущем. После чемпионатов РосНоу уже устраивал внутренний турнир для своих студентов. Клиент получил долгоиграющий проект, а проект — бронзу Tagline Awards в номинации «Сайт мероприятия».

Спасибо за внимание

Никита Храмов
Аккаунт-менеджер
Никита Храмов

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

Давайте обсудим ваш проект

Заполняя данную форму, вы принимаете условия Соглашения об использовании сайта, и соглашаетесь с Правилами обработки и использования персональных данных

Другие наши кейсы

Скорый повар

Скорый повар

Сервис быстрой доставки обедов

Скорый повар
Spire

Spire

Разработали сервис

Spire
Ozon API

Ozon API

Интеграция с Ozon API

Ozon API
Faberlic

Faberlic

Спроектировали сервис для управления ценообразованием

Faberlic
ERP-система для торговых представителей

ERP-система для торговых представителей

ERP-система для торговых представителей
Строительные Таланты

Строительные Таланты

Разработали сервис для поиска работы и персонала в строительной и промышленной отраслях.

Строительные Таланты

Звоните, пишите

Давайте обсудим ваш проект

Никита Храмов
Аккаунт-менеджер
Никита Храмов

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

Заполняя данную форму, вы принимаете условия Соглашения об использовании сайта, и соглашаетесь с Правилами обработки и использования персональных данных
Блог