Русский
Русский
English
Статистика
Реклама

Браузерная игра

Как мы сделали детскую образовательную веб-игру для Банка России

14.07.2020 12:05:49 | Автор: admin

О проекте


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

Дети сталкиваются с серьёзными финансовыми угрозами не меньше взрослых. У многих школьников есть накопления, они пользуются банковскими картами и совершают покупки в интернете.

Но обычные учебные материалы слишком сложные и скучные, чтобы привлечь внимание и познакомить школьников с базовыми финансовыми терминами. Поэтому вместе с Центральным Банком мы создали яркую познавательную игру.

Посмотрите короткий тизер



О клиенте


Центральный Банк РФ главный банк первого уровня, который отвечает за эффективность финансовой системы страны. Центробанк выпускает деньги, регулирует финансовые организации и защищает права их клиентов.

Результат


Игра стала частью большого образовательного проекта Банка России. В неё играют дети и взрослые из разных городов России.

  • 23 000 человек сыграли в игру
  • 16 мин. среднее время в игре
  • 40 % играли более одного раза

Мы провели рекламную кампанию среди пользователей ВКонтакте.

  • 2 247 746 охват пользователей
  • 8 173 кликов на посты

image

Что мы сделали


Исследование


Нам нужно было погрузиться в опыт школьников. Поэтому мы провели интервью с детьми в возрасте от 10 до 17 лет и узнали про их опыт обращения с деньгами и предпочтения в играх. Выяснили, с чем они ассоциируют финансовые термины.

image

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

Концепция


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

Главные герои мальчик Ваня и его сестра Полина.

image

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

Иллюстрации


Одновременно с созданием сюжета мы начали отрисовку персонажей игрового мира: главных героев, помощников и злодеев.

Сначала нарисовали эскизы от руки и выбрали образы. После этого создали цветные макеты и приступили к прототипам игровых уровней.

image

image

image

image

Прототипы


Нам важно было сделать игру простой и при этом интересной. Поэтому мы провели первые тесты ещё до начала программирования. Собрали бумажные прототипы уровней и расставили на них препятствия и подсказки.
Your browser does not support HTML5 video.

Анимация


Чтобы оживить персонажей и игровой мир, мы использовали спрайтовую анимацию. Каждый спрайт это определенное движение, прыжок или шаг. Для плавной анимации главных героев нам потребовалось 30 спрайтов и ещё 40 для создания живого игрового мира.

Your browser does not support HTML5 video.


Истории героев


История Вани и Полины рассказывается в пяти роликах между игровыми уровнями. Мы сделали видео в стиле классических комиксов, с минималистичной анимацией и закадровым голосом рассказчика.



Посадочная страница


Игру разместили на сайте образовательного проекта ЦБ РФ. Для посадочной страницы мы разработали дизайн с игровыми иллюстрациями. Запустили рекламную кампанию во ВКонтакте, чтобы привлечь целевую аудиторию.

За этот проект мы получили награды


  • Tagline Awards 2019. Золото в номинации Лучшая мобильная игра;
  • Tagline Awards 2019. Бронза в номинации Лучшая кампания для финансовой/страховой организации;
  • Tagline Awards 2019. Бронза в номинации Лучшая музыка/саунд-дизайн (Craft)
  • Digital Communications AWARDS 2020. Лауреат в номинации Digital-медиа&Инструменты/Корпоративная digital-игра
Подробнее..

Особенности разработки игры для браузера

21.07.2020 18:12:25 | Автор: admin

Разбираемся вместе с нашим техлидом


Для образовательного проекта Банка России мы сделали яркую веб-игру Тайна потерянной копилки. Она привлекает внимание школьников к теме финансовой грамотности, знакомит с терминами, учит разумно распоряжаться деньгами. Игра понравилась не только детям, но и взрослым из разных городов России в неё сыграли более 30 000 человек.

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

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

Предположения об особенностях браузерной игры у нас были значительные ограничения на доступный и используемый размер оперативной памяти (в ТЗ, например, зафиксировано, что для мобильных устройств должно хватать 1 Гб оперативной памяти), баланс между качеством игровых ресурсов (изображения, текстуры, спрайты, звуки, видео) и скоростью их скачивания.

К этому добавились требования от клиента игра должна запускаться и работать во всех заявленных мобильных и десктопных браузерах (включая IE 11), на минимально возможных аппаратных характеристиках. Требования эти исходили из того, что игру предполагалось показывать при любой удобной возможности, на любом попавшемся под руку устройстве например, в школе.

Как выбирали движок


У нас уже был опыт игровой разработки, поэтому направления выбора движка обозначили сразу:

  • Игровой движок Phaser мы уже реализовывали на нём игру для Эльдорадо/Майкрософт.
  • Unity с возможностью экспорта игры в Web мы делали игровые проекты на этом движке.
  • Также рассматривали малоизвестные нам движки LibGDX, Godot, PlayCanvas.

Неизвестные варианты отвалились по вполне очевидной причине их надо было осваивать и изучать, что, некоторым образом, пугало, хоть и не казалось невозможным. Вариант с Unity отвалился потому, что ограничения движка и экспорта не позволяли, например, использовать аудио в IE 11. А ещё потому, что экспортируемый из Unity код Javascript получался очень большой, а IE 11 значительно более медленный в парсинге и исполнении кода, чем современные браузеры.

Таким образом, было решено взять свежую версию движка Phaser (на момент начала разработки это была версия Phaser 3.11). Выбрали этот движок ещё и потому, что вся логика и отрисовка программные, а значит, мы могли контролировать в коде абсолютно любой аспект будущей игры.

Как писали


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


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

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

image

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

Стек разработки был взят довольно типичный для подобного проекта webpack, webpack-dev-server, babel, babel/preset-typescript.

Какие трудности были


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

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

Было опробовано несколько теоретических и практических гипотез, из которых родилось финальное решение. Решение состоит в следующем:

  1. На экране загрузки игры, где идёт прогресс от 0 до 100 %, фактическая загрузка ресурсов заканчивается на 92 %.
  2. После этого за пределами экрана создаётся сцена, на которую помещаются тяжёлые анимации и немного физики.
  3. Далее в течение 5 секунд измеряется среднее время отрисовки одного кадра.
  4. После этого принимается решение о производительности устройства и прогресс доходит до 100 %.

image

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

То есть ты сталкиваешься с тормозами в игре, открываешь инструменты разработчика, чтобы найти причину, а игра тормозит ещё больше.

Игровые механики


Игровые механики сами по себе несложные, во многом вдохновлённые существующими играми.

Главный герой, например, это цельный спрайт анимации вместе с оружием. Такое решение было выбрано, чтобы избежать рассинхрона анимаций замаха и оружия. Поэтому проверка нанесения урона происходит так в момент определённых кадров анимации удара (кадра с третьего примерно) рассчитываем область пересечения, которая действует в течение ещё нескольких кадров анимации. Так нам удалось добиться реалистичности срабатывания оружия.


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

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


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

Все остальные механики собственно тем же и являются срабатывание приближения и пересечения персонажа и игровых объектов в определенные моменты времени и анимации.

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

Выводы и советы


Определитесь с жанром на самом раннем этапе.

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

Совет относитесь к разработке веб-игры как к реальной игре, а не как к очередному скрипту на странице. Тестируйте, профилируйте, не допускайте утечек памяти и повышенной нагрузки на процессор. Игроки и батареи их устройств будут довольны.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru