Меню Рубрики

Как набирать очки в flappy bird

Февраль 2014 года надолго останется в памяти любителей мобильных технологий. Причина этого кроется не в скором анонсе пятого поколения смартфонов Galaxy S, и даже не в очередных празднованиях Дней всех влюбленных и защитника Отечества, нет. Именно в начале данного отрезка времени весь мир наблюдал и принимал активное участие в развитии феномена, известного под названием Flappy Bird. На пике популярности данному приложению удавалось приносить его создателю около 50 тысяч долларов в день. Неплохая сумма за игру с примитивной графикой и отсутствием сюжета, верно? И хотя разработчик уже удалил горе-птицу из-за пределов магазинов приложений, последняя еще не скоро покинет наши сердца и память. В чем же кроется секрет подобных игр? Давайте разбираться.

Прежде чем плавно перейти к перечню составляющих успеха, необходимо вспомнить, каким же образом вы узнали о данной игре. Лично меня, к примеру, откровенно заинтересовало огромное количество скриншотов с мало понятными подписями в виде чисел, которыми в свое время пестрела лента «Твиттера». Далее – дело за малым. Несколько кликов, прикладывание нужного пальца к сенсору Touch ID и все. Теперь иконка с пиксельной птицей красуется и на моем рабочем столе.
Конечно же, колоссальный успех того или иного приложения чаще всего становится следствием появления в нужном месте и в нужное время, однако таким китам, как Flappy Bird, Angry Birds и Fruit Ninja все же свойственны некоторые общие черты, о которых мы сейчас и поговорим.

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

Опыт показывает, что сфера разработки мобильных приложений – не совсем то место, где каждый раз необходимо придумывать велосипед. Успешный продукт в большинстве случаев краток, прост и быстротечен. История триумфа той же Angry Birds длится вот уже несколько лет, чего, кстати, нельзя сказать о более сложных Final Fantasy, Dead Trigger или Modern Combat.
Чем быстрее пользователь может насладиться игровым процессом, тем лучше.

Тенденция такова, что подавляющее большинство любителей игр для смартфонов тратят свои кровные на покупку лишь в том случае, если продукт успел получить огромное количество положительных отзывов, или же его разработчик славится успешными проектами в прошлом.
Именно поэтому большинство «вирусных» игр поначалу распространяется бесплатно. Помните первые версии Angry Birds или Fruit Ninja? Тогда встроенными покупками или чем-то в этом роде даже и не пахло.

Я не случайно отметил, что услышать о Flappy Bird мне пришлось в «Твиттере». Чтобы добиться признания игроков, разработчик должен позаботиться о возможности легко поделиться своими достижениями в социальных сетях.
Кстати, сам создатель игры Донг Нгуен за период популярности игры обзавелся 165 тысячами подписчиков. До этого количество его фолловеров было равно 350.

Последним по порядку, но не по значению, является фактор соперничества. Именно он, кстати, и заставлял меня вновь брать контроль над управлением птицы в очередной раз.
Впрочем, когда друг поделился результатом в 178 очков, всяческие отношения с Flappy Bird я разорвал. Как оказалось – не зря. Вскоре я увидел это.

Flappy Bird удалось стать явлением, описать которое можно лишь одним прилагательным – «уникальный». Подтверждением того является не только баснословная прибыль разработчика, но и огромное количество клонов, которыми сейчас полнятся магазины приложений.
А какой рекорд во Flappy Bird у вас? Не забудьте поделиться им в комментариях.

источник

Ненадолго ударимся в ностальгию: вспомните «Flappy Bird», сколько сил она у вас отняла, сколько свободного времени поглотила, сколько нервов свела на нет — а теперь помножьте всё это на десять и получите эффект, производимый «Swing Copters». В какой-то степени милая птичка сменилась на странного персонажа с пропеллером на голове, цель которого — взлететь на максимально возможную высоту, минуя препятствия. Поначалу выглядит, как перевёрнутая на 90 градусов «Flappy Bird», не так ли? Расслабьтесь. Всё намного хуже.

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

Это только на словах несложно звучит. В мире «Swing Copters» практически всё направлено на уничтожение протагониста, а вместе с ним изрядного количества нервных клеток у игрока. Свободное пространство для полёта настолько мало, что чтобы ничего не коснуться, необходимо иметь отточенную до предела реакцию и молниеносное тактическое мышление — то есть, быть сверхчеловеком. Обывателю такие штуки не по зубам. Но вот в чём опасность «Swing Copters»: после первой неудачи ты начинаешь пробовать снова, и снова, и снова… История повторяется.

По сравнению со «Swing Copters» игра «Flappy Bird» вам покажется детской казуалкой: если птичкой вы худо-бедно набирали десяток-другой очков, то тут даже одно заполучить — проблема. Полчаса с начала игры пройдёт ещё, пока вы с самим геймплеем попытаетесь разобраться. Скажем по правде, с момента выхода «Swing Copters» в App Store наша редакция провела бессонную ночь в бесплодных попытках доставить парня с пропеллером как можно выше, и мы до сих пор не уверены в адекватности и оправданности сего поступка.

Донг Нгуен утверждает, что в игре присутствует особая система поощрения — за набор определённого количества очков игроку выдаются медали, которые открывают новых играбельных персонажей. Увы, как ни силились, мы не смогли проверить правдивость его слов — жалкие три очка, полученные в результате многих часов игры, стали для нас непреодолимым потолком. Что уж говорить, если для успокоения своей расшатанной нервной системы после «Swing Copters» ты начинаешь играть во «Flappy Bird»? Парадоксально, но факт.

Порой возникают сомнения, насколько высокую должность в иерархии ада занимает Донг Нгуен — кто ещё был бы способен создать из нескольких пикселей такую хардкорную вещь, как «Swing Copters»? И ведь совершенно непонятно, в чём же секрет привыкания игрока — здесь же всё сведено к минимуму, включая графику! И тем не менее тем, кто уже установил игру на своё мобильное устройство, суждено провести за ней много-много незабываемых часов. Причём действительно сложно сказать, в хорошем или плохом смысле.

В последнее время всё чаще поговаривают об оружии массового поражения. Так вот, это не ядерная бомба, не слова журналистов с голубых экранов — это «Swing Copters». Мучеников, отдавших жизнь во благо народа, называют святыми. При гипотетическом существовании противоположной категории Нгуен бы с усмешкой взирал с ее вершины за создание такого продукта игростроя. Если вам дороги ваши нервные клетки и вы ещё имеете хоть какое-то представление о понятии «спокойная жизнь» — никогда не знакомьтесь с исчадием ада по имени «Swing Copters». Даже под прицелом.

Swinc Copters уже можно скачать бесплатно в App Store и Google Play.

источник

Неделя 30-ти строчных JS давно прошла, но воодушевлённый постами Разрабатываем Flappy Bird на Phaser (Часть I) и Как Минковский во Flappy Bird играл, я не смог удержаться не попробовать написать ASCII-версию игры «Flappy Bird» на JavaScript и уложиться при этом в 1024 символа.

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

Я опущу скучные подробности, которые вы и сами можете найти в вики или попробовав сыграть в оригинальную игру. Вкратце же вы управляете птичкой, летящей между препятствиями. Клавишей «вверх» можно слегка кратковременно подтолкнуть её выше и таким образом маневрировать.

