В прошлом году мы запустили на орбиту пикоспутник с самым настоящим сервером, и в честь этого сделали Telegram-игру «Спутник против мусора». Рекомендуем попробовать свои силы, если вдруг она прошла мимо вас. Мы уже рассказывали о том, как пришли к идее игры и каких персонажей придумали для неё, повторяться не будем. Здесь мы расскажем о разработке.
▍ Движок
Игра написана на движке Phaser, он входит в тройку самых популярных JS-движков для разработки двумерных игр. И не только их, его часто использут для создания графических веб-приложений. Unity, конечно, хорош, но он пока не адаптирован под веб. То есть он это умеет, но производительность получившихся приложений может оказаться низкой, с чем столкнулись некоторые пользователи нашей прошлой игры «Атомный Графъ». Phaser более низкоуровневый, даёт больше контроля над оптимизацией. К тому же игра у нас двухмерная, поэтому арсенал Unity был бы совсем избыточен.
▍ Графика
Все персонажи односпрайтовые, потому что анимации нет. Анимирована лишь поверхность Земли, проплывающая на фоне. Мы не стали вставлять трёхмерную модель или видео, чтобы с игрой справлялись даже слабые смартфоны. Вместо этого взяли прямоугольную текстуру земной поверхности, наложили маску и постепенно сдвигаем её в цикле, имитируя вращение планеты. И добавили визуальные эффекты, чтобы не было ощущения скучной плоскости.
▍ Звук
Многие из вас знают, что в играх и графических программах используют так называемые текстурные карты: это большие изображения, в которых тесно, вплотную друг к другу, размещены всевозможные текстуры. В комплекте идут файлы с координатами и названиями каждой текстуры в карте. Так гораздо удобнее, быстрее и экономичнее, чем подгружать десятки и сотни отдельных файлов с картинками.
В iOS и некоторые телефонах на Android очень ограниченная поддержка HTML5-аудио. Они поддерживают воспроизведение только одного файла за раз, а загрузка новых файлов требует вмешательства пользователя. Чтобы это обойти, мы воспользовались тем же методом, что и в случае с текстурами: в AudioSprite объединили все звуки в один файл, а во время игры проигрываем только какие-то конкретные его отрезки с помощью «координатного» JSON-файла. Причём в нашем случае каждый звук ещё и представлен в трёх форматах: mp3, mp4 и ogg, чтобы была совместимость с разными браузерами.
▍ Telegram
Игра использует API Telegram для получения информации о пользователе и для автоматического растягивания окна игры на весь экран: по умолчанию в мессенджере приложения открываются уменьшенным окошком, которые нужно потянуть за край, чтобы развернуть, а это неудобно.
▍ Защита от мошенников
Мы внедрили довольно простую, но эффективную систему античита. С помощью некоторых ухищрений мы рассчитывали по каждому игроку, играл ли он честно или накрутил себе баллы. Откровенничать не станем, сами понимаете, всё под грифом. Радует, что несмотря на простоту защиты, не нашлось никого, кто взломал бы её целиком. (Крики из зала: «Взломали, поэтому вы об этом не знаете» оставим на совести крикунов.) Нашлись несколько хитровыдрюченных, которые покопались в коде игры и попробовали накрутить себе результаты, но мы их выловили, выпороли и предали забвению.
▍ Пасхалка
Если вы ещё не играли, то не портите себе сюрприз, постарайтесь найти пасхалку самостоятельно.
Но если лень, то вот
Один из персонажей, которых вам нужно отстреливать спутником, — астрохомяк. Если успеть нажать на него пять раз подряд, в центре экрана откроется чёрная дыра, которая будет засасывать весь летящий мусор, а потом исчезнет. Это даёт игроку передышку.
▍ Победители
23 января мы подвели итоги игры и назвали имена лучших борцов с космическим мусором. Ими стали:
🥇1 место — TheProgish (2616 баллов)
Подарок — Яндекс станция Миди.
🥈2 место — peach_nv (2061 баллов)
Подарок — беспроводные наушники Baseus Bowie D05.
🥉3 место — LeXaNe (1808 баллов)
Подарок — внешний аккумулятор MagSafe Hoco Q10A, 10000 mAh.
Также каждый победитель получил по толстовке с личной подписью космонавта Михаила Корниенко.
Скидки, итоги розыгрышей и новости о спутнике RUVDS — в нашем Telegram-канале 🚀