Пользователь
0,0
рейтинг
12 февраля 2014 в 17:22

Разработка → Создаем прототип игры Flappy Bird под Android на LibGDX

Сегодня утро на работе началось с холивара на тему вчерашней статьи: “Вот у iOS уже физический движок есть, а в Android даже камера нормально не работает… Придет заказчик, даст проект портировать с iOS на Android — оценишь его в 120 часов, а заказчик скажет, как так, вот под iOS за 8 часов написали...”. Короче получилось много эмоций на пустом месте.

Поэтому я решил поставить некоторые точки над «и» (такая поговорка в русском языке есть, или только в украинском? :)). Так вот, задача:
— написать прототип Flappy Bird с использованием любого физического движка или фреймворка как можно быстрее.

Хотел сначала по исходникам пройтись, но они получились настолько примитивными, что думаю нету смысла. Для разработки взял фреймворк LibGDX и попытался написать более-менее красивый код (это вечная тема, и каждый ведет идеальный код по своему).

После полутора часов работы и полулитра кефира получился прототип. Эта цифра ничего не говорит, я уверен, что на хабре есть десятки программистов, которые реализуют данную задачу в 2-3 раза быстрее. Так само если iOS-разработчики скажут, что такое могут написать за 20 минут — я поверю.

Выводы:
— под Android можно писать так же быстро, как и под iOS, все зависит от опыта программиста;
— мы получили не только прототип игры за 90 минут, но и кросс платформу, оно будет работать и под iOS, и под Android, и под Windows/Linux/BSD/MacOS… везде, где есть Java. Если в будущем планируется порт на другие платформы, то думаю не нужно говорить, что легче с нуля написать игру, чем повторить физику в уже написанной. Поэтому если нужна кросс платформа — лучше сразу выбирать что-то независимое.
— да, в Android много косяков, нету смысла спорить что лучше, Android или iOS — в обеих есть плюсы и минусы. Лучше это время потратить на семью/работу, к тому же я не хочу спровоцировать срач в комментариях.

Исходники на Bitbucket (MIT лицензия).

P.S. Если автор этой статьи напишет в комментариях либо в личку, сколько у него времени ушло на разработку — буду очень благодарен.
Eugene @eReS
карма
54,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (13)

  • –9
    Спасибо за статью!
  • 0
    x = x + xspeed
    y = y — yspeed

    yspeed -= 0.1

    if( keyPressed ){ yspeed ++ };

    Вот физический движок для данной игры.
    Потом надо двигать препятствия и проверять 1, 2, 3 прямоугольники на пересечение с квадратом. (иф с четырьмя, а может и тремя условиями).
    • +1
      1. Уже сложнее кросс платформа
      2. В Android разве что на Canvas рисовать можно — а это ужас на 2.х, так как нету аппаратного ускорения, и на 4.х 100% будет OutOfMemory, разве что сделать имитацию движения, а размер холста не менять — но это уже костыль. Да и скорость все равно будет на порядок меньшая

      Я не знаю, как можно написать проще без использования движков.
      • –1
        Не только на Canvas можно рисовать. Есть SurfaceView для подобных задач.
        • +2
          Ну да, это и есть Canvas. Больше 5 текстур — и будет OutOfMemory (клон этой игрушки еще влезет в кучу, а вот что-то побольше уже нет).
          • +1
            Точно, там же в итоге всё равно канвас используетя.
  • +2
    Вывод довольно странный. По моему мнению все сильно зависит от задачи. Причем разница может быть как весьма незначительной, так и катастрофической. Причем как в пользу Андроид так и iOS. Ну приведу один лишь пример: нужно портировать некое приложение, использующее CoreText. И? Придется либо делать все с нуля, включая концепцию (переписать на HTML к примеру), или создавать свое подобие CoreText используя более низкоуровневые API. И таких нишевых моментов довольно много. Поэтому сравнивать скорость разработки на примере игрушек не вполне корректно.
    • +1
      Да, Вы правы. В iOS из коробки есть поддержка PDF, в Android нету, и отрытых библиотек под правильной лицензией нету, есть только MuPDF под GPL — а оно для продакшена не подходит, ибо открывать исходники нельзя.
      Я лишь говорил за игры и за то, что встроенный физический движок в iOS не имеет большого преимущества.
      • 0
        а зачем нужна поддержка PDF в платформе, если можно показ PDF передоверить активити любого стороннего приложения?
        • 0
          Это не удобство, а если нету приложений для открытия PDF? + Почти всегда приложение являет собою журнал/книгу/мануал. Что это за приложение, которое требует еще левое приложение? Заказчики недовольные)
          • 0
            В куче стандартных прошивок сразу есть adobe reader или что-то подобное.
            под виндами же никого не смущает, что обработка какого-то типа документов доверяется другой программе.
            • 0
              Хотел бы я посмотреть, что вы будете говорить заказчику, когда скажет «нужна поддержка PDF», а также «почему аж 8 часов нужно на интеграцию? под iOS делается за 30 минут».
              • 0
                не надо с крохоборами работать, от этого и той и другой стороне хорошего мало :)

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