Я не стремился к достаточной аутентичности, да и ограничения весьма жёсткие. Поэтому пошёл на максимальные жертвы и, методом проб и ошибок, подобрал более менее оптимальный размер поля (без масштабирования) — 10 строк по 30 символов в каждой:

Нолик — позиция игрока (я выбрал второй слева столбец), 123 внизу слева — набранные очки.

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

И вторая задача — сохранить одинаковую ширину препятствий. Четыре возможных случая (до первого ложного) выглядят так:

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

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

С этим немного сложнее. Я попробовал выдержать условия:

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

Наглядно это можно представить в таком виде:

Первый столбик — крайние биты поля, далее идут проценты вероятностей появления нового препятствия. Восемь — максимальный интервал, который и оптимален в игре, и удобен для расчётов: 100 можно поделить на 8 и получить осязаемые значения. Крайний справа столбец — величина побитового сдвига влево той маски, которой мы будем искать и вычислять длину текущего промежутка между препятствиями.
Дело за малым: двигать побитово единицу-маску влево, пока не встретим ещё одну единицу. В этот момент, зная текущий промежуток и вероятность, пытаемся создать новое препятствие:

Я умножил всё на 10 и таким образом избавился от нецелых значений. Кроме 100%: от тысячи (100%*10) я отнял единицу, потому что единица — это ж целый лишний байт приложения! А, как мы помним, байты надо экономить.
Добавление самих препятствий задача не сложная, но для исключения создания непроходимых участков, я добавил условие: каждое следующее препятствие должно быть на единицу больше/меньше предыдущего или равно ему, и при этом не быть меньше двух или больше пяти. Плюс выдерживаем промежуток для полёта — три строчки. Получаем:

Тут никаких ухищрений. Просто бежим, как старый ламповый телевизор, по строкам, а в них по столбцам и накапливаем клетки поля:

Отдельно проверяем и рисуем игрока, а также верхнюю и нижнюю границу самого поля.

Игровой мир готов и работает. Осталось оживить персонажа. Я упростил это по максимуму. Никаких полётов по параболе, гравитации, ускорений и инерции (разве что самую малость). Пусть клавиша «вверх» задаёт импульс — запас движения вверх. И пусть каждая итерация анимации уменьшает этот импульс, если он ещё не достиг нуля. На тестах это выглядело совсем убого и птичка двигалась по явно треугольной траектории. Поэтому я немного увеличил начальный импульс и добавил движение «по инерции», если импульс равен единице:

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

Прогоняем JS через любой оптимизатор а-ля UglifyJS после чего просто переносим его в:

источник

Нгуен Ха Донг о том, почему современным играм не хватает простоты

Каждую неделю Look At Me рассказывает об одном заметном приложении, которое меняет наше представление о мобильных интерфейсах, и разбирается с тем, что стоит за иконкой в App Store — идеями, технологиями, разработчиками. В новом выпуске — разговор с Нгуеном Ха Донгом, создателем простой, но феноменально популярной игры.

Управлять Flappy Bird нужно с помощью только одной функции — тапа по экрану. Один тап заставляет птичку на экране подпрыгнуть вверх. Задача пользователя — управлять ею так, чтобы умело уворачиваться от надвигающихся препятствий.

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

Flappy Bird имеет нарочито
примитивный дизайн.

В этой игре нет мультиплеера. Зато есть глобальный рейтинг, который позволит понять, как далеко продвинулся пользователь в сравнении с другими игроками.

Игровое приложение Flappy Bird от вьетнамского разработчика Нгуена Ха Донга создано по образу и подобию развлечений, доступных приставке NES. Графика и звуковое сопровождение отсылают нас в мир «Тетриса» и танчиков, а декорации удивительным образом похожи на те, что всем знакомы по Super Mario.

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

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

«Я делаю игры по ночам. Это не полный рабочий день, конечно, Но такой у меня график.

Моя задача состоит в том, чтобы взять самую простую идею и пытаться импровизировать с тем, чтобы переосмыслить её. Геймплей в Flappy Bird — это классическая игра, которая сочетает в себе инновации и традиционализм.

Для того, чтобы написать код такой простой игры, как Flappy Bird, не нужно тратить много времени. Куда больше времени уходит на то, чтобы придумать, что ты хочешь сделать, что «зацепит» пользователей. Из-за своей простоты Flappy Bird так и затягивает.

Я хотел придумать игру, в которой люди соревновались бы друг с другом без мультиплеера. Поэтому у Flappy Bird такая продвинутая система рейтингов. Но не это главное. Чтобы геймерам было интересно состязаться друг с другом, нужно придумать игру, в которой никогда не будет нереально сложных, безвыходных ситуаций. Поэтому здесь нет уровней сложности.

В целом из App Store и Google Play это приложение скачали уже 50 миллионов раз.

Невозможное: игрок зарабатывает платиновую медаль

Мне кажется, что эта игра получилась такой популярной из-за того, что она позволяет людям соревноваться друг с другом. Люди в одной комнате могут начать мгновенное соревнование друг с другом в любой момент. Второй «секрет» успеха — в сложности. С одной стороны, освоить базовый навык можно довольно быстро. Но, чтобы набрать много очков, нужно действительно хорошо постараться.

Я не собираюсь каким-то образом развивать Flappy Bird. Любая новая функция в ней может разрушить геймплей.

Я до сих пор делаю игры. И в ближайшее время появится ещё одна».

источник

Я не думаю, что я играл в игру, которая более расстраивает, чем Flappy Bird, но, как ни странно, эта маленькая деталь не мешает мне играть ее снова и снова, пока я не покраснею от гнева и не брошу свое устройство в ближайшую стену. Я здесь, чтобы поделиться с вами набором Flappy Bird советы и рекомендации это поможет вам получить лучший результат, но самое главное, сохранить ваш iPhone или iPad от побочных эффектов этой игры. Потому что в в конце концов, это просто игра, которая должна быть невозможной и безумно сложной – той, которую вы не можете выиграть.

Читайте также:  Раствор для очков от запотевания

Итак, давайте проверим некоторые очень простые и просто Flappy Bird советы и рекомендации, которые вы всегда должны следовать и иметь в виду при игре (есть также Flappy Bird хаки это поможет вам получить более высокие баллы, но тогда вся забава/гнев, исходящий из игры, исчезает).

1. Расслабься, расслабься, расслабься
9 из 10 попыток, я даже не получаю до 10 баллов. Вероятно, половина моих попыток заканчивается страданием, близким к 3-4 очкам. Это, очевидно, может свести вас с ума. Позвольте мне перефразировать это. Это сведет тебя с ума. Чем больше вы злитесь, тем хуже вы будете выступать и тем больше расстроитесь. Так что постарайтесь расслабиться. Сделайте глубокий вдох, сосчитайте до пяти и сделайте еще один вдох. Через две секунды вы снова запустите игру. Расслабьтесь, мы все делаем!

2. Делайте перерывы
Я не думаю, что вы можете оставаться в здравом уме, если вы играете в эту игру для более 10 минут подряд. Сделайте перерыв, расслабьтесь (снова) и только вернуться к Flappy Bird когда вы совершенно свежи. Если вы сердитесь и устали, это заклинание disasТер – и не только в игре.

