- PVSM.RU - https://www.pvsm.ru -
Всё началось с Unigine Open Air 2012, я туда поехал с друзьями пишущими игры надеясь просто хорошо провести время (провёл), но когда вокруг алкоголики, виски, шашлыки люди увлеченные написанием игр — сложно удержаться и не попробовать. Второй причиной было то, что у меня есть два приятеля, которые успешно написали что-то своё и теперь потихоньку работают на себя. Тут я решил, что “все прыгали и я прыгну, мне то чё” ©. И понеслось.
План выработался практически сразу:
В данный момент я где-то в конце первого пункта. Но меня никак не отпускает и постоянно хочется что-нибудь ещё немножко вот тут дописать, дорисовать, поменять.
В качестве запасного варианта к плану я решил, что такой опыт лишним в любом случае не будет.
Мотивация странная штука, у всех она своя. Но мне кажется общая суть мотивации в том, что если вы можете обмануть себя (обманывать других — нехорошо, а себя — самое оно!) и объяснить почему нужно потратить этот солнечный день на кодинг вместо катания на велосипеде — обманывайте! Даже если объяснение далеко от логики — это не беда :)
Смотрите, если позволить себе пилить своё приложение по субботам, вот каждую субботу 8мь часов целенаправленно садиться и делать! То получается что в год у вас 52 рабочих дня набежит. А это уже 2.5 рабочих месяца! Давайте предположим, что мы ещё немножко вечерами думаем про приложение и архитектуру и увеличим это время до 3.5 месяцев в год. Уже неплохо, а теперь финт ушами и подумаем о том, на сколко мы продуктивны когда пишем своё приложение и когда работаем на дядю? Оооок, какой у вас коэффициент получился? 1? 1.5? а может все 2?
Представьте, что ваши пользователи — вода, которая течет по трубе. А ваша цель сделать так, чтобы через трубу протекало как можно больше воды. И, допустим, каждое улучшение, которое вы делаете, даёт вам увеличение этого потока на 10% (что вполне реально, допустим одно улучшение — один рабочий день). Так вот, есть у нас в начале 1 пользователь в день, а мы хотим 1000, спрашивается сколько улучшений нужно сделать всего? 1,1^x = 1000, итого x — 72 улучшения за 72 рабочих дня. (вот наши 3.5 месяца и пригодились).
А всякие неудачи — вроде улучшил проект, а 10% не выиграл, можно объяснять тем, что труба имеет куски разных диаметров, и возможно вы улучшили не самое узкое место. Или почему совсем нет пользователей — так ты трубу не достроил, какие тебе пользователи? Во всех отношениях приятная модель для самообмана.
Очень важно найти кого-то кто будет вас подбадривать и кто тоже увлечен этой же темой (мобильной разработкой). У меня под боком сидит товарищ, который успешно пилит свои игры, и с которым мы часто обсуждаем самые разнообразные странные вещи которые узнаём про платформу, про психологию пользователей и прочее. Это очень сильно помогает не забросить это увлечение.
Помните про неё. Читайте не только success story, но и просто отчёты вроде моего, и тем более — отчеты товарищей которые провалились. И только тогда делайте выводы.
Я часто слышу про “приложение на коленке за пару вечеров” и это очень демотивирует. Я не знаю таких людей лично, но знаю других, которые потратили много месяцев, прежде чем приложение начало приносить нормальные деньги. Это меня мотивирует. (учитывая, что потратил я уже около 4х месяцев).
Я жоплюсь тратить деньги (тем более, что я ничего особенно не жду от тестового проекта). Это странная штука, когда ты потратил дофига времени которое стоит кучу денег (ну ладно, опыт всё-таки получил взамен), но не можешь купить иконку или перевод или заказать дизайн. Если у вас есть такая фигня — нужно с ней бороться, ну или хотя бы как-то учитывать. Это не дело, когда вы рисуете убогую иконку тратя на это больше времени (и денег в его эквиваленте), чем если бы вы заказали иконку у дизайнера. Вообще, разработка приложения похожа на игру. В игре, важно заставить игрока сделать маленькую покупку как можно раньше, потому что как только пользователь сделает хоть одну покупку он будет тратить деньги намного легче. Так и тут, купите иконку, а дальше будет легче.
Все люди разные опять же, кто-то вбухивает дофига своего времени, кто-то денег.
P.S. Многие мысли вроде этих приходили в голову как некое просветление — потому я и назвал эту часть статьи “дзен и мотивация”.
Как я уже говорил, я жоплюсь, поэтому расскажу как я сделал хоть какой-то дизайн самостоятельно.
Вот что получилось:
Текстура фона тоже рисовалась в google docs, а потом множилась и поворачивалась в Paint.NET.
В итоге получилось нечто такое:
Оба варианта на мой неискушенный взгляд оказались вполне приемлемыми. Чего и вам желаю.
Замечание по поводу кнопки ещё такое — чуть позже я узнал, что всё-таки android позволяет рисовать немного векторных объектов нативно — они называются Shape [1] и позволяют нарисовать вот как раз такую кнопку с закругленными краями, границей и даже градиентом. Создаёте такой Shape в папке drawable, а потом используете в качестве фона у кнопок или других объектов.
Чтобы было чуть-чуть интереснее — на каждый ход я сделал анимацию (тоже нативная штука в android).
Эффекты следующие:
Давайте разберемся на примере поворота вокруг оси X.
Добавляем файл overx.xml в res/anim папку проекта со следующим содержанием:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<scale
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="125"
android:repeatCount="1"
android:repeatMode="reverse"
></scale>
</set>
Надеюсь остальные параметры совсем не вызовут вопросов.
Вызов непосредственно этой анимации происходит так:
Button button = (Button)findViewById(R.id.button);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.overx);
button.startAnimation(anim);
Я создал пул анимаций для крестиков и для ноликов отдельно и использовал их в случайном порядке. Так вот выяснилось, что не стоит использовать один и тот же объект Animation для анимации разных изображений. Для меня это как-то оказалось неочевидным. И я поимел немного непонятных проблем.
Иконка — очень важна (но я от смены иконок изменения количества скачек не заметил).
Эволюция иконки:
Рисуется в любом редакторе :)
Любой редактор + вот такой генератор кнопочек [2] (там свои ограничения, но вполне себе пользуемо).
Вот у этих товарищей [3] есть триальный 3d редактор. Можно было конечно 3ds Max, но мне показалось что дольше буду разбираться.
Была мысль, что выделюсь черным фоном и мою иконку заметят… но нет :)
Тут произошли кардинальные изменения в приложении. Ачивки были убраны и вместо них появилась система подсчета рейтинга (что символизирует кубок) на основе скорости реакции игрока и таблица рекордов. Я нашёл другой редактор иконок [4], в котором больше возможностей делать всякие впуклые иконки и прочее, но в итоге иконка такая же по выпуклостям как и была на второй картинке.
Всё-таки плоский дизайн.
Похоже времена когда достаточно было сделать перевод приложения на корейский, чтобы его начали бешенно качать прошли (по крайней мере для крестиков-ноликов). Я думаю это потому, что раньше был шанс практически сразу по запросу оказаться одним из первых — сейчас уже нет.
Вся одна полезная мысль про локализацию у меня такая: идём на xda developers форум, мониторим ветку где выкладывают свои приложения разработчики и пишем им мол, давай я твоё приложение переведу на русский, а ты моё — на свой родной язык. Но нужно конечно вначале прикинуть, чтобы не оказалось что переводить чужое приложение придется день, а у вас всего пару строчек для перевода. Я написал 6ым, откликнулись 2ое, перевод пока что мы сделали так только с одним товарищем, опыт вполне приятный, даже не смотря на то, что мне пришлось раза в три больше перевести чем товарищу. Но с другой стороны — одним хорошим приложением больше в русском маркете.
Всё что ниже будет оnноситься не к топам, а к поиску по ключевому слову “Крестики нолики”.
Так как же подняться повыше?
Я пробовал добавлять локализованные названия в само приложение в надежде что это как-то поменяет позицию в поиске, но увы нет. (я так предположил потому, что гугл плэй даёт подсказки что мол надо бы перевести само приложение на такой-то язык, а значит, возможно, парсит файлы локализации приложения).
Приложения-новички (меньше месяца в маркете) рискуют попасть в топ новых, так что если вы уверены, что приложение прямо может выстрелить — лучше чуть подождать с выкладыванием и выстрелить. Я, понятное дело, ни о чём таком не думал и считаю что в большинстве случаев неторопливой разработки (инди) гораздо важнее фидбек, чтобы не забросить это всё дело окончательно. Поэтому моя первая версия выглядела очень убого :)
Когда я собирался только писать статью — я думал, что это будет нечто всеобъемлющее полностью раскрывающее всё, что со мной произошло за последний год, но мне кажется, что я уже утомил читателей своими буковками, да и сам уже подустал. Поэтому я решил, что опишу только некоторые вещи касающиеся разработки приложения, а само программирование оставлю для возможной второй части.
Анонс сиквела будет примерно таким:
Остальное добавить по-вкусу.
Если есть пожелания к сиквелу или вопросы или лучше предложения что и как лучше сделать — я с удовольствием готов обсудить.
Автор: peshekhonov
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/47474
Ссылки в тексте:
[1] Shape: http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
[2] вот такой генератор кнопочек: http://www.holshousersoftware.com/glass/
[3] этих товарищей: http://www.rw-designer.com/
[4] другой редактор иконок: http://www.grsites.com/generate/generator/2002/
[5] белорусском: http://be-x-old.wikipedia.org/wiki/%D0%9A%D1%80%D1%8B%D0%B6%D1%8B%D0%BA%D1%96-%D0%BD%D1%83%D0%BB%D1%96%D0%BA%D1%96
[6] Источник: http://habrahabr.ru/post/200776/
Нажмите здесь для печати.