Янв
23

Беги, дедуля!

По просьбам «трудящихся» решил показать, над чем сейчас работаю на Андроиде.

Игру начал делать 17 октября 2011!!! Игра «Беги, дедуля!» получается миксом игры Марио и Yoo Ninja — короче, бегалка-прыгалка-собиралка. Главный герой бежит сам, а игрок только задевает экран, чтобы герой прыгал.

Графику рисовал ещё для Flash игры и просто перенёс на Андроид. Кое-что дорисовывал. Графика получилась смесью вектора и пиксель-арта.

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

Локации планирую добавлять постепенно после релиза игры. Но для начала нужно сделать хотя бы 3 (это 30 уровней).

Дедулю заново перерисовал, что заняло 2 дня! Много времени потратил на анимацию бега. Но она всё-равно не получилась идеальной.

На флэше спрайт деда был размером 18*29 пикселей. Сейчас он стал 37*64. Вот какой он был (слева) и стал (справа) (увеличил в 4 раза):

Уровни создаю в DAME редакторе. Выписываю в XML формате, сжимаю в ZIP и шифрую. В игре дешифрую, распаковываю и парсю. Использую 6 базовых «слоёв» — задний фон, средний фон, передний фон с разделением на SpriteBatch и SpriteGroup.

Логику коллизий героя, платформ и всяких предметов взял из Flixel старой версии (без использования алгоритма QuadTree). Все объекты-спрайты кэширую в пулах. Статичные украшательства уровня сразу пихаю в SpriteBatch.

Текстуры создаю с помощью TexturePackerPro. Получается быстро и просто. Полная версия стоит $25, но для игроделов с блогами автор раздаёт её бесплатно. Я получил бесплатно. Напишу про неё в отдельном посте. Вещь действитеьно классная.

Текстуры выписываю в PVR формате. AndEngine GLES2 с помощью расширения AndEngineTexturePackerExtension с лёгкостью читает этот формат и его загрузка требует меньше памяти, нежели при использовании PNG или сжатого PVR.

Сам движок (Engine) в игре у меня с фиксированной частотой 120 шагов/сек (FixedStepEngine). С обычным движком глючат Flixel-коллизии. FPS в игре не проседает ниже 119, хотя объектов на экране около 600.

Сборщик мусора срабатывает очень редко и игра лагает ооочень редко 1-2 раза за всю игру.

В планах нужно сделать ещё очень много, даже говорить не буду сколько 🙂

Ну и напоследок видео игры (записывал с помощью ScreenCast прямо на телефоне), музыки в игре пока нет (вставил в видео другую):




29 коммент. к записи “Беги, дедуля!”

  • Выглядит здорово. Отличная работа! Ждем релиза)

  • отлично выглядит ! особенно почему-то понравился последний уровень из видео, да и идея со звездочками хорошая. На андроиде почему-то неприлично мало хороших раннеров...

  • Очень здорово получается, и самое удивительное, что делает это 1 человек)

    ну и пару вопросов:

    1. Анимация при сборе монет — это партиклы? это же не анимация монеты?

    2. мультик перед игрой — это видео?

    • 1. Это отдельный спрайты с анимацией.

      2. Мультик — программный

  • Будет круче, если звук победы на уровне будет идти вверх, а не вниз. Последний звук надо сделать выше первых трех. Тогда будет победа. А так — проигрыш. Извините.

    • Над звуками ещё будет работа 🙂

  • Качественно) Но надеюсь работа над игрой будет закончена не скоро, после первого посещения этого блога, скачал себе чиперов, и честно говоря они убили уйму моего времени)) Успехов!

  • Очень классная игра! Буду ждать релиза)))

    и одно пожелание: не могли бы Вы сделать урок о том, как сделать скрол для выбора например уровней (в Вашей игре вы вибираете уровни и комнаты с уровнями) Спасибо))

    • Спасибо. Урок делать не хочу 🙂 Могу только сказать, что эпизоды добавлены на Сцену, а выбор делается просто сдвигом камеры в нужную позицию. Т.е. ездят не сами спрайты по сцене, а камера

      • Работаю пока в GLES1 так там нет событий на скролстарт и скролфиниш. Пришлось выдирать из gles2, а так кончено жесть, пока добился желаемого результата «легкого непринужденного» скрола.

  • Как сделано затемнение при переходах между сценами? FadeInModifier?

  • А вообще, ожидаются новые уроки?:) Потому что существующие — хороши. Подводные камни некоторые описывают. Этим и оч полезны

    • Ожидаются, но не в плане программирования. Может есть идеи, о чём можно ещё написать уроки?

  • Как сделано появление звездочек в финальной сцене?

    • Не понял вопроса — что именно из появления интересует «как сделано»?

      • Ну поочередное появление их, то есть появилась одна с анимацией, потом следующая и так далее.

        • Ну каждая звезда — отдельный спрайт. Вылетающие звездочки — партиклы. Задержка с помощью таймера

  • Виталий, удачи в работе! Вот хотел спросить по поводу: «Статичные украшательства уровня сразу пихаю в SpriteBatch.» Необходимо ли для использования спрайтбатч, чтобы регионы всех спрайтов были в одном атласе? И для анимированых спрайтов такое дело прокатит? По офф примеру я так понял что прокатит если регион один и тотже и анимацию нельзя будет настроить по разному для разных спрайтов. И еще, по видео, вроде не заметил необходимости создавать пулы объектов, ведь нет ни одного объекта который бы использовался многократно, разве что анимация звездочек? Вообще, хорошо было бы собрать тут форум конкретно по andengine, получился бы отличный ресурс.

    • Все ответы в статье про SpriteBatch

  • Хотел тут восопользовать TesturePacker. А он хочет лицензию. Есть варианты без лицензии для генерации pvr?

  • прикольная игра такая

  • А какое максимальное разрешение для спрайт листа pvr формата?

    • 8192*8192. Но GLES1 тянет максимум 1024*1024, а GLES2 — 2048*2048

Прокомментировать



ЗАДАЙ СВОЙ ВОПРОС