3. Упражнение двойные краны
Быстрые пальцы и двойные краны – вот ключ к получению очков как можно выше, поэтому быстро и аккуратно коснитесь экрана для большего контроля.

4. Практика, практика, практика
Когда вы уже умеете расслабляться во время игры и вы уже делаете регулярные перерывы, подходите Flappy Bird как профессиональный геймер: считайте это работой, где вы должны практиковаться и терпеть неудачу и пытаться снова, пока ваши пальцы не заболят. Только практикуя вы научитесь предвидеть скорость падения вашей птицы и как и когда нажать.

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

6. Поймите, что это невозможная игра
Действительно, эта игра не предназначена для победы-это просто безумно хорошо сделанная невозможная игра. Там нет финиша line, там нет «вы выиграли» — это бесконечный бегун, который проверяет ваш ум больше, чем что-либо еще.

7. * Новый * мастер падения
После нескольких часов конечно, у меня есть несколько новых советов. Очевидно, что самое главное, что вы должны сделать, это освоить падение. Другими словами, научитесь нажимать, когда вы низко, чтобы получить точную высоту, которую вам нужно просто выскоблить через отверстие. Если вы паникуете и нажимаете слишком рано, вы попадете в верхнюю трубу, и это будет игра для вас. Так что научитесь позволять птице упасть и ударить по экрану ровно за миллисекунду до того, как она ударится о нижнюю трубу – таким образом, вы пройдете через все трубы, гарантировано!

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

Так что, да, там не так много, чтобы сказать о безумно популярной Flappy Bird — это не совсем игра мастерства, но один из терпения. Так что если у вас есть это, идти на это! И дайте нам знать, если вам удастся поразить 50 очков! Также, если у вас есть другие советы, чтобы поделиться, советы, которые помогут fellow игроки, дайте нам знать тоже!

[UPDATE]: если вы не можете получить достаточно Flappy Bird, почему бы не проверить наш список Игры, Как Flappy Bird? Может быть, вы найдете лучшую игру!

источник

В течение всего нескольких недель мобильное приложение Flappy Bird — простенькая игрушка от Донга Нгуена (Dong Nguyen), вьетнамского дизайнера и разработчика в одном лице — стало известным на весь мир. Это действительно странная история успеха.

Как всё начиналось

Первый намёк на появление этой игры появился в ноябре 2012 года: Нгуен выложил в своём Твиттере картинку из игры, над которой работал:

Слева можно увидеть персонажа, очень смахивающего на главного героя Flappy Bird.

Через полгода, в апреле 2013, Нгуен показал первую заставку сделанной им под iOS новой игры с графикой в духе игр на Nintendo. По словам автора, создание игрушки заняло всего-то пару дней.

Назвал он её «Flap Flap», но вот беда: в App Store игрушка с таким именем уже была. Благодаря этому факту появилось новое название — «Flappy Bird». Таким образом, 24 мая 2013 года игра дебютировала в App Store. Нгуен поделился в Твиттере прямой ссылкой на игру, создал для игры хэштэг #flapflap и… исчез.

Затишье перед бурей

С 25 мая по 31 октября об игре написали всего 13 отзывов. Это, конечно, не показатель того, сколько раз игра была скачана, но даёт представление об уровне её популярности. В сентябре 2013 Нгуен выпустил первое обновление для Flappy Bird, в котором были исправлены некоторые баги и добавлена новая иконка для iOS 7.

Следующие 6 недель игра таилась во мраке безызвестности. А потом что-то произошло, щёлкнуло. 29 октября 2013 игра попала в категорию «Family» на 1469 позицию. Через несколько дней о ней стали появляться упоминания в Твиттере. И понеслось.

Набирая обороты

По данным на 3 декабря 2013, Flappy Bird официально попала в общий чарт App Store в США, заняв 1308 место. В «Family» она доросла до 74 позиции, а среди самых популярных игр США стала 395-ой. Популярность продолжала расти дальше. 11 декабря Нгуен снова объявился в Твиттере, ответив пользователю, спросившему про Android-версию приложения. К 13 декабря игра ворвалась в Топ-250 бесплатных приложений США, Топ-80 игр США и оказалась на 14 месте в «Family». Пользователи Твиттера заполонили сеть сообщениями, по большей части картинки и мемы, выражающие их разочарование (если уместить эмоции в одну фразу, получится «Я ненавижу эту игру, но не могу остановиться»).

Вот он, успех

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

Естественно, другие разработчики игр стали задавать вопросы Нгуену, что же он такое сделал, чтобы Flappy Bird попала в Топ-10, на что он ответил, что и не делал ничего… А 17 января приложение стало первым среди бесплатных в американском App Store. Видимо, «яблочных» пользователей стало недостаточно, и 22 января Нгуен сообщил, что Android-версия появилась в Google Play.

СМИ наконец-то обратили внимание на игру, удивляясь уровню её внезапной популярности: статьи о ней появились в таких изданиях, как The Huffington Post, The Telegraph и Mashable. К 1 февраля Flappy Bird стала лидером среди бесплатных игр в App Store в 53 странах. А 6 февраля компания Apple даже запостила твит об успехе игры на своём официальном аккаунте.

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

Цена успеха

Вопросы по воду того, как Flappy Bird достигла такого головокружительного успеха, стала еще более частыми, когда выяснилось, что Нгуен зарабатывает по 50 тысяч долларов в день от рекламы игры. Первыми эту цифру узнали The Verge, и эта информация настроила часть людей против игры. Поначалу Нгуен, как над казалось, реагировал с юмором. Но позже выяснилось, что внимание, которое Нгуен получил в результате успеха Flappy Bird, изменило его жизнь в худшую сторону. Разработчик рассказал, что получал твиты, полные ненависти, что его жизни угрожали.

Вот и сказочке конец

3 февраля Нгуен загрузил обновление Flappy Bird для iOS. Его одобрили 8 февраля. Обновление включило в себя графические изменения, и в целом игра стала проще. Так как обновление вышло, когда игра находилась на пике популярности, многие юзеры отреагировали негативно. Спустя несколько часов после выхода обновления Нгуен появился с унылым настроением в Твиттере: «Я считаю Flappy Bird своим успехом. Но она разрушила мою простую жизнь. Так что теперь я её ненавижу». А ещё позже разработчик огорошил всех новостью: Flappy Bird будет удалена.

И действительно удивлённые пользователи не нашли её ни в App Store, ни в Google Play. Вместо неё повалили многочисленные клоны, а самые догадливые пользователи стали продавать свои телефоны с установленной игрой за бешеные деньги через eBay. Нгуен пропал.

Прошёл примерно месяц с тех пор, как Flappy Bird попала в десятку App Store. По меньшей мере игру загрузили 50 миллионов раз и упоминание о ней появилось в 16 миллионах твитов.

Это прекрасный пример того, как обычное приложение может распространиться со скоростью вируса благодаря соцсетям и «сарафанному радио». Более того, Flappy Bird удалась по той причине, что была сделана не по готовому шаблону. Всякий, кто пытается создать следующую Flappy Bird, скорее всего, потерпит неудачу — эта игра пробилась благодаря прекрасному миксу из обстоятельств, удачи и вирусности. Так что вполне логично, что приложение ушло с такой же тайной, как и появилось.

