Создаем прототип игры 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. Если автор этой статьи напишет в комментариях либо в личку, сколько у него времени ушло на разработку — буду очень благодарен.
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 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
                      не надо с крохоборами работать, от этого и той и другой стороне хорошего мало :)

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