Добрый день, коллеги! На Хабре достаточно часто появляются посты про разработку первых Android-приложений, и я решил также поделиться своим опытом. Это мой первый писательский опыт на Хабре и моя первая игра, поэтому прошу строго не судить.
Статья получилась очень большой, поэтому я разделил ее на две части. В первой части я написал о предпосылках к написанию игры, об идеях и о технической стороне реализации, а во второй — о финансовой и психологических сторонах разработки игры, о публикации в маркете и о том, что из всего этого получилось. Для тех, кто желает сразу оценить игру — сюда.
Мое знакомство с миром Android и мобильными разработками началось осенью 2010 года, когда один знакомый попросил написать для него приложение под эту платформу за вознаграждение. Свободное время по вечерам плюс желание попробовать что-то новое (вообще я .NET разработчик) — я согласился.
После окончания проекта решил написать свое приложение. Основных причин было три:
1) Android еще молодая система, и там достаточно много свободных ниш, которые можно попробовать занять.
2) Все необходимое для разработки есть и совершенно бесплатно — скачивай и пользуйся.
3) Android Маркет требует минимум усилий для распространения и продажи приложений — не нужно возиться с регистраторами, лицензионными ключами и т.д. Стоит только написать хорошее приложение, выложить и деньги сами посыпятся в карман:) Сейчас смешно, конечно, но тогда я думал именно так.
Сказано — сделано. Я не буду расписывать весь процесс разработки и влазить в технические тонкости — вместо этого в этой и последующих статьях заострю внимание на основных моментах и проблемах, с которыми я столкнулся.
Идея приложения — это альфа и омега будущего приложения, она не менее важна, чем сама реализация. Я остановился на игре, потому что в игры люди играли, играют и будут играть. Здесь тоже есть свои тонкости: если вы одинокий разработчик и не располагаете огромным запасом свободного времени, то не стоит браться за 3d монстров или платформеры с сотней уровней. Даже несложная 3d игра отнимет очень много времени, и лучше немного недооценить свои силы, чем переоценить, чтобы проект вообще увидел свет.
В моем случае выбор пал на раздел логических игр и головоломок, потому что они:
1) достаточно популярны (скачивания лидеров в этом разделе достигают десятки миллионов);
2) как правило, не очень сложны в реализации — анимация персонажей тривиальна, сюжетные линии просты и т.д.
Основной минус данного выбора — достаточно высокая конкуренция в этом разделе.
В качестве отправной точки я взял игру “Жара и холод” — мне и друзьям она понравилась, и аналогов ее под Android я не нашел. Я переработал правила, добавил еще один режим игры и полностью изменил оформление — этого мне показалось достаточно, чтобы игра была свежей и интересной.
ТЗ. После того, как вы хорошо представите в голове, что вы будете делать, сядьте и первым делом…выкиньте это из головы запишите это все в виде какой-нибудь спецификации или ТЗ на будущий проект — очень пригодится в дальнейшем. С помощью ТЗ вы сможете контролировать сроки написания игры, не упустить детали и вообще придадите процессу разработки больше порядка.
Прототип. Не менее важно, чем ТЗ, написать прототип приложения — на нем можно обкатать будущий интерфейс игры, управление и проверить очень много вещей, которые до этого были лишь “на бумаге”.
Мой прототип выглядел так:
Не обращайте внимания на цифры — скриншоты взяты из задания дизайнеру. Несмотря на простоту, прототип очень помог мне понять какое приложение должно получиться в итоге и отказаться от некоторых явно лишних вещей.
Эмулятор. Переход на платформу Android с .NET был достаточно безболезненным, однако эмулятор мог бы быть лучше. Мне пришлось распрощаться с ним сразу, как только я перешел от прототипа к написанию основной версии игры, благо появилась возможность приобрести планшет и расходы на его покупку были изначально заложены в бюджет. Быстродействие эмулятора проигрывает реальным устройствам в несколько раз, поэтому про отладку анимации или каких-то сложных вычислений на эмуляторе можно забыть. Выбор хода, который на планшете занимал 1-2 секунды, эмулятор делал за 8-10 секунд. Кроме того, я был в ужасе, когда ряд фич, которые хорошо работали на эмуляторе, на реальном устройстве работать не захотели (например, проигрывание фоновой музыки). Поэтому, даже если вы во время всего периода разработки будете пользоваться эмулятором, вам обязательно нужно подумать о том, где раздобыть хотя бы одно (а лучше два — телефон и планшет) устройство для тестирования и ориентироваться на них.
Я купил себе 10-дюймовый планшет Asus EEE Pad Transformer с аукциона в Америке, а друг (об этом ниже) — Samsung Galaxy S. Таким образом, проблема с устройствами для тестирования была решена.
Пользовательский интерфейс и управление. Вот он, бич мобильных приложений! Маленький экран, а сколько всего нужно уместить! Если в вашу игру будет неудобно играть или у нее будет запутанный интерфейс — это похоронит ее еще на старте. Обязательно проработайте на прототипе несколько вариантов управления (если конечно оно не абсолютно тривиально), найдите пару разных по формату устройств и попробуйте поиграть на них, спрашивайте совета у тех, кто будет целевой аудиторией вашей игры. А еще не помешает нанять гейм-дизайнера, если средства позволяют (у меня, к сожалению, бюджет был ограничен).
У меня одной из основных проблем в интерфейсе было то, что поле большое, а уместить его на экране надо целиком — в этой игре позицию на карте надо оценивать целиком. В итоге, если игра сначала выглядела так:
то окончательный вариант был таким:
По ходу работы пришлось сначала изменить угол отображения поля, затем постараться занять наибольшую площадь экрана под поле (отказался от ряда кнопок на экране игры), а после, для удобства игры на мобильниках, сделать возможность игры в полностью полноэкранном режиме.
Также по ходу работы значительные изменения претерпел раздел справки — от восьмистраничного раздела с переключением страниц до небольшой странички со скроллингом. К слову, раздел был переработан после отрицательных отзывов пользователей.
Ну и конечно, как русский разработчик, я не мог не добавить в игру поддержку русского языка, так как считаю русскоязычный сегмент рынка весьма значительным.
Графика и дизайн. У вашей игры должна быть хорошая графика — и это все. Если вы сами не работаете параллельно дизайнером и не владеете на очень хорошем уровне приложениями для рисования — не питайте иллюзий насчет своих сил, наймите дизайнера и следите за тем, как он работает, чтобы получалось то, что вам нужно. Люди, скорее всего, не станут играть в игру, где графика “только обозначена”. В бюджете обязательно стоит учесть расходы на визуальную часть, и они могут занять весомую часть от всего бюджета. Четкая прорисовка, яркие персонажи, хорошая анимация — без этого всего выживают только тетрис и крестики-нолики, а они уже давно есть в Android.
Я нашел дизайнера, которая по основной работе рисует для социальных игр, и она мне обеспечила хорошее соотношение “цена-качество”, однако работы над визуальной частью продолжаются и сейчас.
Фрагментация. Это не миф, это реальное зло Android. Куча устройств с разными характеристиками и разными экранами, поэтому ваша игра может выглядеть на них по-разному. Остается только создавать много виртуальных устройств с разными характеристиками и проверять работу игры и интерфейс на них. Активно пользуйтесь классификаторами устройств в названиях папок с ресурсами, разделяйте стили, картинки и разметку по разным размерам экранов и разным dpi. Очень нудное занятие, но это лучше, чем получить сотню гневных отзывов от пользователей и низкий рейтинг. В конечном итоге, мне удалось добиться приемлемого отображения меню и игры на всех типах устройств, на которых я смог проверить.
Думаю, количество букв в этой статье уже достигло неприличных пределов, поэтому на этом первую часть закончу.
Часть вторая.
Статья получилась очень большой, поэтому я разделил ее на две части. В первой части я написал о предпосылках к написанию игры, об идеях и о технической стороне реализации, а во второй — о финансовой и психологических сторонах разработки игры, о публикации в маркете и о том, что из всего этого получилось. Для тех, кто желает сразу оценить игру — сюда.
Предыстория
Мое знакомство с миром Android и мобильными разработками началось осенью 2010 года, когда один знакомый попросил написать для него приложение под эту платформу за вознаграждение. Свободное время по вечерам плюс желание попробовать что-то новое (вообще я .NET разработчик) — я согласился.
После окончания проекта решил написать свое приложение. Основных причин было три:
1) Android еще молодая система, и там достаточно много свободных ниш, которые можно попробовать занять.
2) Все необходимое для разработки есть и совершенно бесплатно — скачивай и пользуйся.
3) Android Маркет требует минимум усилий для распространения и продажи приложений — не нужно возиться с регистраторами, лицензионными ключами и т.д. Стоит только написать хорошее приложение, выложить и деньги сами посыпятся в карман:) Сейчас смешно, конечно, но тогда я думал именно так.
Сказано — сделано. Я не буду расписывать весь процесс разработки и влазить в технические тонкости — вместо этого в этой и последующих статьях заострю внимание на основных моментах и проблемах, с которыми я столкнулся.
Идея
Идея приложения — это альфа и омега будущего приложения, она не менее важна, чем сама реализация. Я остановился на игре, потому что в игры люди играли, играют и будут играть. Здесь тоже есть свои тонкости: если вы одинокий разработчик и не располагаете огромным запасом свободного времени, то не стоит браться за 3d монстров или платформеры с сотней уровней. Даже несложная 3d игра отнимет очень много времени, и лучше немного недооценить свои силы, чем переоценить, чтобы проект вообще увидел свет.
В моем случае выбор пал на раздел логических игр и головоломок, потому что они:
1) достаточно популярны (скачивания лидеров в этом разделе достигают десятки миллионов);
2) как правило, не очень сложны в реализации — анимация персонажей тривиальна, сюжетные линии просты и т.д.
Основной минус данного выбора — достаточно высокая конкуренция в этом разделе.
В качестве отправной точки я взял игру “Жара и холод” — мне и друзьям она понравилась, и аналогов ее под Android я не нашел. Я переработал правила, добавил еще один режим игры и полностью изменил оформление — этого мне показалось достаточно, чтобы игра была свежей и интересной.
Техническая сторона
ТЗ. После того, как вы хорошо представите в голове, что вы будете делать, сядьте и первым делом…
Прототип. Не менее важно, чем ТЗ, написать прототип приложения — на нем можно обкатать будущий интерфейс игры, управление и проверить очень много вещей, которые до этого были лишь “на бумаге”.
Мой прототип выглядел так:
Не обращайте внимания на цифры — скриншоты взяты из задания дизайнеру. Несмотря на простоту, прототип очень помог мне понять какое приложение должно получиться в итоге и отказаться от некоторых явно лишних вещей.
Эмулятор. Переход на платформу Android с .NET был достаточно безболезненным, однако эмулятор мог бы быть лучше. Мне пришлось распрощаться с ним сразу, как только я перешел от прототипа к написанию основной версии игры, благо появилась возможность приобрести планшет и расходы на его покупку были изначально заложены в бюджет. Быстродействие эмулятора проигрывает реальным устройствам в несколько раз, поэтому про отладку анимации или каких-то сложных вычислений на эмуляторе можно забыть. Выбор хода, который на планшете занимал 1-2 секунды, эмулятор делал за 8-10 секунд. Кроме того, я был в ужасе, когда ряд фич, которые хорошо работали на эмуляторе, на реальном устройстве работать не захотели (например, проигрывание фоновой музыки). Поэтому, даже если вы во время всего периода разработки будете пользоваться эмулятором, вам обязательно нужно подумать о том, где раздобыть хотя бы одно (а лучше два — телефон и планшет) устройство для тестирования и ориентироваться на них.
Я купил себе 10-дюймовый планшет Asus EEE Pad Transformer с аукциона в Америке, а друг (об этом ниже) — Samsung Galaxy S. Таким образом, проблема с устройствами для тестирования была решена.
Пользовательский интерфейс и управление. Вот он, бич мобильных приложений! Маленький экран, а сколько всего нужно уместить! Если в вашу игру будет неудобно играть или у нее будет запутанный интерфейс — это похоронит ее еще на старте. Обязательно проработайте на прототипе несколько вариантов управления (если конечно оно не абсолютно тривиально), найдите пару разных по формату устройств и попробуйте поиграть на них, спрашивайте совета у тех, кто будет целевой аудиторией вашей игры. А еще не помешает нанять гейм-дизайнера, если средства позволяют (у меня, к сожалению, бюджет был ограничен).
У меня одной из основных проблем в интерфейсе было то, что поле большое, а уместить его на экране надо целиком — в этой игре позицию на карте надо оценивать целиком. В итоге, если игра сначала выглядела так:
то окончательный вариант был таким:
По ходу работы пришлось сначала изменить угол отображения поля, затем постараться занять наибольшую площадь экрана под поле (отказался от ряда кнопок на экране игры), а после, для удобства игры на мобильниках, сделать возможность игры в полностью полноэкранном режиме.
Также по ходу работы значительные изменения претерпел раздел справки — от восьмистраничного раздела с переключением страниц до небольшой странички со скроллингом. К слову, раздел был переработан после отрицательных отзывов пользователей.
Ну и конечно, как русский разработчик, я не мог не добавить в игру поддержку русского языка, так как считаю русскоязычный сегмент рынка весьма значительным.
Графика и дизайн. У вашей игры должна быть хорошая графика — и это все. Если вы сами не работаете параллельно дизайнером и не владеете на очень хорошем уровне приложениями для рисования — не питайте иллюзий насчет своих сил, наймите дизайнера и следите за тем, как он работает, чтобы получалось то, что вам нужно. Люди, скорее всего, не станут играть в игру, где графика “только обозначена”. В бюджете обязательно стоит учесть расходы на визуальную часть, и они могут занять весомую часть от всего бюджета. Четкая прорисовка, яркие персонажи, хорошая анимация — без этого всего выживают только тетрис и крестики-нолики, а они уже давно есть в Android.
Я нашел дизайнера, которая по основной работе рисует для социальных игр, и она мне обеспечила хорошее соотношение “цена-качество”, однако работы над визуальной частью продолжаются и сейчас.
Фрагментация. Это не миф, это реальное зло Android. Куча устройств с разными характеристиками и разными экранами, поэтому ваша игра может выглядеть на них по-разному. Остается только создавать много виртуальных устройств с разными характеристиками и проверять работу игры и интерфейс на них. Активно пользуйтесь классификаторами устройств в названиях папок с ресурсами, разделяйте стили, картинки и разметку по разным размерам экранов и разным dpi. Очень нудное занятие, но это лучше, чем получить сотню гневных отзывов от пользователей и низкий рейтинг. В конечном итоге, мне удалось добиться приемлемого отображения меню и игры на всех типах устройств, на которых я смог проверить.
Думаю, количество букв в этой статье уже достигло неприличных пределов, поэтому на этом первую часть закончу.
Часть вторая.