источник

Вряд ли найдется читатель iphones.ru, не слышавший об игре Flappy Bird, созданной вьетнамцем Dong Nguen’ом. Около полутора месяцев назад эта игра буквально взорвала интернет, набрав свыше 30.000.000 игроков за месяц, что является поразительным результатом даже для бесплатного приложения. А новость о том, что разработчик собирается убрать ее из App Store и Google Play, еще больше взбудоражила интернет-сообщество. И 8-го февраля Nguen действительно удалил свое детище. Но что из этого вышло? Несчастные, не успевшие установить на свои девайсы оригинальную игру, по запросу “flappy bird” в App Store стали находить еще немногочисленную плеяду ее клонов. В топ 3 входили, в частности, Fly Birdie – The Adventure of flappy tiny bird и Smarcle flyer.

Если у вас при виде скриншотов не пошла кровь из глаз, то я гарантирую, что при запуске Fly Birdie вы подумаете: “Эта игра на протяжении недели была #1 в американском App Store? Разбудите меня!” По крайней мере, именно такая мысль посетила меня, когда я в очередной раз заглянул в топ бесплатных приложений Америки. Сообщество нуждалось в игре “проведи птичку сквозь трубы” и его не отпугивала даже бесконечная убогость клонов. Посовещавшись, мы решили создать Tappinator – первую качественную игру по мотивам Flappy Bird.

Мы – это пятеро друзей, выпускников МГУ, с недавнего времени занимающихся разработкой для iOS. Так как готовых продуктов на нашем счету не было, нам захотелось проверить, сможем ли мы быстро создать законченную игру, по качеству не уступающую Flappy Bird. А заодно и засветиться в топах, получив аудиторию для разрабатываемых нами “серьезных” игр.

Качество любой подобной Flappy Bird игры лежит на 3-х китах. Это играбельность, графика и пряник. При создании Tappinator’а мы сконцентрировали свое внимание именно на этих аспектах. Давайте проанализируем каждый из них в отдельности.

Почему Flappy Bird играбельна? Она хардкорна, но чем дольше играешь в нее, тем дальше летаешь. Да, в первый день тяжело дойти даже до 10, но все же ваш рекорд будет постоянно расти, а через 3-4 дня вы стабильно будете набивать за 50. Каждый полет длится не дольше нескольких минут, нет заведомо проигрышных ситуаций. На фоне Flappy Bird 90% клонов неиграбельны. В каких-то из них вы сразу будете летать по 20 и более минут, набирая несколько сотен очков. В других, наоборот, вы и после двух дней зависания в игре не пролетите и 10 труб. В некоторых клонах встречаются препятствия, преодолеть которые физически невозможно (например, случается так, что перепад высот у соседних проемов слишком большой).

Людям нравится играть в Flappy Bird! Они привыкли к вьетнамской птичке, ее неуклюжести, ширине проемов в препятствиях, расстоянию между ними. Зачем раздражать их переменами в этих параметрах? Незачем, решили мы. Поэтому в Tappinator’е эти величины в точности такие же, как и в оригинальной игре. Правда, для начала пришлось их измерить, что и было сделано с помощью 2-х айфонов. Flappy Bird запускалась на iphone 4s, над которым лежал iphone 5s. С последнего велась съемка видео с частотой 120 кадров в секунду, которое позже покадрово анализировалось на макбуке. В процессе всего этого безобразия обнаружилось несколько забавных мелочей. Например, во время падения траектория птички меняется с параболической на прямую =)

Однако, один вид препятствий – это скучно, не так ли? Поэтому решено было немного разнообразить геймплей и добавить широкие наклонные проемы. С ними игра стала интересней и не потеряла в сложности. В прототип уже можно было играть, а при врезаниях в трубы возникало желание разбить телефон, как и у многих пользователей Flappy Bird. Это было хорошим знаком! Но визуальная составляющая пока особо не радовала.

Надобно сказать, что графика для нашей команды – это больная тема. На протяжении нескольких месяцев мы пытались найти художника для нашей основной игры, и даже поработали с несколькими… Но отношения не сложились. Так что арт для Tappinator’а нам пришлось создавать самим, благо, не так много в игре анимаций =)

Для начала нужен был какой-нибудь сюжет. Тут долго не размышляли – решили, что раз Flappy Bird исчезла из магазинов, то в мире маленькой птички случился ядерный апокалипсис. Трубы заржавели, земля разрушилась… Несчастное пернатое пытается спастись и, надев противогаз, отважно хлопает крыльями.

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

Предположим, вы набрали 30 очков в Flappy Bird. На экране появляется менюшка, и вам вручают золотую медаль. Круто, да? Через некоторое время вы набираете, скажем, 55. И вас поощряют медалькой из платины. Поигравшись в игру дня 3, вы стали стабильно летать за 50. И каждый раз вам дают одну и ту же медаль. Вскоре вы уже не замечаете награду, единственная ваша цель – побить свой (или чужой) рекорд. В общем, пряник (система поощрения пользователя) в игре Flappy Bird сыроват.

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

А что, если бы полученные во Flappy Bird медали накапливались? В текущих реалиях, типичный разговор 2-х игроков выглядит так:

– (игрок 1) Какой у тебя рекорд во Flappy Bird?

С накопительной системой диалог мог бы получить такое продолжение:

– (игрок 2) А сколько у тебя платиновых?

– (игрок 2) Ну а у меня 10! Тебе повезло, а я стабилен like a boss)

Решив, что эта идея крутая, мы начали подыскивать ей форму. Знаете, что такое ядерный реактор? А как он устроен? Это такая круглая бандура с дырами. И в эти самые дыры вставляются топливные стержни, выполненные из радиоактивных материалов. Чем больше стержней – тем выше мощность реактора.

Вы, наверное, уже поняли, к чему я клоню. Да, мы награждаем игрока радиоактивными стержнями, которыми он заполняет свой собственный ядерный реактор. Для достижения 100% мощности вам необходимо использовать исключительно торий в качестве топлива, а для этого придется потрудиться. Это вам не рекорд поставить! =)

Наконец, по прошествии 10 дней с начала разработки, Tappinator был отправлен на ревью в App Store. В статусе waiting for review игра провела мучительные 9 дней, после чего статус изменился сначала на in review, а чуть позже на… rejected. В комментарии от review team было сказано следующее: мол, вы, ребята, в своем приложении используете advertisement ID, но при этом не показываете рекламу. Так нельзя, не пропускаем вас.

Читайте также:  Трафареты для губ и очков на палочке

Мы были в легком шоке. Дело в том, что реклама-то в нашем приложении есть! Баннер показывается в верхней части экрана каждый раз, когда ваша птичка падает замертво. Получается, что цензоры не удосужились даже врезаться в нашей игре? Чушь какая-то.

В ту же ночь цензорам было отправлено краткое письмо-апелляция с разъяснением по поводу рекламы. Буквально через полчаса Tappinator снова оказался на review, а к утру… К утру нас снова ждало разочарование – очередной reject с той же формулировкой.

На самом деле, с рекламой есть один нюанс. Баннер не выскакивает, если девайс не подключен к интернету. Мы опять отправили в Apple письмо, в котором не только подробно объяснили, когда показывается реклама, но и попросили включить интернет и перезапустить игру.

И – о чудо! – следующей ночью Tappinator получил статус ready for sale.

Итак, наша игра попала в App Store. Дальше дело было за малым – вывести ее в топы. Этот процесс мы видели примерно так:

1) Люди ищут приложения по запросу “flappy bird”.

2) Среди сотен приложений из поисковой выдачи видят Tappinator (игра новая, значит, в первые дни она должна быть наверху кучи)

3) Понимают, что вот он – достойный преемник оригинальной игры.

4) Оставляют восторженные отзывы, бегут рассказывать друзьям.

6) PROFIT! Мы топ 1 всия эппстора.

Но Apple решила внести коррективы в наши планы.

Tappinator не искалcя по запросу “flappy bird”. Поначалу мы решили, что это временные проблемы, связанные с индексацией. На второй день, когда ситуация не изменилась, догадались заглянуть в список ключевых слов, по которым наша игра должна выдаваться в поиске. Наихудшие опасения подтвердились: в процессе ревью из списка ключевых слов были молча (!) удалены “flappy” и “bird”.

Пришлось выпускать апдейт и менять название на более “лаконичное”. Еще 7 дней в статусе waiting for review, и рядом с Tappinator появилась приписка – nuclear bird with flappy wings. Но время было упущено, наша игра лишилась статуса новой и стремительными темпами теряла позиции.

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

Сейчас нашу игру скачивают примерно 50 пользователей в день (не смейтесь, прошу!). Конечно, можно было бы забить и двигаться дальше… Но у нас появился спортивный интерес – а сможем ли мы исправить положение и, вопреки неудачному старту, попасть-таки в заветные топы?

Как же напомнить людям о существовании Tappinator’а? В числе прочего, сейчас мы пишем статью на habrahabr.ru, где пытаемся ответить на следующий вопрос: в каких подобных Flappy Bird играх можно лететь бесконечно долго, а в каких нет? Например, у нас есть доказательство того, что во Flappy Bird при правильной игре вы сможете дотапать хоть до миллиона очков, то есть никогда не попадете в заведомо проигрышную ситуацию. А на примере нашей игры можно будет увидеть, как остроумная птичка-бот ловко лавирует между препятствиями, опираясь на хитрый математический алгоритм (кстати, эпическое видео на эту тему уже готово).

Пожалуй, на этой мажорной ноте я окончу свой рассказ. Надеюсь, читать вам его было не менее интересно, чем мне – писать =) Знаете, что самое главное во всей этой петрушке с Tappinator’ом? Что эта игра нравится нам, разработчикам. Есть ощущение, что мы создали нечто хоть и очень простое, хоть и не очень оригинальное, но достойное. И это приятно, друзья =) До новых встреч!

(Нет голосов)

источник

Всем известна эта игра. Вроде, ничего особенного просто птичка прыгает через трубы. Но многие подсаживались и старались поставить свои рекорды. По слухам она принесла своему создателю 50.000 баксов за одну только баннерную рекламу. В App Store и Google Play быстро появилось множество клонов Flappy Bird. Если вам интересно как можно создать Flappy Bird на Fusion 2.5, то добро пожаловать!

Движение птички сделаны с помощью физики — настройки движка не менялись .

За все движения птички отвечает физический объект птички с красным глазом — это Physics — Bouncing Ball . Этот объект не видим.


В настройках указана высокая гравитация для того, что бы птичка резко прыгала и быстро опускалась.
За внешний вид птички отвечает обычный Static, который привязан к физической птичке

Думаю, не для кого не секрет, что в игре не птичка летит, а трубы движутся, так что координата X птички установлена фиксировано в значение 70.


По клику ЛКМ (либо tap-нажатие на мобильных устройствах) физическая птичка получает линейное ускорение linear velocity с силой 30, в направлении 90 градусов (вверх).

В добавок, птичка ещё получает импульс с силой 20 вверх, что бы придать резкость её прыжку.

Примечание. Высота прыжка отличается в Windows и в Android. В Window птичка прыгает чуть выше, чем надо, а в Androin в самый раз. Это зависит от среды выполнения движка Box2D. Я делал настройки под Android.

Направление птички изначально установлено на две точки выше от горизонтального.

Птичка должна наклонятся вниз когда падает, но с какого момента это должно происходить? Я определил этот момент как позицию на 15 пикселей ниже, чем начальная точка прыжка.

Точка из которой произошел прыжок

Позиция из которой происходит прыжок записывается как текущая координата Y в переменную ПозицияНаклона. Когда птичка падает ниже этой точки она начинает наклонятся вниз.

Чем больше значение Y тем ниже объект

Наклон происходит постепенно, проходя каждое направление от верхнего до нижнего. Что бы это событие сработало нужно отметить галочку Automatic Rotations в настройках птички.

Самая первая труба появляется с чуть большим интервалом времени (спустя 2 секунды после начала игры), чем все остальные трубы следующие за ней. flag 0 предотвращает повторное появление первой трубы. За тем включается flag 1, который вызывает цепочку следующих труб.

С помощью флагов я управляют последовательностью появления труб. В моей Flappy Bird используется три трубы. Они появляются друг за другом с одинаковым интервалом времени. Каждые 1.45 секунды появляется новая труба и движется со скоростью 15 справа налево, для этого я использовал тип движения Bouncing ball.

Время появления и скорость движения трубы выявлены в ходе долгих экспериментов )))

Каждая труба появляется справа за сценой в позиции X=315, а позиция Y определяется с помощью генератора случайных чисел — Random (110, 320), что бы просвет в трубе появлялся на разной высоте.

Я не использовал creat object, а сделал три трубы, потому что при создании каждой новой трубы на Android устройстве игра притормаживала. Копая этот вопрос, я выяснил, что такая проблема была не у меня одного. Мне кажется, что это из-за того, что труба довольно большой объект. В общем, от creat object пришлось отказаться и создать логику с тремя трубами.

Очки должны начисляться в тот момент когда птичка пролетает трубу.

Довольно интересный момент — событие столкновения для обычных объектов срабатывает, только когда одна «картинка» сталкивается с другой, но столкновение физических объектов срабатывает даже когда физический объект пересекает прозрачную часть другого объекта!

Из этого следует логика — когда физическая птичка сталкивается с трубой, то присваиваем единицу к переменной трубы ПролетелТрубу. За тем. если птичка перелетает дальше координаты X этой трубы (середины трубы), то прибавляем одно очко и ПролетелТруб снова обнуляется.

Если не использовать ПролетелТрубу, то очки будут прибавляться когда птичка просто врежется в трубу

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

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

Включенный flag 0 нужен, что бы оставить возможность вылететь за экран пока не появятся трубы.

Когда включается группа событий Ударился

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

Только анимация Disappearing — после неё объект удаляется

Когда птичка падает на пол и красная вспышка уже исчезла:

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

