Интеллектуальные игры для школьниковСайт-сервис интеллектуальных игр для РосНОУ
Рассказываем про то, как в рекордные сроки делали сервис-викторину для Российского нового университета. Регистрация, демо-версия, онлайн-платформа для отборочных туров и админка с публичной частью для очных — обо всем читайте ниже.
Заказчик
Российский новый университет или просто РосНОУ — один из крупнейших частных вузов нашей страны. Он входит в сотню лучших российских вузов по версии рейтингового агентства «Эксперт РА» и в список 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 в номинации «Сайт мероприятия».
Свяжусь с вами в течение дня, чтобы уточнить детали проекта и сориентировать по стоимости разработки. После этого обсудим цели проекта, требования к нему и начнём работу.
Свяжусь с вами в течение дня, чтобы уточнить детали проекта и сориентировать по стоимости разработки. После этого обсудим цели проекта, требования к нему и начнём работу.