В 2012-м году я таки купил телефон на платформе android, это был аппарат Acer Liquid Metal S120. Поигравшись с аппаратом, и поиграв в разные игры, возникло желание написать свою игру. Поскольку я люблю лабиринты, изучил все возможные игры в данном жанре, но так и не нашел достойного кандидата. Решено – делаем лабиринт! Осталось дело за малым – продумать концепцию, выбрать движок и инструментарий, настроить среду разработки, нарисовать графику, сочинить музыку и написать код.
Концепция
Игровой мир представлен в 2D, вид сбоку, как в старых, добрых платформерах 90-х годов. Главный герой – подросток мальчуган по имени Джек, который заблудился в лабиринтах, и ищет выход. По пути к выходу он собирает бонусы в виде монеток и драгоценных камней. Чтобы усложнить задачу – было добавлены противники (тупые зомби, с полным отсутствием интеллекта, блуждающие от стенки до стенки), а так же двери и ключи.
Выбор движка и инструментов
Поскольку я имею некоторый опыт программирования на Java, в качестве движка был выбран andengine. Он идеально подходит для реализации 2d-игр. К плюсам можно отнести открытость проекта. Единственный, на мой взгляд, недостаток – отсутствие официальной документации, что сполна покрывается наличием богатых примеров и отзывчивым сообществом на официальном форуме. В ходе разработки выяснилось, что одного движка недостаточно. Так как лабиринты нужно придумать и нарисовать возникла потребность в редакторе уровней. В поскольку выбор был невелик – выбрал Tiled Map Editor. Объективных причин было 3:
- он удобен
- поддержка andengine из коробки
- проект активно развивается
Среду разработки выбрал eclipse, я к нему привык да и официальный инструментарий разработки от google на тот момент был заточен именно под эту IDE. Так же было решено использовать систему контроля версий SVN, поскольку удалось сколотить небольшую команду в виде второго разработчик и музыканта, а так же художника. Когда речь зашла о музыке – было решено отказаться от mp3 в пользу трекерной музыки, что не очень обрадовало музыканта. Но он успешно освоил OpenMPT и музыка получилась весьма приятная.
Графика
Изначально я хотел сделать 3d графику, отсчитанную в 2d. Но в ходе реализации пришлось отказаться от этой идеи. Первые наброски персонажа были выполнены в 3d и выглядели следующим образом:
Позже я попробовал сделать анимацию:
Но в итоге у меня не получилось сделать красивого окружения в 3d, не хватало опыта. Я пробовал искать художников, но ничего хорошего из этого не вышло. И я взялся за пиксели, и вот что из этого вышло:
Весь геймплей выполнен в растровом редакторе, выведен с душой пиксель за пикселем:
Логотип, игровые заставки, и прочие элементы навигации, сделали в векторе, тут я подключил мастерство моей жены (она — классный художник):
Написание кода
Тут все оказалось весьма не сложно, писать под android – одно удовольствие. К интересным моментам можно отнести:
- алгоритм поиска пути, в моем случае это был метод волны.
- алгоритм расчета очков
- интеграция системы scoreloop.
- Интеграция с системы обработки багрепортов bugsense.
- Ну и конечно продумывание и реализация навигации в геймплее.
Результат
Опубликовали приложение в google play 29-го мая, и уже имеем где-то 500-600 загрузок в день, на мой взгляд это весьма неплохой результат. На текущий момент в игре реализовано 3 сета по 15 уровней. Планируем нарисовать ещё больше уровней, и ввести новых противников. Но сейчас у нас встала первоочередная задача — анализ и исправление багов, а их у нас оказалось достаточно (от части вызвано разношерстностью android устройств). В частности пришлось пересобрать нативную часть под intel и mips, уменьшить текстурные атласы до 1024 пикселей.
Буду рад ответить на любые вопросы.