GameOver появляется спустя 300 мс с момента падения птички на пол. Обязательно нужно проверять, что ЗначениеТаймера неравно нулю, а то GameOver будет появляться до того как птица достигнет пола. Доска рекордов появляется спустя 800 мс с момента падения птички на пол.

На доску рекордов подгружается лучший результат из сохраненного значения в объекте ini


Счетчик результата начисляется по 1 каждые 2 мс, пока не станет равен текущему результату (значению счетчика очков). И если этот результат выше предыдущего рекорда, то записываем его в ini как лучший. И делаем видимой надпись new, которая изначально установлена как невидимая.

Если нужна дополнительная информация по объекту ini, она здесь

  • За 10 очков — бронзовая
  • За 20 очков — серебряная
  • За 30 очков — золотая
  • За 40 и более очков — платиновая

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

Далее создается искорка блика в случайном месте на медальке.

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

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

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

В начале игрок видит заставку, а птичка немного двигается вверх и вниз

У физической птички два типа движения. В начале используется движение под названием Stay — это тип движения Path

После того как игрок нажимает на экран, тип движение птички меняется на Phisics — Buncing Ball под названием Flap, а заставка растворяется.

Для Android нельзя использовать Transitions, так что растворение сделано простой анимацией Disappearing.

За тем данное событие деактивируется и активируется группа событий Игра, которая описана выше.

В начале игры, когда мы видим заставку птичка не падает, по этому тип движение — Stay
Черный квадрат — объект для переменных:

  • ВидПтички — случайно определяет один из трех цветов птички
  • ЗаднийФон — фон превратиться в ночной, если эта переменная выдаст значение 2

Так же при старте игры сразу подключаем файл ini для сохранения рекорда.

Размер экрана 288×511 на моем телефоне отображается как надо.

Выключены верхняя шапка и меню.

В настройках Android установлена ориентация — портрет (только вертикально).

Думаю, получилось довольно похоже на оригинал.

Поставь 5 звезд, если понравился мой пост, поделись ссылкой в соц.сети и спасибо за подписку!

Здравствуйте, помогите пожалуйста, когда я пытаюсь в проекте mfa запустить фрейм (или саму аппликацию) то у меня пишет ошибка C:\key\save.ini contains an incorrect path

Подскажите пожалуйста можно ли аналогичным методом сделать аналог flappy bird со своим персонажем и фоном? И можно ли выгружать приложения созданые в Clickteam Fusion 2.5 в Google play и Appstore?

Да, конечно, Вы можете заменить спрайты и выложить приложение в Google play и Appstore.

Пытаюсь распаковать mfa в ubuntu, пишет что архив только на чтении.
Можешь перезалить файлик с правильными правами

Добрый день. У меня возникла проблема. я создал игру и на ПК она прекрасно работает, но когда я делаю апк фаил и запускаю его на своем телефоне, происходит следующее:
Первый запуск работает стабильно, но после того как врезаюсь и начинаю игру сначала, 1 труба появляется несколько раз из-за чего в трубу можно только врезаться.

Скиньте мне ваш файл .mfa в личку в ВК, я найду в чём проблема.

Добрый день. хотел бы узнать как создать апк фаил. Просто у меня выдает ошибку:
Buildfile: C:\Users\1C64

1\AppData\Local\Temp\And437E.tmp\build.xml:84: Cannot find C:\Users\. \Music\tools\ant\build.xml imported from C:\Users\1C64

Вы читали эту статью gamesquest.ru/android-key-store-tool/ ?

Спасибо за помощь

Physics — Rope and Chain Object создает реалистичную веревку в физическом…

The Physics — Ground object позволяет определить…

источник

В тот момент, когда Нгуен Донг (Nguyen Dong), автор скандально известной аркады Flappy Bird, публиковал игру в AppStore и Google Plus, он и не предполагал, что его ждет. Вряд ли кто-либо хочет так прославиться. В этой статье мы попробовали разобраться, в чем же причина такой популярности игры и могло ли все быть по-другому.

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

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

Больших изменений в игровой процесс с момента выхода игры в начале 2013 года не производилось. У птицы как не было 7 жизней, так и не появилось. Донг даже не утруждал себя добавлением игровых уровней и системы сохранений. В результате игроку оставалось бесконечно пролетать над торчащими зелеными трубами, управляя «танком», пикирующим на скорости истребителя.

При удачном стечении обстоятельств игрок мог пройти десяток-два таких труб. Именно это и можно назвать ключом успеха Flappy Bird. Из-за сложности игрок постоянно проигрывает и накапливает негативные эмоции, а когда он выигрывает или просто проходит десяток-другой труб, его охватывает дикая, неописуемая радость от того, что наконец-то он добился хоть какого-то результата. Именно на эти эмоциональные всплески и «подсаживаются» игроки в Flappy Bird.

Чем больше проигрываешь, тем больше радость от выигрыша, однако когда игра совсем «не идет», человек начинает злиться на нее, его все раздражает, что-то ему постоянно мешает и, в конце концов, он ломает свой телефон:

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

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

И тут же столкнулся с новой проблемой. В его «Твиттере» были обнаружены нешуточные угрозы. Ему угрожали убийством, если он не вернёт игру обратно в магазин, советовали пойти и убить себя лично и слали в его адрес прочие проклятия и ругательства.

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

На днях Нгуен Донг дал интервью журналу Forbes, в котором объяснил причину удаления игры: «Flappy Bird создавалась в качестве игры на пару минут, когда вы хотите расслабиться. Но вместо этого она стала вызывать у людей привыкание, превратилась в настоящую проблему. И лучшим её решением стало удаление Flappy Bird. Навсегда».

Читайте также:  Оправа для очков каталог очкарик

По его словам, он попросту устал от этой игры и свалившейся на него популярности. Донг захотел вернуться к своей прежней, спокойной и размеренной жизни.

А что до Flappy Bird, то это действительно одна из самых худших игр за последнее время. Хорошо, что из-за нее никто не умер. пока-что. А то наши депутаты запретили бы игры и на Android.

источник

Хотите верьте, хотите проверьте, я играл в Flappy Bird ещё пять лет назад. Только вместо птички был космический корабль, вместо зелёных труб неземного вида – пещера, но принцип управления тот же и аркадный дух сохранён. Игрушка называлась Pixel Cave, написана моим братом (сегодня – автор Sunvox, Virtual ANS и др.) и попала в Apple App Store в 2009 году. Разумеется, я вспомнил про неё немедленно, как только услышал о Flappy: стало интересно, каких успехов она добилась за это время. Ведь могла принести миллионы!

Так вот: увы, никаких. Pixel Cave так и лежит себе незаметненько в тёмном углу апп-стора, не набрав даже достаточного количества оценок, чтобы вывести среднюю. А из вопроса «Почему?» родилась сегодняшняя колонка.

Вы должны были слышать о Flappy Bird, даже если не успели в неё поиграть. Её написал никому не известный вьетнамец Нгуен Ха Донг, и за каких-то два месяца она стала самым ярким парадоксом во всей недолгой истории мобильных приложений. Графика простая и даже примитивная (на всё про всё автор потратил двое суток), управление буквально однокнопочное, плюс забавный персонаж и образы, явно заимствованные из нинтендовского репертуара. Успех, впрочем, пришёл к игре не сразу. Выпущенная в мае, полгода она провела в забвении, потом, говорят, была замечена каким-то блогером, и вот тогда — понеслось! Flappy стала самым популярным игровым приложением в апп-сторах Apple и Google, и только с рекламы, в ней размещаемой, автор (так считают) имел 50 килодолларов в день.

Впрочем, в истории Flappy Bird не так интересна её жизнь, как послесловие. В начале февраля Ха Донг решил удалить игру из апп-сторов. Не то чтобы ему было неприятно считать деньги, но он не смог вынести непрекращающегося потока рассказов о том, как игрушка ломала людям жизнь. Она, видите ли, оказалась затягивающей, формировала зависимость. И кто-то в итоге разбивал от злобы свой телефон, другие теряли работу, ругались с родными… Так вот: на самом пике популярности автор игру удалил — и энергия масс стала искать себе новые выходы, породив фантастические последствия.

Телефоны с установленной Flappy Bird пошли с молотка по безумным ценам. Появился «конструктор», с помощью которого даже начинающий программер мог сделать свою версию игры. Онлайн-академия Code.org написала посвящённый ей урок. А в апп-сторах творилось настоящее сумасшествие: согласно нескольким наблюдениям, в первые недели после удаления Flappy Bird каждые полчаса появлялся один её новый клон, а в целом почти каждое третье новое приложение в магазине той же Apple было «навеяно» Flappy. Модераторы Apple и Google устали удалять слишком похожие подделки! Тысячи авторов искали ключик к успеху Flappy Bird. Искали ответ на вопрос: что же такого особенного в ней было, что обеспечило ей беспрецедентную популярность?

Они потрудились на славу — исследовав буквально каждый элемент в игре. Создатели Splashy Fish, City Bird, Flappy Bert, Flappy Bee и сотен, тысяч других подделок меняли и добавляли персонажей, антураж, варьировали сложность игрового процесса (оригинал чрезвычайно сложен: чтобы пройти первое препятствие, некоторым требовалось полчаса). Кто-то даже переработал сценарий на корню — и сделал Flappy «от первого лица», Flappy-обучалку работе на клавиатуре, массивно-многопользовательскую Flappy. Но никто из клонов не побил установленного оригиналом рекорда и даже не повторил его. Да, некоторые попали в топ (и сейчас там остаются: см., к примеру, Flappy Rainbow), но чтобы десять миллионов скачиваний за сутки?!

Так в чём же он, секрет успеха Flappy Bird? В принципе управления? Едва ли: он известен с незапамятных аркадных времён. В антураже? Тоже был в сотнях игр. В глупой птице? Пожалуй, но лишь отчасти. Ну а что говорит по этому поводу сам Ха Донг? Он ничего не скрывает: корни Flappy уходят в увлечение Super Mario Bros.; во время разработки ориентировался на принцип максимально простого управления и предельно трудного набора мастерства. Весьма общие ориентиры, короче говоря. Но, может быть, в этом всё и дело? Может быть, конкретного, формулируемого рецепта успеха нет, но всё вместе, все элементы и факторы, сложившись, и обеспечили Flappy Bird популярность?

Сама Flappy и сотни её клонов иллюстрируют давно известное правило, которое, тем не менее, всегда трудно принять на веру: успешное мобильное приложение невозможно получить механически, алгоритмически, смешивая известные ингредиенты по готовому рецепту. Как книга или статья, песня или картина, новый смартфон, кинофильм, да любой плод предпринимательской деятельности, новое приложение может потребителю понравиться, а может и нет — и способа угадать это наверняка не существует. Успех непредсказуем, неформализуем, капризен.

В последнем интервью Ха Донг называет критическим фактором успеха Flappy Bird удачу. С ним трудно не согласиться. Не заметил бы Flappy тот блогер — и пылилась бы игрушка ещё год, два, пока не была бы забыта даже автором. Не верите? А посмотрите на Piou Piou vs Cactus – французскую аркаду, схожую с Flappy Bird вплоть до мелочей, вплоть до губастенькой птички, да только написанную двумя годами ранее (Нгуен отрицает, что когда-нибудь её видел)! Посмотрите на Pixel Cave, с которой начался сегодняшний рассказ.

Что самое интересное, даже сам Ха Донг, кажется, не до конца понимает всей сложности слагаемых успеха своего проекта. На днях он признался, что подумывает о перезапуске Flappy: мол, клонов может быть сколько угодно, но второй такой сделать не удастся, кроме него, никому. Вот только в коктейле факторов, обеспечивших его игрушке невероятную популярность, наверняка присутствует и фактор времени. Как знать, услышь публика о Flappy Bird кварталом раньше или позже, случилась бы сенсация?

источник

Не так давно была популярной такая мобильная игра, как Flappy Bird. Причем по разным причинам из магазинов она пропала также неожиданно, как и появилась. Однако, учитывая ее популярность, сразу образовалось множество клонов. Не столь качественных, конечно. Но почему их было много? Все из-за того, что сама игра делается довольно просто и быстро.

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

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

Спрайты найдены на просторах интернета.

Сначала сделаем префаб игрока, то есть птичку. Для этого создаем на сцене пустой объект с именем Bird. Внутрь него помещаем объект-спрайт с именем Body и в свойство Sprite компонента Sprite Renderer помещаем спрайт нашей птички (из папки Sprites).

Теперь на саму птичку (объект Bird) прикрепляем компонент Circle Collider 2D и задаем его радиусу значение 0.45.

Также необходимо прикрепить компонент Rigidbody 2D. Здесь, пожалуйста, не перепутайте. Нам необходим именно 2D компонент, а не обычный Rigidbody. Ему задаем значение гравитации (Gravity Scale) равным 2.45 и запрещаем передвижение по оси X, чтобы наша птичка неожиданно не улетела куда-то в сторону.

Теперь создаем C# скрипт c именем BirdHelper и тоже прикрепляем его к птичке (объект Bird).

После всего этого перетягиваем объект Bird из окна Hierarchy в окошко Project, создав таким путем префаб птички. То есть в итоге на префабе Bird должно быть четыре компонента: Transform, Circle Collider 2D, Rigidbody 2D и скрипт Bird Helper.

С главным героем пока что покончили.

Приступим теперь к единственным препятствиям в игре – трубам. Мы с Вами поступим очень хитро. Так как в процессе игры каждая преграда – это пара труб (одна сверху, другая – снизу), их длину можно было бы регулировать и кодом в момент создания. Ведь если нижняя труба короткая, то верхняя – длинная. Но мы пойдем более простым путем. Наша преграда будет сразу состоять из двух длинных труб, и мы просто-напросто будем их ставить выше или ниже. Как на картинке ниже, где светлая рамка – границы дисплея.

Что ж, дабы заделать префаб преграды, создаем на сцене пустой объект с именем Pipes и помещаем внутрь него два объекта-спрайта с именами TopPipe и BottomPipe. В Каждому из них в свойство Sprite компонента Sprite Renderer перетаскиваем спрайт Pipe (из папки Sprites).

Объекту BottomPipe ставим положение по оси Y -4.5 (отрицательное).

С объектом TopPipe проделываем аналогичные манипуляции, но позиция по оси Y будет 4.5, и еще необходимо повернуть его на 180 градусов вокруг оси Z.

Почти готово. Осталось только настроить коллайдеры и прикрепить скрипт. Начнем с коллайдеров. Прикрепим на объект Pipes компонент Box Collider 2D. А лучше сразу три.

Первый настроим таким образом, как на картинке. Просто немного подкорректируем размер и зададим позиции по оси X значение -4.5. Как вы, думаю, уже догадались — это будет коллайдер для нижней трубы.

Следующий Box Collider 2D настроим аналогично предыдущему, только позиция по оси X будет 4.5.

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

И под конец создаем скрипт с именем PipesHelper и прикрепляем его на объект Pipes.

Теперь перетягиваем объект Pipes из окна Hierarchy в окно Project, создав таким путем префаб для препятствий.

Остался только фон. Создаем пустой объект с именем Background. Помещаем в него два объекта-спрайта с именами Part1 и Part2 и в свойство Sprite компонента Sprite Renderer помещаем спрайт Background.

Объекту Part1 задаем размеры X: 2.6, Y: 2.6. С объектом Part2 выполняем такие же действия, но еще сдвигаем его вправо на 7.2 юнитов по оси X.

После этого в объект Background помещаем еще два объекта-спрайта с именами Ground1 и Ground2. Им назначаем спрайты Ground из папки Sprites.

Вот так должны выглядеть настройки объектов Ground1 и Ground2.

Напоследок необходимо добавить коллайдер для земли и создать анимацию движения фона.

Прикрепляем компонент Box Collider 2D на объект Background.

Для того, чтобы создать анимацию, выделяем Background в окне Hierarchy и в окошке Animation нажимаем кнопку Create. Назовем ее BackgroundFloating.

Вся задача данной анимации – передвижение фона влево, чтобы создать эффект, как будто игрок на самом деле летит вправо. После того, как анимация будет создана, на объект Background автоматически прикрепится компонент Animator и будет создан Animator Controller. Нам осталось только перейти в окно Animator и установить значение скорости анимации 0.2.

Под конец создаем скрипт GameHelper и цепляем его на игровую камеру. На этом, пожалуй, все игровые приготовления завершены.

Начнем, я так думаю, из скрипта главного персонажа. То есть BirdHelper’a. Реализация полета птички, как в оригинале, довольно проста. Под действием силы гравитации она будет постоянно падать, а при нажатии клавиши, допустим, Space, мы применим к ней силу по направлению вверх, используя метод AddForce на компоненте Rigidbody2D.

public class BirdHelper : MonoBehaviour

private new Rigidbody2D rigidbody;

if ( Input .GetKeyDown( KeyCode .Space))

rigidbody.AddForce( Vector2 .up * (force — rigidbody.velocity.y), ForceMode2D .Impulse);

С помощью метода MoveRotation мы совершаем поворот птицы в зависимости он величины и знака значения текущего ее ускорения. Поле force у нас открытое и, разумеется, отобразится в окне Inspector. Напишем там 8. Это будет сила “прыжка”.

Со скриптом главного героя почти всё. Вернемся к нему немножко позже.

Перейдем к трубам. Их задача — двигаться на игрока, ведь сам по себе он лишь летает по вертикальной оси в процессе игры и так и не сдвинется по горизонтальной. Движение препятствий можно реализовать статическим методом MoveTowards структуры Vector3.

public class PipesHelper : MonoBehaviour

Vector2 position = transform.position;

position.y = Random .Range(-1.5F, 2.5F);

transform.position = Vector2 .MoveTowards(transform.position, transform.position — transform.right, speed * Time .deltaTime);

При появлении препятствие будет выбирать случайную позицию по оси Y, но такую, чтобы не было видно конца верхней или нижней трубы. Затем каждый кадр будет двигаться влево. Для этого, задавая конечную точку движения, мы вычитаем из текущей позиции препятствия вектор, направленный вправо от него. Также через 6 секунд объект Pipes будет уничтожен, чтобы не нагружать устройство, так как он свою задачу уже выполнил.

К полю speed, представляющему скорость движения препятствия, мы применили атрибут SerializeField, чтобы оно было отображено в Inspector’e, ведь мы его закрыли.

Перед тем, как перейти к скрипту GameHelper, добавим на игровую сцену объект-текст с именем ScoreText и настраиваем, как на рисунке ниже.

Это будет текст для отображения количества очков игрока.

Еще давайте добавим объект-кнопку с именем RestartButton. Она будет появляться, когда игрок проиграет, то есть при столкновении с каким-либо препятствием. В свойство SourceImage компонента Image нашей кнопки перетащите спрайт Button из папки Sprites. Вот настройки кнопки.

А вот настройки текста внутри кнопки RestartButton.

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

Какая же задача скрипта GameHelper? Он будет отвечать за генерацию новых препятствий, подсчет очков и их отображение. А еще за перезапуск уровня. Давайте глянем код.

public class GameHelper : MonoBehaviour

public Button restartButton;

pipes = Resources .Load GameObject >( «Pipes» );

scoreText.text = «Score: » + score;

Instantiate(pipes, position, Quaternion .identity);

yield return new WaitForSeconds (2.0F);

Application .LoadLevel( Application .loadedLevel);

В первую очередь не забудьте подключить пространства имен UnityEngine.UI для работы с элементами пользовательского интерфейса и System.Collections, ведь там находится необходимый нам интерфейс IEnumerator , который мы будем использовать для карутины.

Метод Reset отвечает за перезапуск уровня при нажатии соответствующей кнопки. Значит, настройки компонента Button объекта ResetButton необходимо немножко подправить. Так как сцена у нас не тяжелая, то мы можем позволить себе просто перезагружать ее полностью. Но, так как свойство timeScale статическое, его значение стоит снова установить в 1.0, чтобы при перезагрузке сцены время шло своим чередом.

Метод GeneratePipes является карутиной и его задача – бесконечным циклом создавать препятствия с задержкой между каждыми в 2.0 секунды. Запускается карутина методом StartCaroutine при старте игры. А в методе Awake подгружается из папки Resources модель препятствия.

В поля scoreText и restartButton, которые будут отображены в окне Inspector, необходимо перетащить соответствующие объекты текста очков и кнопки рестарта игры.

Каждый кадр в свойство text объекта scoreText будет передавать текущее количество очков, которое хранится в поле score.

Почти закончили. Осталось немного дополнить скрипт BirdHelper.

public class BirdHelper : MonoBehaviour

private new Rigidbody2D rigidbody;

gameHelper = Camera .main.GetComponent GameHelper >();

if ( Input .GetKeyDown( KeyCode .Space))

rigidbody.AddForce( Vector2 .up * (force — rigidbody.velocity.y), ForceMode2D .Impulse);

void OnCollisionEnter2D ( Collision2D collision)

void OnTriggerExit2D ( Collider2D other)

Метод OnTriggerExit2D сработает в момент выхода игрока из триггера, который находится внутри препятствия и добавит нам одно очко.

OnCollisionEnter2D будет вызван при столкновении с любым коллайдером, а это значит, что игрок проиграл. Время остановится и активируется кнопка перезапуска игры.

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

Спасибо большое всем за внимание. Удачи в начинаниях и творческих успехов!

источник