imagination С появлением у меня в первом классе Dendy вопрос кем я стану отпал сам собой буквально через пару недель — программистом конечно же. Я долго и упорно шел к этому, невзирая на отсутствие информатики в школе, работал в техподдержке известного всем регистратора параллельно с учебой в институте, но полноценная жизнь началась лишь в тот момент, когда меня наконец-то взяли хоть куда-то писать код.

Очень скоро я понял, что мало быть программистом, работающим от звонка до звонка и получающим за это деньги на карточку — всё самое интересное начинается, когда решаешь сам без всяких архитекторов, тестировщиков и тимлидов что-нибудь этакое написать и заставить работать. Желательно что-нибудь веселое и захватывающее. Игру, например.

Под катом лежат семеро очевиднейших (как мне сейчас кажется) граблей, неожиданно вставших у меня на пути, а потому способных с отличной от нуля вероятностью встать на пути любого, идущего дорогой разработки игр.

Всю свою жизнь я играл в компьютерные игры. Начал ещё в те времена, когда с десяток их помещалось на одной дискете 1.44 Мб. Никогда не понимал тех, кто говорит, что игры — это уход от реальности и повод для излишнего воображения о себе того, чего нет на самом деле. По-моему игры — это тренировка концентрации, разжигание жажды познания, практика в управлении ресурсами и тренажёр целеустремлённости. Неудивительно, что уже в первом классе я точно знал кем стану — программистом. И я им стал.

За те несколько последних лет, что я успел поработать по специальности, мне встретилось много интересных людей. Почему-то больше всего мне запали в душу два программиста, никак друг с другом не связанные; оба они пламенно мечтали изучить мобильные платформы, чтобы затем писать свои приложения. Как позже каждый из них честно признался, в игры ни один, ни другой никогда не играли, не играют, играть не собираются и вообще находят это занятие бестолковым, для малышей. На мой вполне резонный вопрос (заданный чуть ли не при первом знакомстве) что они собираются писать, когда наконец поймут, что готовы взяться за разработку собственного проекта под мобильные платформы, оба без тени сомнения заявили: «игры, конечно же».

Я тоже всегда мечтал выпустить собственную игру. И если бы кто-нибудь сказал мне 20 лет назад, что в будущем не надо будет иметь целый холдинг, чтобы делать это, я бы, наверное, меньше играл и больше занимался.

С момента появления рынка мобильных приложений прошло уже немало времени. Но пока я жил в подмосковье, у меня вечно находились более приоритетные занятия, нежели изучение этих самых мобильных платформ и выпуск приложения хотя бы для одной из них. Сначала я долго копил на телефон на android'е, параллельно заканчивая учёбу и не забывая поигрывать то в Starcraft II, то в Tropico 3; потом весь был поглощён трудом разработчика в разных не имеющих никакого отношения к мобильному рынку компаниях, а вечера неизменно просиживал за World Of Tanks. И вот однажды с моей семьёй случилось чудо, о котором мы давно мечтали — мы с женой и полугодовалым сыном переехали из подмосковья в карельский посёлок с населением в 3 тыс. человек, а работать стали удаленно. Высвободившиеся 4 часа времени, затрачиваемые ранее на дорогу, было решено на этот раз не тратить впустую.

Концепция


Конечно же я решил начать с чего-нибудь попроще, поэтому выбрал для своей затеи игральные карты — они являют собой чуть ли не идеальный тренажёр ООП. Java я к тому времени знал, а вот от любого C-языка меня почему-то воротило, поэтому приложение было решено выпустить под Android. Тем более, что эмуляторам я не очень-то доверял, а единственным моим физическим устройством был HTC Explorer с андроидом 2.3.3 на борту и 20 Мб свободной памяти.

Засучив рукава, я полез в маркет смотреть и сравнивать приложения конкурентов. Признаюсь, первое впечатление у меня было такое, что все эти игры делают те самые мои товарищи — люди, малозаинтересованные в играх. Ну или небольшие конторки, где директор имеет посторонний доход и чтобы капитал вращался, решил выпускать приложения, поскольку это сейчас в тренде — нанял программистов и, считай, готово. За редким исключением все игры выглядели даже на скриншотах как братья-близнецы — неизменный зелёный фон и заезженные картинки на картах точь-в-точь как на реальных.

Я прочитал несколько десятков статей на хабре о том как кто свои дебютные игры писал и заметил, что чаще всего сценарий начинающего игродела выглядит так: он (а в ближайшей перспективе — я) берёт себе какой-нибудь простенький проектик типа крестики-нолики или морской бой, коих в маркете и так навалом (ага, сказал человек, решивший делать очередную карточную игру), делает всё то же самое, что и у всех, поменяв цвета на оранжевый и салатовый (такого нет ни у кого!), затем постит приложение в маркете и вдруг обнаруживает, что его игра никому не нужна. Игродел недоумевает — он ведь потратил силы, ночей не спал, цвета подбирал и тайком даже позволил себе несколько раз перед сном, зажмурившись, подумать: «а может все-таки взлетит?» Он уже безвозвратно и страстно в свою игру влюблен (а как может быть иначе?), забыл о том, что хотел с самого начала выпустить что попроще, без претензии на мировое господство.

Мне в тот момент абсолютно некуда было торопиться, я спокойно работал на своей работе, а проектом решил заниматься по вечерам и на выходных. Я решил никаких прототипов «попроще» не писать, а сразу сделать игру, за которую будет не стыдно и которая даже если не взлетит, то в будущем, откопанная фанатами моей 10ой/79ой/133ей игры, сразу продемонстрирует тот факт, что я с первой же попытки пытался делать что-то особенное. Несколько недель у меня ушло просто на раздумья о том, что будет выгодно отличать мою карточную игру от других. Решение, когда я его нашёл, оказалось значительно проще, чем можно было себе вообразить — я просто решил сделать игру, в которую сам бы с удовольствием играл (кэп одобряет).

Я скачал себе кучу «Дураков» и хорошенько в них поиграл. Выглядело это так: Начинается новая игра. Кладём карты, берём карты, кладём, берём, кладём, берём, изо всех сил стараемся выиграть. Победил — ура! Проиграл — увы. Повторить до бесконечности.

Кто играл в WoT знает, что очень быстро там сам бой отходит на второй план, уступая место игре в прокачку боевой техники. Радость наступает теперь уже не от победы в очередном бою (хотя и это бывает), а от покупки нового танка. Представим на секунду, что все танки в этой игре с самого начала доступны и выбирать можно любой. Интересно играть? Не думаю.

Так и тут — в того же самого «Дурака» ради самой победы хочется играть только первый десяток матчей, потом — надоедает. Вывод очевиден: за победы надо давать деньги. А вот куда эти деньги тратить — другой вопрос, который, кстати, мучает меня до сих пор и к которому я до сих пор нахожу новые и новые ответы.

Можно позволить человеку на эти деньги покупать новые рубашки для карт и новые фоны для карточных стычек. Интересно будет играть? Ну, не так скучно как на «просто так», но на хит пока ещё не тянет.
А что если я не в «Дурака» люблю играть, а в «Кинга»? Вот оно!
Я придумал сделать сборник карточных игр, в котором за каждую победу ты получаешь монеты и на эти монеты можешь открывать новые карточные игры. Запахло уже чем-то верным. Тем более что топовый сборник карточных игр именно так примерно и выглядит, только там новые игры надо открывать за реальные деньги.

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

«Дурак», конечно же. Это самая распространенная, самая, по-моему, любимая в нашей стране игра. Мы в деревне частенько коротаем с друзьями вечерок за этой игрой и чайником зелёного чая.

«Кинг», конечно же. В неё мы тоже играем иногда. К тому же в детстве я упарывался в эту игру под MS-DOS, соперничая с героями «Союзмультфильма» (Вадим Владимирович, моё почтение).

Был ещё один пасьянс, в который я играл-не-мог-наиграться лет десять тому назад на каком-то забугорном флэш-портале. Он назывался «Пирамида», но официальные правила пасьянса с таким названием расходятся с той игрой, в которую играл я. В моей игре класть поверх текущей карты в колоде нужно карту из пирамиды старше или младше по значению на единицу, в результате чего при определённой сноровке и удаче можно снести полпирамиды в один ход. С той игрой десять лет тому назад была, кстати, одна крупная проблема: её логика обрабатывалась на стороне сервера и потому после каждого нажатия страница перезагружалась (сейчас у меня есть подозрение, что не флэш это был — засланец какой-то). Эта игра жутко меня тогда затянула, но так же жутко и раздражала тем, что на одну партию тратилось столько времени. Я пообещал себе в том нежном 17-летнем возрасте когда-нибудь написать себе такую же, но без тормозов. А гештальты, как известно, надо закрывать.

Я начал активно читать в Интернете самые разные материалы, посвященные карточным играм и самим картам. Подобрал тематики мастей для человечков на картах, попытался копнуть в историю самих карт и понять отчего же мне так стыдно кому-либо признаваться в том, что я делаю карточную игру. Я не знаю насколько это только у меня, но по-моему карточные игры считаются какой-то достаточно маргинальной забавой, присущей не самым успешным слоям нашего общества. Впрочем, об этом чуть-чуть и позже.

Почитав в википедии про «Дурака», я был восхищен количеством модификаций к нему (сейчас статью уже отредактировали, модификаций там больше нет, но было штук 50, не меньше). Я решил, что должен во что бы то ни стало сделать хотя бы самые интересные к нему. Я поискал аналоги «Дурака» в маркете, желательно с кучей википедьевских модификаций, но нашёл лишь одного такого «Дурака», и то модификации там были во-первых в большинстве своём платные, а во-вторых можно было активировать не больше одной модификации за раз. А ведь смешивать-то их между собой — самое интересное! Засучив рукава, я решил отобрать наиболее интересные правила (коих получилось больше 20), а также не преминул добавить и своих, чего стесняться-то. Покупать их планировалось, естественно, тоже за выигранные деньги.

Я вообще с самого начала решил, что не буду уподобляться тем, кто установил игры на пьедестал своего способа выживания и потому вынужден брать «за простой дождь — 100 лир, за проливной дождь — 200 лир, за дождь с громом и молнией — 300 лир.» Ведь когда писатель пишет книгу, он в последнюю очередь думает о том как он будет её монетизировать, для него (как и для меня в данном случае, ведь я прямо писатель получаюсь, да-да, творческий человек, вот справка) самое главное — это самовыражение и творческий порыв.
В такой ситуации можно было бы сделать игру и вовсе бесплатной — без рекламы и встроенных покупок, но в этом случае я бы лишил себя удовольствия покопаться в API встроенных покупок и межэкранной рекламы, а также обошёл бы стороной целый аспект разработки мобильных игр под названием «монетизация». Так что я постарался соблюсти баланс — играть должно быть вполне комфортно и без доната, но если вдруг кто-то хочет поддержать разработчика и купить что-то — я только рад. При этом в покупках никакого ограничения на функционал, исключительно экономия времени.

Одна особенность в виде наград за победы, — хорошо, а две — ещё лучше. Я не отказывал себе в удовольствии помечтать о том, что еще можно было бы изменить в карточных играх так, чтобы мне они нравились больше. Я пытался докопаться до самой сути удовольствия от этой интеллектуальной забавы и однажды, отыграв уже сотни партий с друзьями в деревне, я уселся играть за стол с бабушкой моей жены, живущей в Москве. Я был поражён тому насколько игра преобразилась. Вместо тёплой и дружной атмосферы чаепития, происходило какое-то соперничество не на жизнь, а на смерть, и каждая победа или проигрыш воспринимались буквально как триумф или оскорбление соответствено.

В тот момент я понял, что игра в карты это ещё и, как ни странно, общение. Не было бы такого изобилия наших вечерних посиделок, если бы мы не разбавляли поединки беседой и шутками, не ели параллельно фрукты и не слушали какую-нибудь музыку. Я сразу же вспомнил Mario's Game Gallery и Wild Board Games, где противники комментировали вслух происходящее на доске или столе. Что может быть приятнее возгласов жертвы, загнанной в угол?

Благодаря Марио, кстати, вспомнил я и ещё одну преинтереснейшую игру, в которую играл в его галерее — Go Fish! По-русски эта игра называется «Сундучки» и в нашей стране в неё играют несколько иначе. Суть этой забавы, если кто не знает, сводится к угадыванию наличия на руке у противника карт определенного значения. Угадал — получаешь их себе. Нет — очередь твоего противника. И в то время как за рубежом угадывают просто значение карт, у нас нужно ещё назвать их количество, цвет и масти.

Я решил, что в моей игре противники будут разговаривать, комментируя происходящее за столом. Такого уже не было ни у кого и тянуло на действительно исключительный продукт. Теперь настало время придумать — кто будут эти противники? Я начал раздумывать о том кто они обычно — люди, играющие в карты. Профессиональные картёжники. Пенсионеры. Шпана уличная. Студенты на лекции. Аристократы с сигаретами в мундштуке. Бездомные на лавочке в сквере.
Я хотел бы, чтобы у игры был смрадный и мрачный дух подпольного заведения, околонуарный стиль как в настольной игре "За бортом". А ещё я хотел меткое и броское название для своей игры, почти что торговую марку; название, за которое было бы не стыдно и которое я смог бы с гордостью произносить. И после нескольких дней мучительных раздумий я его нашёл — «Картёжный дом».

Объём этой затеи вызывал скепсис у тех, кому я пытался её в двух словах описать. Ведь если этого нет в маркете, значит это не так-то просто сделать, не так ли? «Да ты будешь годами свою игру писать» — говорили мне. — «Бросишь на полпути». Все эти беспокойства за меня и мою затею можно было понять. Мне же самому оставалось только повторять себе, что торопиться мне некуда, что у меня осадная тактика, что с работы я ради этого не увольняюсь, просто решил заменить ежевечерние покатушки в танчики разработкой.

Первая итерация наивности: никакой графики


Первая итерация наивности была у меня с первой версией игры, на которую ушло около двух-трёх недель. Работал я над проектом в свободное от работы и домашних дел время, а в условиях пока лишь только изучения платформы, работа шла и вовсе еле-еле. Хорошо если за вечер мне удавалось сделать хоть какую-то одну законченную игровую функцию.

Я, кстати, не умею рисовать. Вообще. Вдаваться в подробности, объясняя насколько всё плохо я смысла не вижу, поскольку так смотрю — у многих программистов есть эта черта. Вот я и решил, что напишу чистый функционал, а потом прикручу графику. Карты в руке стали у меня списком кнопок в виде LinearLayout, а всё происходящее — TextView с кратким описанием произведённых ходов.

Я понимаю, это глупость полнейшая и вряд ли у кого-нибудь хоть когда-нибудь хватит ума поступить так же — любой понимает, что надо рисовать хотя бы серыми картинками. С другой стороны, если у меня возникла в голове такая идея, то есть ненулевая вероятность, что то же самое произойдёт и с кем-то ещё. Вот мой совет таким людям, как я полтора года назад: не делайте так. Вам придётся переиначивать весь модуль управления, ловя куда нажал пользователь и определяя что он этим хотел сказать. Вам придётся вводить задержки между обработками ввода и выполнением соответствующего отклика, чтобы дождаться окончания анимации, которой у вас сейчас нет. Учитывая, что всё это придётся делать, разрывая и зашивая уже готовый код, поверьте мне, это будет болезненно.

Мне повезло осознать это достаточно рано и не переделывать куски уже существующего кода, а просто стереть всё и начать заново в тот момент, когда я понял, что в процессе нападения надо дать возможность ходить несколькими картами. Любое решение в этой ситуации в условиях карт в виде кнопок было бы обречено — в итоговый релиз оно бы не вошло, а время отняло бы.

Вторая итерация наивности: я сделаю всё идеально, а спорное — вынесу в настройки


Эта итерация на самом деле объединила в себе сразу две моих наивных точки зрения. Общее же у них то, что обе ошибки описаны в книге Алана Купера «Психбольница в руках пациентов». Поэтому наиболее общим советом было бы — читайте книги на разработческие и околоразработческие темы. Многие и многие ошибки, которые вы допускаете или собираетесь допустить, кем-то давным-давно обнаружены, надо лишь взять в руки книгу и позволить этому кому-то вас предупредить. К тому же — это отличное развлечение — внимать тем, кто понимает твои дрожащие руки и бессоные ночи в попытке создать шедевр.

Впрочем, обо всем по порядку.

Я не стал связываться с android-шаблонами, а решил делать всё на чистом canvas'е, разделив соответственно программу на два потока — поток управления и поток отрисовки. Свой выбор я могу объяснить тем, что мечтал (и так и не добрался до того, чтобы) ввести визуальные искривления в игре, а для подобного подхода стандартная приложеньевская разметка, как мне казалось, ну никак не подходила.

Когда с третьего раза у меня наконец-то начало что-то получаться, я нарисовал пустую карту и стал выводить текстом на ней её масть и значение. Мой успех вскружил мне голову. Я решил во что бы то ни стало сделать всё так, чтобы люди ахнули от удобства и идеальности моей игры. Я никогда к тому времени не держал в руках ни одно устройство от Apple, но слышал от нескольких людей, что там всё потрясающе удобно и органично. Решив сделать всё не хуже (и даже тайком мечтая о том, что люди будут переходить с буржуйского Apple на Android просто ради моей игры (ха-ха, ха)), я решил, что не нужно никаких кнопок «Взять» или «Бито». Достаточно просто потянуть карты на столе на себя или в сторону соответственно.

Я старался сделать игру максимально реалистичной — думал даже заставить проигравшего тасовать колоду руками и раздавать карты, но решил эту штуку отложить на потом. А вот что я действительно сделал, так это то, что карты клались в любое место стола. В результате, конечно же, возникала ситуация, когда более поздние карты ложились поверх уже побитых. Я долго отлаживал механизм запрета этого действия, но поняв, что компьютер рано или поздно всё равно может нечаянно так сделать (в том случае если двое сразу будут подкидывать карты, выбрав одни и те же конечные координаты анимации), добавил возможность нажать на любую карту, отчего та всплывала под каким бы количеством карт уже не находилась.

На такие мало что значащие мелочи у меня ушло достаточно много времени — около двух месяцев. Я пытался довести простейшего «Дурака» до состояния идеальности, прежде чем двигаться дальше, хотя впереди работы было ещё очень и очень много. От этого разрастался и код класса, отвечающего за отрисовку, и код контроллера управления со стороны игрока.

Позже я прочитал об этой особенности программистов у Купера. Он пишет, что если есть даже мизерно малая вероятность, что какое-то событие произойдёт, программисты всегда тратят время на то, чтобы сделать что-то для этой ситуации. Даже если вероятность события один к ста миллионам и оно не более чем мягкое неудобство, а время на то, чтобы разработать код специально для этого случая займёт две недели, разработчики всё равно стремятся покрыть все события, имеющие отличную от нуля вероятность.

Это, конечно, очередная глупость с моей стороны — недальновидная и упрямая упоротость. Учитывая, что мне предстояло навернуть ещё целую кучу модификаций на рисовалку и управлялку «Дурака», следовало сосредоточиться прежде всего на этих режимах, а уж потом на каких-то частных и редких случаях управления и отрисовки. Мой же подход противоречил в том числе и закону Парето, призывающему (в моей вольной трактовке) сосредотачиваться первым делом на наиболее важных аспектах. Как сказал Макконнелл в «Совершенном Коде»: «Скульптор всегда сначала создает грубую форму будущей скульптуры, а уж потом принимается за детали. Принимаясь же в первую очередь за детали, вы рискуете либо в ходе дальнейшей разработки выкинуть код, над которым трудились дольше, чем нужно было, либо — что еще хуже — оставить плохой код в проекте, пожалев его, ведь вы столько над ним работали».

Могли бы мои пользователи играть в «Дурака», если бы у них иногда нижние карты закрывались верхними? Могли бы. А могли бы они играть в задуманную мною игру, если бы в ней не было модификаций «Дурака»? Нет, не могли бы.

Поэтому третий мой совет себе и подобным мне (кэп гордится мною): сосредоточьтесь на главном, мелочи навернуть никогда не поздно. Если боитесь забыть про эту фишку или особенность — запишите себе куда-нибудь.

Сюда же, в эту же итерацию я положу и свою жуткую привычку, от которой почти уже избавился, — во всех спорных вопросах предоставлять выбор пользователю в настройках. В моём случае всё еще хуже, ведь любое раздвоение в трактовке модификаций я интерпретировал как новое правило.

Так, например, в Подкидном докладывать атакующие карты на стол должен первым делом атакующий, если же ему докладывать больше нечего, по часовой стрелке и в строгой очередности докладывают другие игроки. В жизни же я видел совершенно иные условия — карты на стол клали все подряд, не соблюдая никаких очередей. Кто успел, тот и съел. Какой вариант лучше? Да оба! Так появились «Подкидной» и субмодификация к нему — «Советский» (когда при подкидывании соблюдается строгая очерёдность). Однако это ещё не самый страшный случай.

Больше всего мне стыдно за «Пустого» «Дурака» (карты берутся из колоды только в том случае если карт на руках не осталось вовсе) и его субмодификацию «Фальшфеерный» (карты берутся сразу же как только закончились). Я просто не мог решить как лучше и не смог найти нигде информации о том в какой момент выдаются карты — сразу же по окончанию их в руке или в конце хода. «Ок, — решил я. — Разделим на две модификации». Стыд и позор.

Позже я прочитал об этом у Купера. Он утверждает, что любой спорный вопрос разработчики склонны выносить в настройки, но это в корне неверная позиция — если создатель программы не может решить как лучше, то уж пользователь точно не будет этот вопрос решать.

И я лишний раз убедился в этом, когда недавно обнаружил, что в классическом 2048, в настройках оказывается можно выбрать поле 5х5. Признаться, обычно я в любой игре первым делом лезу в настройки. Но в мобильных приложениях все настолько стремительно, так часто ты достаешь телефон на какие-то пять минут, пока ждешь чего-то, что не до настроек. Поэтому разработчики, не знающие как сделать лучше, и решающие сделать и так, и так, а выбор предоставить в настройках, вот мое к вам обращение: вы все равно делаете этот выбор, выбирая дефолтное состояние. Предоставлять альтернативу или нет — решать вам, но помните, что большинство людей до настроек и альтернативного варианта скорей всего просто никогда не доберутся.

Третья итерация наивности: я взялся сразу за самый крупный кусок


Прошло полгода, я закончил «Дурака» со всеми 40 модификациями и субмодификациями, которые для себя выбрал. Начался отпуск и весь его я просидел, отлаживая и доводя до ума эту каракатицу. При этом накопившаяся усталось давала о себе знать — иногда, если я видел ошибку, я просто вставлял ещё один if, не вникая в суть того, что здесь не так, так мне хотелось поскорее уж закончить. К тому моменту я что-то подотчаялся и собирался уже было выпускать одного только «Дурака» с модификациями.

К этому времени классы «Дурака» разрослись до неимоверных размеров, стали шаткими и нагромождёнными. Я подсчитал, что с учётом всех ограничений на сочетания модификаций, количество вариантов правил составляет более 11 млрд комбинаций. Естественно, что о тестировании всех вариантов не могло быть и речи. Поэтому известная парадигма «ладно, тут мы закончили, остальное поймаем на этапе тестирования» просто не работала. Мне приходилось умозрительно для каждой модификации перебирать в уме все остальные и думать где может возникнуть коллизия. Уверен, что абсолютно всё я так и не отловил, ведь мне следовало бы пройтись в том числе по всем сочетаниям, когда модификаций одновременно три, четыре, пять и так далее.

Надо отметить, что к моменту окончания работы над «Дураком» концепция этой игры на глобальном уровне претерпела значительные изменения. Я стал рассуждать о том что может подтолкнуть человека покупать новые модификации и пришёл к выводу, что ничего кроме как бонус к победным деньгами. Тут, конечно, многие мне могут возразить, что естественным двигателем является интерес к геймплею, а не приз, но начав перебирать модификации в уме, я первым делом прошёлся по тем из них что увеличивают количество карт в колоде и пришел к выводу, что сам ни за что не стал бы играть двумя колодами за те же победные деньги. Ведь заработок в этой ситуации, поделенный на время, уменьшился бы. Поэтому я постарался примерно оценить увеличение не только времени, но и сложности; как-то справился с тем, чтобы цена модификации соответствовала увеличению прибыли в процентном соотношении и внедрил эти коэффициенты повышения заработка. Однако в этой ситуации всплыла сложность: я не мог позволить игроку включать купленные единожды модификации, поскольку это в скором времени привело бы к бардаку со всеми одновременно включенными правилами и огромными заработками. Поэтому в качестве ограничителя я решил ввести жетоны. Один жетон — одно активированное правило (при условии, что оно куплено). Жетоны выдавались по одному за каждую победу в «Дурака» и в случае проигрыша все активированные правила сбрасывались (позже я счел такой подход слишком жестоким и немного изменил правила отключения модификаций при проигрыше, но это уже такие мелочи, до которых мы тут опускаться не будем).

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

С покупкой модификаций все было тоже не так-то просто. Нельзя было — и я это понимал — просто дать линейный список модификаций и позволить покупать любые. Иначе человек купил бы все интересные ему правила, на остальные бы просто забил, изучив их суть и умозрительно сыграв партейку в них. К тому же меня всегда привлекали всяческие блок-схемы развития. В этом плане схема развитя техники в WoT мне всегда нравилась куда больше, нежели параллельная схема покупки уровней и техники в Hill Climb Racing. Поэтому я разработал схему развития модификаций, постаравшись объединить ветки по тематикам и засунуть в самый конец наиболее радикальные искривленя правил игры.

Однако если с модификациями все было еще куда ни шло, то вот с соперниками, аренами и рубашками было очевидно, что никто их покупать не будет. То есть будут, но только после того как исследуют все влияющие на игру изменения правил. Я бы по крайней мере именно так и поступил — сначала функционал, потом только красОты. И если с соперниками шанс еще какой-никакой был, ведь это новые фразочки, разбавляющие игру, то с рубашкам и фонами проблема была более чем очевидна. Один раз залезли бы посмотреть какие есть варианты и больше не возвращались. Поэтому я ввел такое понятие как «Лотерея» и начал разыгрывать не влияющие по сути на геймплей элементы в ней. «Лотерея» появлялась у меня после определенного количества побед. Таким образом в моей игре появились вещи, которые нельзя было просто купить за деньги — их можно было только выиграть путем длительной игры.

После третьего разработанного мною экрана — «Лотереи» — я наконец-то понял основные моменты, которые использовал на каждом из экранов и написал абстрактные классы, выполняющие все типичные действия. Работа над «Пирамидой», «Сундучками» и «Кингом» пошла значительно быстрее — на них всех ушло около 6 месяцев ежевечерних упражнений. К тому времени я и сам поднабил руку, выработав подход и решения для типичных задач вроде анимации или переключателей режимов отрисовки. Тем не менее, система продолжала предподносить сюрпризы.

Так например, я с ужасом обнаружил в какой-то момент, что механизм анимаций и отложенного выполнения у меня слишком уж тяжеловесный.
Я сразу решил, что проверять в потоке рисования долетела ли анимируемая карта, а потом вклиниваться в поток управления и выполнять какое-то логическое действие, неправильно. Поэтому я делал так — с одной и той же временной константой вызывал анимацию и запускал отложенное действие. Это отложенное действие наследовалось у меня от AsyncTask'а, в котором onBackground выполнялось Thread.sleep(), а onComplete — то, что мне нужно сделать.
Таких отложенных действий в каждый момент времени выполнялось у меня с десяток, основными потребителями были, конечно же, противники. Они думали какой картой пойти или какую подбросить; автоматически после каждого прикосновения к экрану они ждали, что уж это-то прикосновение последнее и ближайшие полчаса ничего происходить не будет, поэтому нервно поглядывали на таймер, чтобы с определенной минуты начать вопить: «Эй, ты где там?»; параллельно с этим они следили за тем на каком действии игрока игра застопорилась, чтобы крикнуть: «Эй, карты побей» или что-нибудь в этом роде. В результате, с ростом количества отложенных действий (и противников) система просто начинала жутко тормозить, а то и вообще отваливалась. Оказалось, что андроидовский AsyncTask в своем doInBackground действительно кушает ресурсы и эта функция там не просто так, в нее надо что-то запихивать — получение ли данных с удаленного сервера или какие-то параллельные вычисления, а не пустое ожидание. Поэтому отнаследованный от AsyncTask'а класс я переписал, после чего все проблемы с производительностью исчезли:
public abstract class Action {    
    protected int interval;    // интервал, через который рванет
    private boolean cancelled = false;    // флаг отмены действия

    public Action(int interval) {
        this.interval = interval;
    }

    public void cancelTask() {
        this.cancelled = true;
    }

    public void execute() {
        new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (!cancelled) {
                        actionAction();
                    }
                }
            }, interval);
    }

    // непосредственно действие
    protected abstract void actionAction();
    
    // фабрика клонирования этого отложенного действия
    public abstract Action copyForDelayedExecute();

}


Впрочем, я отвлекся.

Очевидно же, что начни я с «Пирамиды», к которой не предполагалось никаких модификаций, и опыт написания движка от начала и до конца был бы у меня куда раньше. Глядишь, и архитектруа «Дурака» была бы не такой грязной. Я бы успел узнать много нового о том как следует писать систему, а в случае чего мог бы без проблем «Пирамиду» впоследствии и переписать. Начав же с «Дурака», я нагородил в нем кучу ошибок по неопытности, но таки заставил его работать, подперев со всех сторон чем мог и теперь боялся на него дышать.

Поэтому еще одно правило, добытое кровью и потом, для всех, кто только начинает: среди подобных друг другу крупных элементов начинать надо всегда с наименьшего.

Прочти я этот совет с год назад, я бы сказал: «ну это понятно, только вот я хочу сначала справиться с самыми тяжелыми элементами, чтобы на потом оставить что попроще. Таким образом, когда я закончу с этим большим и разветвленным алгоритмом, до победного конца останется уже всего-ничего». Так-то это так, только вот с ненабитой рукой тяжеловесный и разветвленный алгоритм пишется хуже. «Дурака и „Пирамиду“ в этой последовательности в сумме я писал почти год. Начни я с „Пирамиды“ и общий срок составил бы всего каких-нибудь 7-8 месяцев.

К тому же, берясь за самое тяжелое с самого начала, есть шанс попросту отступиться, не справившись. И это будет куда хуже, нежели после уже созданного частично кода, наткнуться на непреодолимое препятствие. Совершенные к тому моменту подвиги подтолкнут к поиску компромисса, в то время как отсутствие успеха за спиной может заставить руки просто-напросто опуститься.

Четвёртая итерация наивности: полировка много времени не займёт


Чуть только я успел дописать последнюю, четвертую игру, как поспешил объявить семье и друзьям, что до выпуска осталось совсем чуть-чуть — каких-нибудь несколько недель. Этих друзей, посвященных в то, что я что-то пишу, было совсем немного, вопреки моей привычке всем обо всем рассказывать. Я с самого начала чувствовал, что треща налево и направо о том, что собираюсь сделать, я лишаю себя сил на то, чтобы делать это. Однако чем ближе был релиз, тем меньше мне требовалось моральных сил на то, чтобы закончить. Проект набрал вес и как снежный ком чуть ли не сам по себе катился к выпуску. Его по-прежнему надо было каждый вечер толкать, но выпуск был просто неизбежен.

Ради прикола я решил не стричься вплоть до выпуска игры. Учитывая нехилого размера лысину на моей голове, это решение было более чем поспешным. Зато у меня появился повод для разговора с односельчанами — каждый раз, когда меня спрашивали когда я уже постригусь, я говорил что когда выпущу свою игру. Большинство крутило пальцем у виска, но мне было все равно, я не лишен эксцентричности.

На полировку игры ушло ещё около двух месяцев. За это время волосы на моей голове успели разрастись до такой степени, что продавцы в магазинах вставали на защиту товара, когда я заходил в помещение. Я выглядел как бомж. Голова жутко чесалась особенно в жару, но в этом был и определнный плюс. Не раз и не два я, желая послать всё к чертям и лечь спать, видел свою тень или чесал свою ставшую уже уродливо волосатой голову и садился-таки программировать, напившись кофе, потому что понимал, что кроме меня некому закончить мое детище. А чем быстрее случился бы выпуск — тем быстрее я постригся.

Мотивация — вообще отдельная тема. Многие мои друзья и знакомые говорят мне, что не смогли бы полтора года изо дня в день делать какой-то проект после работы. Я их понимаю, но мне повезло с ментальными трюками, которые я понавыдумывал, чтобы успешно обхитрить самого себя.

Начнем с самого начала — первым делом я перестал играть в игры. Вообще. Я не начал программировать и на игры стало не хватать времени, а я именно целенаправленно перестал играть в игры. Эффект был похож на низкочастотный плотный гул в воздухе после выключения колонок, только что игравших что-нибудь жутко басовое. Мне действительно не хватало развлечений в жизни по вечерам. При этом каждый раз когда мне хотелось сесть и поиграть во что-нибудь, я говорил себе, что вот она — самая интересная игра в моей жизни — выпуск собственной игры. Весь этот самоменеджмент, продумывание архитектуры и смысла игры, борьба с багами в качестве потока нескончаемых квестов. И со временем, по мере того как начало получаться, я действительно начал втягиваться в разработку, она стала моей игрой. При этом, подобно разнице между жирным фастфудом и легким салатом с отварной курицей, игры создавали удовольствие здесь и сейчас, оставляя дурное послевкусие ничегонеделанья назавтра, разработка же поначалу может быть и не доставляла столько быстрого удовольствия, зато всю ночь после этого и следующий день я ощущал себя героем. Это было счастье куда более тонкое и долго тянущееся, более высшего порядка, если хотите.

Я заставил себя все мысли сводить к своей игре. Наверное когда-нибудь мой психоаналитик поцокает языком и покачает головой на эту мою затею, но я приучил себя всегда думать только о своем проекте, буквально повернулся на нем. Если я видел дорогие машины, то сразу же говорил себе что и у меня такие будут, надо только много работать, а для начала — выпустить собственную игру. Если видел зарубежные страны, то говорил себе, что обязательно побываю там, но только после того как выпущу свою игру и добьюсь этим чего-то. Если видел плотно сидящих людей, дружелюбно о чем-то беседующих, то убеждал себя, что сделаю и это, но сначала — свой проект.

Ни дня без строчки! Кажется, так называется эта методика. Я, правда, прочитал о ней совсем недавно на хабре, до этого же я нащупал ее как-то сам. Суть ее была в том, что после одного дня разработки пропустить следующий вечер не так уж сложно, а вот после недели ежедневного программирования нарушение этой традиции серьезно бьет по психике на следующее утро. Привыкший к одним и тем же рельсам мозг по привычке скатывается в „я тоже это сделаю/получу, когда выпущу свою игру“, затем вспоминает что вчера ничего сделано не было и происходит болезненный разряд мозгом в мозг. Я со временем стал бояться вечером не сесть за разработку. Потому что в этом случае весь следующий день жутко мучался совестью и болел, скатываясь на свои привычные рельсы „сначала проект“. Иногда, когда сил вечером совсем не было, я просо запускал Idea (в которой приноровился писать) и сидел перед ней пару минут, затем шёл спать. Так два или три раза мне удалось обмануть себя, избежав наказания.

Я очень быстро перестал вообще употреблять алкоголь, поняв, что не могу толком ничего разрабатывать под его действием, а в случае пропуска хотя бы одного вечера разработки на утро вместе с похмельем меня ждала мучительная моральная расплата. Я пробовал программировать рано утром, вставая на несколько часов раньше семьи, но тогда весь день я думал только о своём проекте, а не о работе. Такой вариант меня тоже не устраивал.

Наконец, чем ближе к выпуску, тем отчетливее я осознавал, что никто кроме меня этот камень в гору не вкатит. Жена помогала мне, рисуя картинки, но всю основную работу выполнял я сам и был этим очень рад. Наконец-то я нашел свое призвание и чувствовал себя на своем месте, ведь каждый день двигался на шажок вперёд; мозг мой при этом получал полный спектр удовольствия от решения возникающих квестов и выработки стратегии победы того или иного нововведения при вводе его в механику игры.

Вообще, конечно, мне повезло с самого начала настроиться на лад каменоломни огромной скалы киркой. Каждый день я делал малюсенькую часть всего огромного проекта. При этом оглядываясь на вчера и заглядывая в завтра, мне казалось, что я топчусь на месте. Однако в перспективе нескольких месяцев прогресс был виден. Я не торопился, не стремился во что бы то ни стало каждый день совершать подвиг. Тихо и спокойно, как сборщик риса, медленно, но уверенно, твердо маленькими шажками двигался вперёд.

Возвращаясь же к этой итерации моей наивности, я хотел бы отметить, что как бы хорошо не был написан каркас и основной код, доработка всяческих мелочей займет куда больше времени, чем вы предполагаете. Всегда.

Пятая итерация наивности: я думал, что хороший продукт сам себя продаст


Я старался читать множество материалов на перспективу, в том числе о продвижении. Знал о том, что пресс-релизы надо рассылать в день выпуска игры. Читал и о том, что надо практиковать выкладывание материалов по игре заранее, в том числе для того чтобы как можно раньше узнать отклик публики и если что вовремя сменить курс разработки. Однако все эти материалы казались мне какими-то не совсем соответствующими нашим отечественным реалиям.

Я ведь понимал, что выпускать англоязычную версию моей игры одновременно с русскоязычной просто не имеет смысла. За рубежом не играют в „Дурака“, а многочисленные фразочки моих героев сводили на нет попытки перевести игру самостоятельно. Я помню как сел и за пару дней написал в тетрадке кучу забавных возгласов. Затем я, пока только переписал их в файл текстовых ресурсов, потратил весь вечер. У меня получилось около 20 тысяч знаков чистого текста в игре — такое не под силу перевести самому, с моим-то английским.

При этом, будучи сам своим основным потребителем, я всё время задавался вопросами — было бы мне интересно почитать об игре, которая выйдет через полгода и которую нельзя скачать прямо сейчас? Да я бы забыл о ней тут же. Очень красноречивый комментарий был недавно к одной из статей на хабре по геймдеву — человек, ожидая в перспективе выхода своей игры, выложил схему её архитектурного решения. Единственный комментарий, который ему оставили: „где сама игра?“ Такова суровая реальность — трейлер к Fallout 4 кто-то с удовольствием посмотрит, переминаясь с ноги на ногу в ожидании выпуска; noname'овскую же игру, которая к тому же еще не готова, все будут в упор не замечать, как соловьем не разливайся. Если так уж и быть тебе повезет кого-то заинтересовать своей игрой, тащи его скорее в маркет, суй в лицо кнопку „Установить“, пока он не передумал или пока его мама не позвала есть щи.

Что же касается комментариев потребителей и смены курса, то тут очень уместна цитата Генри Форда: „Если бы я спросил людей, чего они хотят, они бы попросили более быструю лошадь.“
К тому же нельзя ведь надеяться, что человек, высказывающий своё мнение и ожидающий ответа разработчика, согласен с тем, что его предложение неуместно или портит общую концепцию. Даже на то, чтобы его предложение было поставлено в очередь он не очень-то согласен; здесь и сейчас, раз уж он поделился с тобой своими соображениями.
Они хотят, чтобы в Hill Climb Racing можно было кепочку менять и цвета машин; хотят, чтобы денег давали больше, а выиграть было проще. Кармические законы не позволяют мне проигнорировать неуместное предложение, оставив вопрос, заданный мне, висеть в воздухе. Врать же я не желаю все по тем же законам морали и потому считаю, что обратный отклик интереснее получать на уже сформировавшийся продукт, который в моем случае является скорее концептуальным произведением, нежели открытым для правок проектом, действующим по принципу „любой каприз, лишь бы вы скачали, поставили оценку, а лучше что-нибудь купили“.

По всем вышеперечисленным причинам о моей игре, ее названии и концепции вплоть до самой даты выпуска не знал никто, кроме жены. На финальной стадии подключился alexusPro и дал ворох ЦУ, по которым я быстренько изменил пару интерфейсных моментов, отложив выпуск еще на неделю. А так даже обращавшим внимание на мои патлы односельчанам я вынужден был отказывать в ответе на вопрос „о чем хоть игра?“.

И вот час икс настал. Я откладывал этот момент на неделю вперед трижды, понимая, что в сравнении с полутора годами, еще одна неделя — ничто. В одной из статей по маркетингу я прочитал, что вторник — плохой день для запуска, а пятница — самое оно. Поэтому если я не успевал к текущей пятнице, то переносил запуск на неделю вперед. Я понимал как легко запороть всё, выпустив свой проект, как школьник, лишь бы уже только выпустить, со скомканным концом или недоделанным багом, и потому каждый раз, когда голова моя чесалась, требуя выпуска немедленно, а я понимал, что не всё еще сделано, я говорил себе, что, видимо, не на этой неделе и переносил запуск.

Первым делом после выпуска я разослал новость о том, что выпустил свой проект по друзьям и знакомым в контакте, в скайпе и в hangouts. Личными сообщениями, только тем, кому это могло быть интересно. К моему удивлению, из тех, кто установил приложение и не промолчал (а таких было большинство), никто не сказал, что плохо, всем очень понравилось. Трое или четверо и вовсе сбились в плотный костяк тестировщиков и начали методично играть, забрасывая меня возникающими ошибками или предложениями по улучшению. Играют они в мою игру до самых нынешних пор (хотя пошла уже третья неделя с момента выпуска), непомерно удивляя меня этим. Многие люди из тех, кто, не стесняясь, может сказать в лицо человеку, что у него ничего не вышло, имеющие полное на то право и даже склонные к этому, почему-то тоже похвалили мою игру. Видимо, она получилась не такой уж и плохой.

Многие писали мне о том, что их жутко (как и меня в свое время) затянула „Пирамида“. Конечно же не обошлось без людей, которые спрашивали у меня то, что и так есть в инструкции (да кто их читает-то?) просто потому, что позвонить мне проще, чем разбираться самому. Очень быстро обнаружилось и 5-6 общих у всех проблем вроде непонятного момента с опусканием жетонов для активации правил или атакой сразу несколькими картами. Подобные вещи я старался выписывать в отдельный файлик и как можно быстрее исправлять.

Об ошибках-прям_ошибках я даже не говорю. Уже с год как к моей игре была прикручена ACRA, чтобы я мог не у компьютера тестировать игру и при этом отслеживать stacktrace ошибки. Заодно узнал у кого из друзей и подруг какой аппарат.

Всего с 40 разосланных сообщений я получил около 20 установок.

Я нашел в этой статье таблицу ресурсов, куда следовало бы написать о том, что я выпустил игру. Я, правда, был значительно ограничен в использовании этого списка, поскольку игру выпустил пока только в России, Беларуси и Казахстане. Тем не менее, это тоже дало определенный прирост установок, хотя и тут я умудрился налажать. Дело в том, что заветную кнопку „Опубликовать“ я нажал в пятницу вечером, 5 июня, и пока Google одобрил мой apk, проиндексировал игру и начал выдавать ее по поиску, прошло часов 12-14. То есть игра появилась в маркете утром в субботу. Естественно, что в этот момент большинство людей уже было на дачах и потому даже мои вялые попытки пропиарить игру на каких-то андроидных ресурсах разбились о тотально пустующий рунет. Когда же наступил понедельник, на том же trashbox'е прямо с утра вывалили такое количество новостей, что моя игра оказалась аж на третьей странице, куда, понятное дело, редкая птица долетит.

Есть два ресурса, которые бы я однозначно рекомендовал для публикации: androidpit.ru и android4all.ru. И там, и там на форумах есть либо специализированный раздел „Оцените мое приложение“, либо раздел „Игры“, куда не возбраняется написать о своей игре. В сумме два этих ресурса, ведущие учет просмотров страницы с игрой, дали мне около 200 (ого! неужели целых 200?) потенциальных посетителей — тех, кто узнал о существовании моей игры.

Я еще догадался запостить игру на двач, в раздел gd (gamedev), где меня быстренько облили дегтем за графику (как же без этого) и пуфнули перьями в меня. Тем не менее и там нашлись те, кому игра пришлась по вкусу.

И… всё. О существовании моей игры на данный момент знают около 300 человек, 500 — максимум. При этом у меня около 150 установок, из них около 60 активных. Пф, скажете вы? Ну да, не тысячи инсталлов. Но лично для меня мысль о том, что около 40 абсолютно незнакомых мне людей поставили себе мою игру и до сих пор не стерли, представляется прямо-таки чудом каким-то.

Я могу так легко прогнозировать количество людей, которые хоть раз видели мою игру, просто потому что в поиске кроме как по запросу „Картёжный дом“ мое приложение не представляется возможным найти. Даже по „Сборник карточных игр“ я ниже 120-го места, чего уж говорить о „Дураке“ или тем более „Кинге“. А чего я хотел с 100-500 установками? Ну, если можно, то я хотел бы, чтобы мой „сборник карточных игр“ был в первой десятке по этому запросу, поскольку сборников карточных игр в маркете не так уж и много. И, кстати, если набрать „Сборник карточных игр“ с кавычками (то есть искать фразу целиком, а не отдельные слова) то в первую 10ку я действительно вхожу.

Раз уж вы спросили, то я бы ещё хотел, чтобы установки в маркете нельзя было покупать, продвигая наверх списка в поиске не самые удачные игры. Но это опционно, кому-то наверняка такое положение вещей кажется вполне честным. В конце концов, если типичные предприниматели вынуждены вкладываться в помещение, сотрудников и оборудование, с чего я решил, что есть в мире такая сфера, где деньги и популярность делаются из воздуха с помощью компьютера и головы?

Так что вот мой очередной совет, делайте с ним что хотите: не думайте что ваше приложение кому-нибудь нужно. Серьезно. Многие из тех, кто сейчас читает эти строки, как и я полтора года назад, думают: „у меня особенное приложение, аналогов которому на рынке нет“. К сожалению, Google еще не придумал такую галочку, как „уникальное приложение“, а потому ваш труд скорей всего будут искать через поиск. Так вот, друзья, даже если вы придумали отличный конвертер размера колготок в количество килограмм картошки, помещающейся в них, и аналогов вашему приложению в маркете нет, то перед этим вашим ноу-хау в поиске все равно будут сначала все приложения про колготки, потом про картошку, потом про килограммы, потом про размеры и только в самом конце это самое ваше приложение, которое, повторяю, никому не нужно.

Я бы хотел сюда же еще заметить вот что: я не рассчитывал на быстрый рост установок, снова выбрав осадную тактику. Я знаю кто мой потенциальный пользователь — усатый 40-летний дядька, который только что купил себе первый планшет и из игр знает только домино и „Дурака“. К сожалению, на данный момент он мою игру в маркете просто не найдет вопреки тому, что я говорил себе все эти полтора года, мол, популярность приложения будет медленно, но верно расти.

Шестая итерация навиности: я думал, что отдохну после выпуска игры


Знаю-знаю, я много раз читал об этом — с выпуском игры всё только начинается. Люди начинают комментировать, баги надо править, статьи писать, а проект развивать, иначе очень скоро ты выпадешь из гонки, о тебе забудут. Расслабляться некогда.

Но лично для меня дело стало даже не совсем в этом. Я почти год кормил себя сказками, что жизнь поменяется, когда я выпущу этот проект. Что какие-никакие инсталлы пойдут и я смогу расслабиться и хоть раз спокойно прокатиться на велосипеде или поиграть в Mortal Kombat без острого жжения в груди от того, что теряю время, в то время как проект стоит на месте. Я выпустил проект и… катарсиса не наступило. Игра не появилась в маркете мгновенно, поэтому момент нажатия „Опубликовать“ я никак не могу признать тем_самым_моментом. Момент появления в маркете игры — тоже, поскольку у меня не было такого, чтобы только что игры не было в маркете и вот она появилась, а через несколько часов уже первый отзыв и первая сотня инсталлов.

Иногда мне кажется, что мне было бы значительно легче, если бы мои друзья и бывшие коллеги сказали, что все плохо и никуда не годится. Если бы о моей игре узнали 10 000 человек, из них 2 человека скачали бы, что говорило бы о провальной изначально идее. Или если бы из 1000 инсталлов у меня было бы 3 активных, что говорило бы о том, что игра просто сама по себе никуда не годится. Здесь же проблема в том, что о моей игре никто просто не знает. Это одновременно не дает мне успокоиться и хотя бы недельку не притрагиваться к проекту, и в то же время не отвечает на самый интересный для меня вопрос: „ну как?“ Запуск случился, но облегчения я не чувствую.

Совет тут очевиден: если вы долго над чем-то работали и вот-вот уже выпуск, а после выпуска вам хотелось бы отдохнуть, то как только готовы будете нажать кнопку „Опубликовать“, скажите себе „стоп“ и недельку отдохните, потом запускайтесь.

К сожалению, это не совсем честный совет, поскольку я сам месячной давности ему бы не последовал. Я сказал бы, что не могу больше ходить с этой отвратительной шевелюрой и должен во что бы то ни стало выпуститься прямо сейчас. Шучу. Я бы сказал, что всю эту неделю не смогу не трогать проект, что если я решу недельку отдохнуть, то всю эту неделю буду тестировать и допиливать, никакого отдыха не выйдет. Что ж, людям с подобной одержимостью я бы посоветовал постараться избавиться от компьютера физически хотя бы на пару дней и только потом выпуститься. Сил, обещаю, будет куда больше, когда посыпятся комментарии друзей и график установок поползет вверх. Это особенно актуально в том случае если в отличие от меня вас ждет успех и с тысячу инсталлов за первые сутки.

Седьмая итерация наивности: я слишком активно кормил себя иллюзиями


Эта итерация, что называется, to be continued... Ведь я и сейчас продолжаю кормить себя иллюзиями, как будто предыдущих шести штук мне мало. Например, продолжаю биться над тем, чтобы каким-то образом донести до широкой общественности факт существования моей игры, хотя очевидно, что реальное положение вещей не составляет и тысячной доли ожидаемого и мечтаемого мной положения. Хотя это уже моя проблема — сам себе намечтал, надо было быть скромнее.
Я был уверен, что у меня-то все будет как-то иначе, чем у других, кто рассказывает о своем опыте, что я-то уж все продумал и все предусмотрел. Что у меня получилось что-то большее, чем смена цветов на салатовый и оранжевый. И что стоит мне только дописать проект, как я смогу хотя бы некоторое время жить полной жизнью, пока он некоторое время спокойно живёт своей. Что у меня будет идеальная игра без единого сучка и спотыкашки. Наконец, что после выпуска игры все станет куда легче, ведь все, что нужно будет — это рекламировать свое приложение везде, где только найду, а инсталлы в это время будут нарастать.

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

Любопытен разговор, который случился у меня в hangouts с alexusPro на второй день после выпуска, в воскресенье, когда никто с дач еще не вернулся. На тот момент у меня было всего около 25 установок, из них 24 активных, и несмотря на попытки публикаций в куче источников, каждый день инсталлов нарастало всего по 2-3. Я тогда сказал ему (история переписки хранит сей любопытный факт), что было бы у меня сейчас 100 инсталлов и каждый день нарастало бы штук по 10, я бы уже вовсю пилил дополнения и всячески развивал проект дальше. Думаю, в этом и есть суть человеческой жадности — сколько бы инсталлов не было, их всегда мало. Когда я наконец оправился от удара выпуском и взялся за планирование, то первым делом перечитал все переписки со всеми и вдруг обнаружил своё это опромечтивое высказывание. Это оказалось тем и интересно, что к тому моменту вот уже две недели как я нигде и ничего не постил, а инсталлы действительно продолжали расти, их было уже по 10 в сутки, общее же их количество составляло 106.

Вместо заключения


Итак, я потерял с полгода своей бодрствующей жизни (если слепить вместе все отрезки работы), а в результате получил 9 оценок, около 150 инсталлов и статью на хабре. Стоило оно того? Черт побери, да тысячу раз стоило!

Я научился проектировать архитектуру, узнал много нового о своей целеустремленности и умении управлять своим временем, прочитал кучу книжек, перелопатил охапку ресурсов по андроиду, положил готовый проект в свое портфолио, как следует получил от жизни с ноги, чтобы не казалось, что все хорошо и просто, как какое-нибудь лето или рассвет, как это у нас тут в деревне обычно случается.

Я самореализовался. Я теперь представить не могу как можно тратить свое свободное время на что-либо еще кроме разработки. Я узнал вкус часовой прогулки на свежем воздухе с семьёй после нескольких часов напряженного измышления перед монитором. Я вырос не только в собственных глазах, но и в глазах тех из моего окружения, кто видел мою игру. Познал радость неоплачиваемого труда just for fun и теперь собираюсь подняться после сокрушительного удара судьбы в виде отсутствия интереса к моему приложению и снова ринуться в бой.

Этот проект оказался действительно самой интересной игрой в моей жизни и, кажется, я прошел её синглплеер до конца, теперь только играть онлайн и ждать сиквела.

Так что с вашего позволения я все-таки назову всё это историей успеха. И пусть те, у кого инсталлов значительно-презначительнейше больше посмеются надо мной.

Комментарии (126)


  1. EndUser
    26.06.2015 05:03
    +5

    День недели своей публикации на Хабре вы таки выиграли ;-)

    /me заложил в закладки как нужное.


    1. ComradMax Автор
      26.06.2015 07:55
      +1

      Я постарался сделать выводы из предыдущей своей ошибки с публикацией в пятницу поздно-поздно вечером )


  1. kisuxa
    26.06.2015 05:10
    +1

    феерично! жаль, что первый блин комом (ну, совсем небольшим комочком), но целеустремленность и позитив прямо заражает! К сожалению не могу посмотреть вашу игру, т.к. российский маркет недоступен, но очень хочется.
    Желаю успехов!


    1. ComradMax Автор
      26.06.2015 08:02

      Спасибо большое, рад что вам понравилось )

      Некоторые порталы требуют, чтобы к публикации об игре прикладывался apk с ней, так что географические различия, равно как и неспособность некоторых людей взять на себя ответственность за выпуск сразу по всему миру не должны препятствовать естественному любопытству.

      Послал вам личным сообщением метод обхода этой несправедливости.


  1. i_user
    26.06.2015 09:18
    +1

    Большое спасибо за статью! Очень замечательный, жизненный, применимый и уникальный опыт, читать о котором было огромным удовольствием.
    Увидел здесь множество своих граблей, преодолеть которые, в отличии от вас, мне не хватило мотивации в свое время. Однако после вашей статьи я теперь знаю, что вернусь к незаконченному проекту и попробую еще раз. Возможно даже с нуля.
    Спасибо вам :-)


    1. ComradMax Автор
      26.06.2015 12:48

      Всегда пожалуйста! Граблей я думаю еще на всех хватит, так что не стесняйтесь, проходите вперед.

      С мотивацией все проще простого — 21 день ты работаешь на привычку. затем она начинает работать на тебя (кажется, так)


      1. beaverBox
        26.06.2015 13:39

        За 21 день формируется устойчивая привычка. Вроде так.


  1. morgreek
    26.06.2015 09:30
    +13

    Чёрт возьми, мне нравится ваш стиль письма!


    1. ComradMax Автор
      26.06.2015 12:49
      +3

      Благодарю! В игре все персонажи пользуются репликами моего пера, все тексты писал сам, так что если хочется ещё — вы знаете где их найти


  1. zagayevskiy
    26.06.2015 09:49
    +4

    Там про AsyncTask у вас неправильно написано. Это класс для коротких, быстрых операций, например — обращение к локальной бд. И не то, чтобы он «жрал ресурсы» в методе doInBackground, просто все асинктаски по умолчанию ставятся в очередь и выполняются последовательно. Чтобы этого избежать, можно использовать executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR), например, или подсовывать ему свой собственный Executor.
    Ну а для вашей задачи, мне кажется, подошел бы Property Animation Framework.


    1. ComradMax Автор
      26.06.2015 12:51

      Вот это да. Спасибо! Мне явно есть чему у вас поучиться


  1. InteractiveTechnology
    26.06.2015 09:54
    +1

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


    1. ComradMax Автор
      26.06.2015 12:54

      Большое спасибо за ссылку на их список. Я для себя решил, что к издателям пойду в последнюю очередь.

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

      Буду пока сам ковыряться, а там посмотрим. Есть пока еще козыри в рукаве


  1. neochief
    26.06.2015 10:14
    +3

    Постриглись теперь-то?)


    1. ComradMax Автор
      26.06.2015 12:56
      +2

      Да на следующий же день сидел уже в кресле парикмахера, размазывая слезы по щекам и конюча «ну почему же никто мое приложение не качает?»

      Специально даже пофотографировался сразу после выпуска и на следующий день после стрижки, чтобы для истории


      1. Smerig
        26.06.2015 13:26
        +1

        Дайте посмотреть на историю, интересно ведь!


        1. ComradMax Автор
          26.06.2015 13:37
          +14

          Нехорошо, конечно, жвалами своими светить, но что поделаешь, раз уж публике интересно

          pp.vk.me/c623118/v623118212/34705/jiDV6ccO65g.jpg
          pp.vk.me/c623118/v623118199/39f32/P6QsY03ub5M.jpg


          1. Smerig
            26.06.2015 14:09

            Разве это длинные волосы? :)


            1. ComradMax Автор
              26.06.2015 14:12
              +1

              какие уж выросли ) тут правда не очень хорошо видно всей запущенности ситуации, но и этого, поверьте, мне для раздражительности вполне хватало


          1. boeing777
            27.06.2015 00:31

            Такая природа вокруг, наверное, очень сильно способствует разработке:) Я, например, люблю кодить на даче, чтобы можно было послушать птичек и воздухом подышать. По поводу статьи — сказать, что впечатляет, значит ничего не сказать! Такой колоссальный путь, да еще и в одиночку. А число установок не такое уж плохое — как я понял, порядка 10% активных в итоге? Мне кажется, даже у издателей бывает статистика похуже. Желаю удачи в продвижении этого и в дальнейших проектах!


            1. ComradMax Автор
              27.06.2015 02:19
              +1

              Да, способствует. Отличие от подмосковья разительное — там пока с работы приедешь, выжатый как лимон. Организм требует xbox'а и пива, а не разработки, ведь ты так устал, ехал в метро, на работе ещё куча запар. А тут, наоборот, рабочий день заканчивается — переключаешь учетку в linux'е и вот ты уже дома, самое время садитсья за разработку.

              Скорее порядка 40%, но выборка в 150 инсталлов нерепрезентативна. Посмотрим что будет дальше

              Спасибо большое! И вам всяческих благ


              1. NikMelnikov
                03.07.2015 12:02

                А вы сейчас удалённо работаете? Где обосновались? Природа на фотках действительно классная. Прочитал коммент вне контекста, сорри если есть ответы где-то рядом.


                1. ComradMax Автор
                  03.07.2015 12:09

                  Да, удаленно. В Карелии, совсем недалеко от Петрозаводска — в 30 км.


                  1. avz
                    05.07.2015 17:43

                    А как там с интернетом? я понимаю что есть — но какой и за сколько?


                    1. ComradMax Автор
                      06.07.2015 00:59

                      Ростелеком — максимальный тариф. Стоит 350 р. что ли, точно не помню.

                      Тут еще на другом берегу озера, на холме, вышка в пределах прямой видимости, так что в случае разрывов в ветер или сильный дожь/снегопад 3G тоже неплохо бегает.


                      1. NikMelnikov
                        06.07.2015 12:54

                        А так 4g даже?


  1. aLexusPro
    26.06.2015 11:03
    +1

    Если кто не осилил, то смысл сводится к следующему: не ходите своим путем, всё давно исхожено и изучено. Любой шаг в сторону — это гарантированные грабли. Первый проект, а тем более без опыта разработки, надо брать простым и понятным до безобразия. Все равно найдется куча граблей и принцип 80/20 свое возьмет. Изюм — можно. Далее, мотивация тоже очень важна, необходимо по пути не растерять её. И запуск — это не конец разработки программы, это лишь веха в её жизни.

    Автор, тебе хочется напомнить лишь про сестру таланта, забыл как её звать, погугли. Приложение норм, если открою кинга (я уже близок), а там нет индикатора хода, играть перестану (здесь злобный заразительный смех).


    1. ComradMax Автор
      26.06.2015 13:02
      +7

      Ох ты ж язва ) Я прям в десятый класс вернулся и прочитал всю «Войну и Мир» в кратком изложении на двух страничках. Не понял в тот момент чего все по ней так убиваются.

      Про сестру таланта слышал, но ты же знаешь как это у меня бывает — все равно что глиста из собаки тянуть — думаешь «я вот только разочек дёрну», а в результате полная тарелка спагетти у тебя под ногами. Ты, кстати, тоже что-то много написал, вот смотри как я умею:
      Написал приложение. Понравилось.

      В кинге говорил уже — назад нажми, в меню будет твой индикатор.


  1. artemgapchenko
    26.06.2015 11:46

    А можете ссылку на приложение опубликовать? Хотя бы в личку?


    1. m0sk1t
      26.06.2015 12:54
      +1

      наверное она com.zerkut.android.cards_house


      1. Mishok2000
        26.06.2015 13:02

        Если эта та игра, то автору следует поработать над внешним видом пожалуй. ИМХО.


        1. ComradMax Автор
          26.06.2015 13:07
          +3

          Если я поработаю с графикой, получится вот так
          media.giphy.com/media/A5ugHVbuFL3uo/giphy.gif

          А так да, надо с ней уже что-то кому-то поручить сделать, все так говорят, да

          Впрочем, я всегда был сторонником геймплея, а не графики. К тому же смотрите как классно к ней подходит восьмибитная музыка — наивное искусство, все дела


          1. IgorAdamenko
            01.07.2015 18:29

            А мне ваша графика понравилась! Даже немного пожалел, что у меня нет андроида. Установил женщине своей на планшет, буду там играть :)


            1. ComradMax Автор
              02.07.2015 16:07

              Вы будете первый кто хотя бы задумался, как я и предполагал, о смене мобильной ОС из-за моей игры )


              1. vlivyur
                03.07.2015 15:54

                Товарищ продал iPhone и купил андроидофон из-за Gravity Defied.


      1. ComradMax Автор
        26.06.2015 13:03

        Оно самое


      1. Nashev
        30.06.2015 15:11
        +1

        лучше play.google.com/store/apps/details?id=com.zerkut.android.cards_house тогда уж

        Эпопея эпичная, порадовался. Графика на скринах по ссылке — стильная, махровый пиксел-арт. Вариант с пост-модерном, абстракционизмом или хотя-бы реализмом не помешал бы…


        1. ComradMax Автор
          30.06.2015 21:27
          +1

          Кубизм забыли. Вообще неплохая идея делать переключалку на разные стили живописи (записал себе)


          1. rimmer
            02.07.2015 02:36
            +1

            Не надо переключалку! Наступаете на те же грабли :)
            Графика очень крутая, но ИМХО стоит немного привести к одному стилю. Например карты у вас шикарно выглядят, а фоны иконок с закгуглениями — выбиваются из стиля.


            1. ComradMax Автор
              02.07.2015 16:05

              Да вроде пока не натупил еще — записал только.
              Про скругленне углы, кстати тоже записал, подумаю что можно сделать


    1. Mishok2000
      26.06.2015 12:58

      Я бы тоже не отказался от ссылочки.
      А так, спасибо за статью, было интересно почитать!


      1. ComradMax Автор
        26.06.2015 13:07

        Выслал


  1. grimalschi
    26.06.2015 13:26

    Хорошо описали свою историю. Сильно перекликается с личным опытом, так что понимаю, что вы испытывали!

    После запуска не думали начать новый проект, не связанный с разработанной игрой? Со всем багажом накопленного опыта это будет уже как минимум чуточку проще.


    1. ComradMax Автор
      26.06.2015 13:35

      Спасибо за понимание ) Приятно быть среди таких же как ты

      Думал, конечно. Ворох у меня их — этих идей проектов.

      Но и на этой игре рано еще ставить крест — надо догнать количество игр в сборнике до какой-нибудь приличной цифры, онлайн сделать. Как я уже сказал — осадная тактика, я не жду быстрого взлёта.


  1. Radegast
    26.06.2015 13:57
    +1

    Java я к тому времени знал, а вот от любого C-языка меня почему-то воротило
    Как-то совсем не профессионально звучит.

    Я бы посоветовал полностью забить на текущую реализацию, сделать что-то на кросс-платформенном движке. Unity, cocos2d-x, каком-угодно, но кросс-платформенном. В этом случае полученный опыт будет в несколько раз ценней и кто знает как пригодится в будущем. А чистый android, canvas — это 2011 год… Если уж хочется дикого и безудержного хардкора, то можно запилить все на opengl. Эти знания в качестве бэкгрануда будут хотя бы иметь вес.

    Ну и еще бы посоветовал все тем, кто вот так же хочет начать программировать, но игры никогда не делал, не придумывать супер идею с уникальным геймплеем, а делать точнейший клон игры, которая нравится и примерно под силам. Опыта будет больше, проблем меньше. А когда уже проблем с реализацией не будет, можно попробовать стать крутым геймдизайнером.


    1. ComradMax Автор
      26.06.2015 14:09

      Про непрофессиональное звучание согласен. Но это было полтора года назад, у меня тогда была куча амбиций и мало понимания всей приземленности этого мира

      Про кросс-платформенный движок тоже уже подумываю — примерно в этом направлении и мыслю ближайшие проекты.

      Про клоны тут с вами не согласен. Но это каждому своё


    1. boeing777
      27.06.2015 00:37

      А я, пожалуй, соглашусь по поводу клонов. Сам в итоге пришел к такому же выводу, поскольку разработать техническое решение — это одно дело, а геймдизайн — совсем другое, но не менее сложное, особенно при отсутствии опыта.


  1. IlyaPodkopaev
    26.06.2015 14:10

    хм. на таблеты не ставится… дискриминация?

    Vodafone Samsung GT-N5100
    No carrier Samsung SM-T315


    1. ComradMax Автор
      26.06.2015 14:14

      хм, я никак искусственно не ограничивал девайсы, на которые можно поставить. Почитаю что там с этими таблетами не так, к ближайшему обновлению постараюсь исправить.

      Спасибо за наводку!


      1. IlyaPodkopaev
        26.06.2015 14:15

        на всякий: версия андройда 4.2


      1. 0leGG
        26.06.2015 18:06

        Возможно, используются разрешения, которые неявно включают в требования android.hardware.telephony. Попробуйте в манифест добавить строчку

        <uses-feature android:name="android.hardware.telephony" android:required="false" />


        1. ComradMax Автор
          26.06.2015 19:48

          Вот вечно так — даже не дали погуглить и напрячь извилины ) Чуть позже сформирую новый apk, потестируем с вами


        1. ComradMax Автор
          05.07.2015 11:39

          Нет, там дело в другом оказалось — все те, кто не в России, Беларуси, Казахстане или Украине видят такое сообщение просто потому что маркет не тот


  1. ilyaplot
    26.06.2015 15:11
    +2

    Выпустил проект — победа. Поздравляю и желаю дикого роста популярности игры. А я продолжу пилить свой долгострой :)


    1. ComradMax Автор
      26.06.2015 19:49

      Удачи в этом нелегком деле. Уверен, у вас все получится


  1. saboteur_kiev
    26.06.2015 15:38

    Очень понравилось в статье описание мотивационных приемов, которые опробованы в деле лично. С той же нестрижкой и отказом от игр.

    И вообще ваши отзывы в плане «стоило ли оно того», воодушевляют на подобные подвиги, ибо понимаешь, что даже если проект не взлетит, оно все равно того будет стоить — вот человек, который через это прошел и так говорит.


    1. ComradMax Автор
      26.06.2015 20:01

      Я постарался описать только самые тяжелые и радикальные мотивационные приемы. Есть ведь еще куча легкой мелочи — музыка, которую слушаешь только во время разработки, фон рабочего стола, заменяемый каждые 2-3 месяца — можно выбрать несущуюся машину или взлетающую ракету, тихий дивный сад или огромный особняк — главное чтобы нравилось, бросалось в галаз и символизировало для вас стремление вперед. Хабра, кстати. Я последний год все время ею подзаряжался. Всего и не перечесть. Самое главное тут — взглянул на заставку, прочитал статью на хаю=бре, вклчил ту_самую музыку, значит даже переступая через себя делаешь то, что должен делать. После нескольких сеансов закрепления такой связи все легче и легче получается слушаться самого себя.

      Вот допустим у вас есть золотая рыбка. Она может исполнить одно желание. Вы говорите: хочу бегать по утрам. Если вы абсолютно уверены в ее чудодейственной силе, то утром вы просто не сможете не пойти на пробежку, иначе сила золотой рыбки исчезнет и вы своего этого джинна лишитесь. Но если вы заставите себя встать и выйти на улицу в кроссовках, то вот тогда сила золотой рыбки вырастет. В будущем вы сможете попросить у нее чего-нибудь более сложного, зная что она вас подведет. Начните с чего-нибудь простого, наращивая силу своей «золотой рыбки» по мере того как начнете верить в нее. Это может быть любой ритуал. Главное — если себе загадали, исполняйте. Иначе лишитесь своего собственного джинна и больше он ни одного желани не исполнит.

      Я скомкано исполняю, простите. Надеюсь хоть частично моя идея сквозь все это нагромождение слов просачивается.

      А про «стоит ли оно того» — кто-то тут обиженно писал, что его не качают и никто не ценит, так его все бросились утешать во главе с PapaBubaDiop, мол, выпуск — это уже праздник и повод гордиться собой. Я в тот момент для себя решил, что даже если не будет ни одной скачки, все равно выпуск — это вин-вин. Для себя, не для денег, кому они, треклятые, нужны


  1. stychos
    26.06.2015 15:52
    +2

    А я вот, прочтя сей (несомненно заслуживающий внимания и уважения) опус, как-то ещё больше утвердился во мнении, что на свои грабли обязательно нужно понаступать. Иначе да, никакой тебе самореализации, и никакого тебе жизненного синглплеера, если следовать всем этим волшебным «7 ошибок, которых не стоит совершать». Автор молодец!


    1. ComradMax Автор
      26.06.2015 20:19

      Поверьте мне, еще приятнее — прочитать у кого-нибудь об ошибке, которую вы могли совершить, но не совершили потому что были предупреждены.

      Именно поэтому так важна компьютерная литература околофилософского (но программистского) толка (ну не самоучители языка, если по-русски). Начав путь с самого начала и не желая принимать помощь, вы дойдете лишь туда, куда хватит вашей жизни, сложите голову рядом с отней, если не тысячей других программистов. Воспользовавшись же опытом других (но не действуя при этом по шаблону, именно обходя острые углы), вы становитесь Шанг Тсунгом, Ермаком если хотите, с опытом тысячи душ в себе. Вы набираете пароль и начинаете борьбу сразу с последнего уровня, который до вас еще никто не прошел.

      Если вы думаете, что избегая острых углов базового уровня, вы лишаетесь какого-то опыта — ничего подобного. В RPG вы можете не мочить сотни низкоуровневых мобов, с трудом добираясь до седьмого уровня развития; достаточно просто взять острый меч, отточенный поколениями программистов до вас, и завалить сразу моба восьмого уровня, достигнув одной победой сразу седьмого уровня. А затем — пробивать путь по непроторенным дорогам, двигая все наше сообщество вперед.


  1. Stas911
    26.06.2015 16:15
    +2

    Сильная история, поражаешься вашей самомотивации!


    1. ComradMax Автор
      26.06.2015 20:20
      +1

      Никакой магии, всего лишь пара трюков


  1. SteelRat1
    26.06.2015 16:41
    +2

    Это ппосто Суперпост. Пусть же это будет для меня знак свыше, эта ваша статья. Я сам начинающий, но уже есть идея. Нужно только побороть свою лень. А тут вы со своей статьей. Кстати, очень грамотной и с тонким чуйством юмора, отсылающим к классикам(цитата «вот справка»). Наверное, стоит благодарить родителей )). И теперь я точно возьмусь за свой проект.


    1. ComradMax Автор
      26.06.2015 20:20

      Удачи с ним, у вас все получится


  1. AlmazDelDiablo
    26.06.2015 19:54

    При этом, подобно разнице между жирным фастфудом и легким салатом с отварной курицей, игры создавали удовольствие здесь и сейчас, оставляя дурное послевкусие ничегонеделанья назавтра, разработка же поначалу может быть и не доставляла столько быстрого удовольствия, зато всю ночь после этого и следующий день я ощущал себя героем. Это было счастье куда более тонкое и долго тянущееся, более высшего порядка, если хотите.
    Вы только что смогли сформулировать то, что я ощущал последние пару лет, но никак не мог описать!
    Прекрасный текст! Спасибо вам :3


    1. ComradMax Автор
      26.06.2015 20:21

      Вы если ещё что не сможете сформулировать — обращайтесь, с удовольствием сформулирую за вас )

      Спасибо, рад, что вам понравилось


  1. Diaver
    26.06.2015 20:13
    +1

    Как Картман Картману: щиикарно.
    По делу: Крайне впечатлен тем что без опыта работы взялись такой огромный кусок и смогли закончить дело. Во всех статьях по гемдеву и не только, советуют начать с чего-то простого, чтобы почувствовать вкус законченной работы, не надо начитать делать MMORPG в качестве свой первой игры, все равно не получиться.
    И да — вы псих, в хорошем смысле, чем то напомнило историю Линуса Торвальдса.
    И с графикой надо что-то делать, может нанять какого-нибудь дизайнера.


    1. ComradMax Автор
      26.06.2015 20:24

      Хех, я добрый Картман из параллельной Вселенной )

      Да не то, чтобы совсем уж без опыта — в банковской сфере что-то пилил, по хостингу вот с доменами тоже попиливаю по работе. Но полный спеткр создания продукта от начала до конца — да, впервые.

      Про графику тссс, жена рисовала ) Если бы не она — не бывать проекту. Насчет нанять дизайнера — если что получится толковое из всей это затеи, то да, перерисуем с привлеченим художника, почему бы нет


      1. asm0dey
        27.06.2015 07:18
        +1

        А мне нравится графика.


        1. ComradMax Автор
          28.06.2015 10:05
          +1

          Вы в меньшинстве


          1. asm0dey
            28.06.2015 10:36
            +1

            А ещё я вам засабмитил тонну крэшей и баг в отзывах на плэй маркете.
            А ещё когда я нажимаю «Хватит» у меня запускается реклама и после этого открывается новая игра.


            1. ComradMax Автор
              30.06.2015 21:31
              +1

              Да, есть такая проблема. Занимаюсь


              1. asm0dey
                30.06.2015 22:06

                Как круто иметь прямой доступ к телу автора!


          1. asm0dey
            28.06.2015 11:22

            А ещё в американской козырной подкидной переводной советской версии у меня иногда просто ничего не происходит — карты не уходят, кнопки «бито» не появляется и сам себе я подкинуть тоже не могу.


            1. ComradMax Автор
              28.06.2015 11:26

              Спасибо за наводу, поправлю


      1. Diaver
        28.06.2015 01:12

        Проиграл в вашу игру, игра шикарная, отдает такой ламповостью и графика пиксельартовкая в тему. Супер, очень достойно.


        1. ComradMax Автор
          28.06.2015 10:05

          Спасибо! Проект ждёт долгая и упорная жизнь, так что не переклчюайтесь


  1. ForhaxeD
    26.06.2015 20:21

    У меня вот еще хуже, я задумал два года назад написать крутейший ААА проект с нуля, не используя чужое (исключение чуть-чуть опенсорса под MiT) :)
    Ничего, пишу вот по чуть-чуть, команда собралась даже из трех человек :)


    1. ComradMax Автор
      26.06.2015 20:25

      Вы большой молодец, не сдавайтесь! Насчет не используя чужое — у меня тоже был такой возраст или этап, фиг знает, когда мне казалось важным всем пользоваться только своим. Но со временем я понял, что многие вещи, если они открыты, важно и нужно использовать — ту же ACRA для сбора краш-тестов. Ну неинтересно мне писать такой сервак с нуля, что поделаешь. Тут все свое — круто, конечно же, но надо не переборщить


      1. ForhaxeD
        26.06.2015 20:33

        Ну да, подобные сервисы все-таки использовать чужие нужно :)
        Тут вы правы, очень тонкий момент — будешь использовать много и ты потеряешь уникальность, будешь использовать мало — никогда не закончишь. Но все же у меня это дело позиционируется больше как хобби и бесконечный источник опыта: «хочешь сделать хорошо — сделай сам».


        1. ComradMax Автор
          26.06.2015 20:42
          +1

          Не согласен насчет того, что потеряешь уникальность. Я всех подробностей вашего проекта не знаю, но могу сказать точно, что повару необязательно выращивать помидоры и варить сыр самому, чтобы приготовить превосходное блюдо. Если вы берете чужой телефон и переклеиваете шильдик, заклеивая оригинальный своим, или проксируете сервис гуглопочты, выдавая за свою — то да. Если же вы на почве чужого телефона, метлы и мясных шариков создаете прямоходящего монстра, пожирающего зеленые жилетки, то тут уже свой ли телефон у вас и сами ли вы крутили фарш не имеет особого значения, равно как и если вы на почве гуглопочты, плей маркета и вконтакте создаете интегрированную среду закрытого общества типа иллюминатов на базе рассылок + приложения + групп вконтакте, то тут уже свой вконтакт и своя гуглопочта не нужна ни разу — ваша надстройка оригинальна сама по себе.


          1. ForhaxeD
            27.06.2015 21:12

            что повару необязательно выращивать помидоры и варить сыр самому, чтобы приготовить превосходное блюдо


            Он как минимум должен разбираться в помидорах и сыре, чтобы приготовить превосходное блюдо.

            Геймдев это очень тонкое дело, если нужно сделать проект максимально оптимизированным и эффективным — использовать чужие движки как минимум неправильно (опять же, для этого нужен опыт).

            Я не говорю, что движки это плохо, я говорю, что используя чужие движки — можно лишиться важного атрибута — гибкости, а в следствии уникальности. Про арт говорить не буду, думаю тут и так ясно, в чем тут уникальность.


            1. ComradMax Автор
              28.06.2015 10:05

              Если вы говорите в данном случае о движке игры, а не стеке используемых технологий, то, конечно, универсального движка нет, есть лишь квази- и в этой ситуации свой движок однозначно нужен, тем более для ААА проекта, тут вы абсолютно правы.

              Гибкости — да, уникальности — ну, мы видимо о разной уникальности говорим. Тот же WoT например изначально на каком-то движке RPG сделан, который под эльфов с лучниками заточен, им там куу чего пришлось переписывать и своего допиливать.

              В любом случае ждем от вас статью, про собственный движок — уверен, что там кухня, равно как и грабли, — совершенно иные


  1. gtament
    26.06.2015 22:24

    Почему недоступно для Украины? :-(


    1. ComradMax Автор
      26.06.2015 22:27

      Не запретил, просто не стал там выпускать. В игре есть Сержант, он при победе говорит «Служу России!». Решил не раздражать лишний раз братьев-славян, и так всё непросто сейчас.

      Но вот сегодня разговаривал с человеком, готовым перевести на украинский, видимо вместе с выпуском английской версии по всему миру, на Украине будет на украинском выпуск.

      А пока послал в личку ссылку где apk можно скачать


      1. gtament
        26.06.2015 22:51

        А переводить и необязательно) Мой родной язык и вовсе русский. Мне кажется ваши опасения вызвать раздражение братьев-славян надуманны.

        P. S. Как по мне, то стиль графики в игре отличный! Люблю пиксели


      1. SteelRat1
        27.06.2015 11:45
        +1

        Присоединяюсь. «Служу России» может напрячь только крайне радикально настроенного украинца, а таких очень мало на самом деле. И уж точно это высказывание не повлияет на судьбу вашей разработки, потому что оно абсолютно не претенциозно. Обычный отклик военного. Никого не унижающий. Так что смело расширяйте рынок.
        А по поводу графики, которая хромает(пока!), тут можно вспомнить поговорку: «встречают по одежке, провожают по уму». Если играбельность уже подтверждена не одним десятком игроков, то осталось именно привести в порядок красоту, и тогда пользователи, незнакомые с игрой, охотнее начнут ее ставить себе на телефоны. Увы, без красивостей никуда, но с другой стороны, это ведь гармония, гармония формы и содержания. Такой продукт просто обязан быть эстетично выглядящим. Успехов вам во всех ваших начинаниях и продолжениях.


        1. ComradMax Автор
          27.06.2015 19:29

          Будь по-вашему, опубликовал на Украине


          1. SteelRat1
            27.06.2015 19:36

            Отлично, а то я вчера кинул себе на стену ссылку на статью и на гуглплэй)


  1. AndrewNikolaevich
    26.06.2015 22:44

    Давно не читал таких больших статей до конца. Автор молодец, я много нового для себя подчеркнул (хотя для студента в принципе всё в новинку).


    1. ComradMax Автор
      27.06.2015 02:23

      Что ж, студенту следует пожелать хорошенько покопаться на этом ресурсе и как следует осесть — некоторые люди здесь за просто так делятся бесценным опытом.


  1. bootracer
    26.06.2015 23:54

    Браво! Вы очень хорошо пишете. Искренне и с юмором.
    Мне понравилось!
    Определитесь все же, что Вы хотите?
    Признания? Денежного вознаграждения? Всего сразу?
    Для всего этого нужны пользователи Вашего приложения.
    Друзья не в счет.
    Если выходите на рынок, то Вы бизнесмен и играете в игру по определенным правилам. Если Вы хотите дать человечеству открытый код для карточных игр, откройте его. Ищите единомышленников. Дайте другим что-то добавлять и развивать этот проект.
    Мне понравилась книга Чед Мурета «Империя приложений».
    Стать предпринимателем — это тоже здорово!


    1. ComradMax Автор
      27.06.2015 02:29

      Спасибо, рад, что вам понравилось. Я и в жизни такой же — искренний и с юмором.

      Всего сразу. Я хочу толпу игрунов в мою игру, чтобы устраивать среди них конкурсы, водить хороводы, хлопать с ними в ладоши. И да, прежде всего — пользователи. Как потом их монетизировать и надо ли это вообще делать — отдельная тема для размышлений, пока руки заняты, а голова — нет.

      Выхожу на рынок, да, но бизнесменов я себя не назвал бы, ибо этот термин подразумевает определенную степень циничности и ориентации на материальный результат. Я же — прост как валенок и всего лишь хочу, чтобы в мою игру играли. Открытый код дать не хочу, ибо «если ты не претворяешь в жизнь свою мечту, это за тебя с твоей мечтой делает кто-то другой». Справедливо и на заработке на определенных идеях.

      Про добавлять и развивать — всё будет, потерпите немножко.

      Спасибо за наводку на книгу, уже побежал искать.

      Да, здорово, но для этого надо еще с десяток ударов в рожу отхватить, чтобы окончательно обозлиться и начать драть с пользователей деньги как с сидоровых коз


      1. bootracer
        27.06.2015 19:39

        Найти пользователей часто сложнее чем создать.
        Опыт требуется совершенно другой, чем программировать и не всем это занятие нравится. Сейчас и бесплатное не берут, если его не рекомендуют.
        Может у Вас другой есть который этим займется?
        И очень хочется увидеть продолжение рассказа.
        Пишите чаще. Это у Вас точно получается.
        Заинтересуйте аудиторию новой целью…
        И чтобы занятие Ваше было не в тягость, а just for fun.


        1. ComradMax Автор
          27.06.2015 20:27
          +1

          Извините, я наверное не на том уровне дзена, что и вы, но что вы имеете ввиду под созданием пользователей? Если вы о создании новых людей, то это сколько времени-то пройдет, да и ресурсов мне при всем желании даже на сотню вряд ли хватит — ботинки им купи, в садик отдай.
          Если же вы обо всех этих «от 12 рублей за инсталл, 15 рублей за инсталл с отзывом», то я там в статье написал — я против такого подхода. Не могу гарантировать, что мое мнение так и останется тем же, возможно однажды я проснусь прожженным циником, но на данный момент подобные вещи мне не по нраву вовсе.

          Насчет друга, который этим займется, так же как и с издателем, я уверен, что при вкладывании в проект реальных денег потребуется куда более жёсткий подход к монетизации, а я этого не хочу. И не говорите мне, что в случае с другом я ничего не буду знать о силе монетизации, я бы и оружие массового уничтожения разрабатывать бы не стал — независимо от того придётся мне смотреть как люди от него погибают или нет.

          Продолжение рассказа обязательно будет, мне приятно, что вам пришёлся по душе мой стиль.

          Что же касается того, что у меня получается лучше, а что нет — несмотря на то, что слова в предложения у меня укладываются вполне сносно, мне всё же ближе точный и контрастно очерченный мир разработки с его критерием работает/нет, нежели развязный и бабушка-надвое-сказательный мир журналистики


          1. bootracer
            27.06.2015 20:45

            Я имел в виду создание игры, а не пользователей.
            Инсталл за 15 р точно использовать не стоит.
            И если отойти от маркетинга вспомнилась «Приманка для пользователей» Андерсона. Не встречали?


            1. ComradMax Автор
              28.06.2015 09:58
              +1

              Уже побежал гуглить, спасибо за наводку


      1. mtp
        30.06.2015 12:02

        Как же вкусно и замечательно вы свои идеи и устремления описываете! Большой респект вам за направление мыслей.


        1. ComradMax Автор
          30.06.2015 21:24

          Спасибо, рад что мы мыслим в едином ключе! Побольше бы таких как нас — глядишь, мир бы стал чище


      1. Nashev
        30.06.2015 15:27

        Открытый код именно для этого и дают — чтобы своя мечта претворялась в жизнь кем-то ещё. Ибо многие мечты после реализации не важно кем оказываются доступны многим, в том числе и себе. Конечно, если это не мечта о собственном финансовом благополучии… Ну и любой открытый код — кладезь опыта и граблей, очень полезный вечно начинающим программистам.


        1. ComradMax Автор
          01.07.2015 08:15
          +2

          Я соврал бы если бы сказал, что не мечтаю о собственном финансовом благополучии, ну а кто не мечтает? Вопрос лишь в том, что это не первичная цель, самое главное для меня — сделать хорошую игру, которая бы мне лично нравилась. В этой ситуации если кто-то будет претворять в жизнь мою мечту, то он это сделает обязательно не так. Начнет в свою очередь говорить что я делаю не так и лезть в концепцию и идею, на выходе мы получим очередной типичный продукт, это просто не интересно.

          А что касается кладезя знаний, то у меня далеко не самый красивый и правильный с точки зрения структуры и читабельности код, я бы не стал его показывать никому в том числе даже для того, чтобы сказать «так делать не надо», ведь у многих из нас несмотря на сознательную установку что с увиденным делать пример перед глазами запоминается и может легко всплыть в качестве наглядного примера как делать именно надо, а не не


  1. MAGNUS8
    27.06.2015 04:01

    Душевно очень написано. Удачи вам во всех начинаниях!


    1. ComradMax Автор
      27.06.2015 09:04

      Спасибо! Рад, что вам понравилось


    1. ComradMax Автор
      27.06.2015 19:30

      -


  1. 4umak
    28.06.2015 15:20

    Отличная история!:) Вот только мне показалось, или в статье и комментариях нет названия игры? Как найти и попробовать?:)


    1. ComradMax Автор
      28.06.2015 16:56

      В статье есть название — «Картёжный дом». В Play Market'е по этому запросу на первом же месте — там синенькие карты ворохом лежат.

      Рад, что вам понравилось


  1. vlivyur
    29.06.2015 13:44

    Пиксель-арт — невероятно круто.
    Первый раз с жетонами нифига не понял — козырей нет, подкидывать не только другим нельзя, но и ты не можешь. Пока найдёшь все привычные правила для простого дурака, кучу раз проиграть пришлось.
    Нельзя картой с колоды сходить, обязательно надо к себе положить, но это мелочи (но и на это у игроков есть фразочки).
    Непонятки когда комп отбивается, а другой ему тут же подбрасывает ещё карт и первый ещё и их сразу в полёте отбивает, т.е. карты летят сразу с нескольких сторон кучкой. У нас сначала подбрасывает ходящий, потом по часовой от него и после каждого подкидывания так — вроде не нашёл в правилах такого.
    «С пар» у меня текст не влез на экран: Ходить парой без.
    Не нашёл как извлечь один жетон.
    Инструкция шикарна.


    1. ComradMax Автор
      30.06.2015 10:06

      Рад, что вам понравился наш пиксель-арт — мы пока делаем толкьо первые неуверенные шажки.
      Проблема с тем, что один подкидывает, а другой на лету прям бьёт правда имеет место быть, обязательно поправлю.
      Насчет невлезшего текста спасибо за наводку, посмотрю что можно сделать.
      Извлечь можно только сразу все жетоны кнопкой «Сброс».

      Инструкция, да, абсолютна бестолкова и никакой функциональной ценности не несет, но сама форма подачи вроде бы удалась.


    1. Nashev
      30.06.2015 15:33

      Вот кстати, о жетонах. Вернее, монетах. В маркете второй же строкой сказано, получай монеты. Неужели это настолько привлекательный аспект для пользователей, что его второй же строкой надо, до описания перечня игр и гибкости правил? Меня смутило привкусом попытки подкупа…


      1. ComradMax Автор
        01.07.2015 08:18

        Да, настолько. Не знаю как далеко вы зашли в чтении статьи, но два ключевых аспекта — это наличие монет за победы и разговаривающие противники.

        Что же касается подкупа, то по-моему подкуп выглядит так: «побеждай в карточных играх и получай монеты или не побеждай и все равно получай». Что же касается моего случая, когда за победы вручаются награды, в том числе виртуально-денежные, то по-моему — вполне честная сделка


        1. Nashev
          01.07.2015 08:24

          Ну, не знаю. Монеты — дополнительный бантик. Реплики соперников я встречал в каком-то древнем покере на PC. А вот то, что здесь четыре карточных игры и огромное разнообразие вариантов дурака — думаю, ключевая характеристика, описывающая продукт, и её стоит назвать раньше монет. А подробности игр — уже позже.


          1. ComradMax Автор
            01.07.2015 08:32

            Да, про реплики в Marios Game Gallery и Wild Board Games я писал. Про 4 игры в одной большинство тех, кому я докладывал об этой уникальной особенности, говорили «И чё?» — uralgames вон или appscraft куда больше игр имеют. Что же касается модификаций «Дурака», то тут тоже на любителя и даже на меня не сказать что сильное впечатление производит. К тому же это видоизменение касается только одной из четырех игр, а монеты — глобальное изменение во всем смысле игры.

            Я понимаю, что раз вы знаете про древние игры на PC, то вас особо ничем не удивишь, и, судя по всему, вы пытаетесь подходить к вопросу ключевых особенностей игры здраво, пытаясь отсортировать их, эти особенности, по значимости. Но большинство людей не такие — машины с баннером над входом в автосалон «самые комфортабельные, мощные, экономные по части расхода и неприхотливые в ремонте, но главное — быстрые» будут продаваться не слишком хорошо, зато стоит повесить «даем два билета в театр» и народ валом повалит. Такие времена, такое общество, ничего не поделаешь.

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


        1. Nashev
          01.07.2015 08:25

          Статью прочитал полностью, кстати


          1. ComradMax Автор
            01.07.2015 09:05

            Это подвиг. Я абсолютно серьезно это заявляю


    1. ComradMax Автор
      05.07.2015 11:46
      +1

      Простите, забыл сказать

      «У нас сначала подбрасывает ходящий, потом по часовой от него и после каждого подкидывания так — вроде не нашёл в правилах такого.»
      «Советский» — субмодификация сразу после «Подкидного»


  1. Minras
    30.06.2015 12:48

    В карты я не играю, а вот статью закинул в закладки к околоандроидной разработке. Спасибо, короче говоря.


    1. ComradMax Автор
      30.06.2015 21:25

      Всегда пожалуйста


  1. knagaev
    02.07.2015 12:47

    Спасибо, очень понравилось, что честно написано.
    Это вот, например, такое
    Иногда, когда сил вечером совсем не было, я просо запускал Idea (в которой приноровился писать) и сидел перед ней пару минут, затем шёл спать.
    Ну и про рис тоже хорошо.
    Такая упёртость, граничащая с упоротостью, у вас, похоже, в правильной пропорции с жизнелюбием.

    Интересно было бы прочитать как жена относилась к вашей работе в «забое».
    Иначе только косвенные признаки типа участия в разработке в роли художника — то есть, вроде бы поддерживала.
    Но при полугодовалом ребёнке это, конечно, очень дорогого стоит.


    1. ComradMax Автор
      02.07.2015 16:03

      Именно так. Я упоротый жизнелюб

      Ну учитывая, что жена до этого пять лет терпела мои ежевечерние компьютерные игры и не пилила (спасибо ей огромное за это; выбор заниматься делом, а не страдать фигней, я сделал сам) — мое новое увлечение понравилось ей больше.

      Да с ребенокм я вроде старался помогать, особенно поначалу, разве что финальные полгода, когда ему уже 2 исполнилось, стал все глубже погружаться и все чаще предпочитать разработку семье.
      Но в целом да, это дорогого стоит и боюсь что мне не хватило бы всех пальцев на руках и ногах чтобы перечесть все те случаи, когда она делала что-то сама, освобождая мне время, даже если бы я был десятируким и двадцатиногим пришельцем. Ну или мутантом


  1. maximp
    02.07.2015 19:18

    Автор, вы молодец, что вы дошли до релиза, проявили упорство и стойкость. Многие бы сдались. Боюсь только, что ваши выводы слишком поверхностны, в том смысле, что не снижают рисков будущих проектов, зато создают иллюзию, что на все возможные грабли вы уже наступили.

    Настоятельно рекомендую почитать книжку «The Lean Startup» (есть и другие, излагающие ту же мысль, говорят даже лучше), или пройти курс «Developing Innovative Ideas for New Companies: The First Step in Entrepreneurship» на coursera. Там обсуждаются многие ошибки из тех, что вы заметили, и еще пачка тех, что вы упустили.

    Ну например. Ваше первое действие, после того, как возникла идея стартапа, должно было быть — найти (и поговорить! лично!) как можно больше early adopters. Это те люди, которые заинтересованы в вашем продукте, готовы попробовать прототип и высказать, что они по этому поводу думают. Даже на стадии концепции разговоры с будущими клиентами могут дать много ценных мыслей. Это безусловно только первое приближение, но заметьте, их взгляд скорее всего точнее ваших гипотез о рынке и будущем спросе.

    Ваше второе действие — придумать и сделать Minimal Viable Product (MVP). Это версия продукта, которую можно показать только тем самым нескольким избранным и больше никому (обратите внимание, что ваша цель была с самого начала написать идеальный продукт, за который не стыдно, огромная разница с учетом всех рисков и вложений). Это версия с кучей багов, недоделок, заглушек, сделанная только для того, чтобы проверить текущие гипотезы. Исходя из полученных отзывов, вы гипотезы подтверждаете или отвергаете, дальше делаете вторую итерацию, третью, или сворачиваете проект, потратив минимум усилий.

    Я конечно фантазирую, но могло так оказаться, что всем вашим early adopters бы сильно понравилась игра пирамида, и писать дурака в версии 1.0 бы просто не понадобилось! Либо могло так выясниться (опять фантазирую), что чат не вызывает никаких эмоций и отдача от него 0, зато анимация вызывает оргазм у каждого второго, поэтому нужно серьезно вкладываться в графику — именно она и принесет миллион загрузок.
    Самое главное, что вы бы об этом узнали через 1-2-3 месяца (лучше раньше), а не через полтора года, когда все силы, время и деньги уже потрачены. Очень важно избавиться от чувства стыда (вины?) за полусырой продукт, не бояться возможных ошибок и критики. Это и есть entrepreneurship.

    Надеюсь, моя мысль ясна.


    1. ComradMax Автор
      02.07.2015 19:34

      Вот уж не думал, что в комментариях буду цитировать текст статьи, но специально для вас, так сказать, читайте выделенное маркером

      Что же касается комментариев потребителей и смены курса, то тут очень уместна цитата Генри Форда: „Если бы я спросил людей, чего они хотят, они бы попросили более быструю лошадь.“
      К тому же нельзя ведь надеяться, что человек, высказывающий своё мнение и ожидающий ответа разработчика, согласен с тем, что его предложение неуместно или портит общую концепцию. Даже на то, чтобы его предложение было поставлено в очередь он не очень-то согласен; здесь и сейчас, раз уж он поделился с тобой своими соображениями.
      Они хотят, чтобы в Hill Climb Racing можно было кепочку менять и цвета машин; хотят, чтобы денег давали больше, а выиграть было проще. Кармические законы не позволяют мне проигнорировать неуместное предложение, оставив вопрос, заданный мне, висеть в воздухе. Врать же я не желаю все по тем же законам морали и потому считаю, что обратный отклик интереснее получать на уже сформировавшийся продукт, который в моем случае является скорее концептуальным произведением, нежели открытым для правок проектом, действующим по принципу „любой каприз, лишь бы вы скачали, поставили оценку, а лучше что-нибудь купили“.


      1. maximp
        02.07.2015 20:29

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

        Конечно же фидбек нужно фильтровать на полезный и незначительный. Конечно придется думать, что возможно хотел сказать пользователь. Конечно же строить концепцию придется самому, а не ждать, что кто-то ее преподнесет. Потом ломать и строить заново, потому что старая пользователям не нужна. Суть взаимодействия с early adopters — это проверка гипотез, ваших гипотез, тщательно продуманных, логичных и бесспорных на бумаге. В действительности большая часть гипотез оказывается ошибочной.

        Бывали ли случаи, когда проект, целиком придуманный узкой группой человек, становился бомбой? Да, безусловно, в истории случалось. Может быть, ваша игра — это один из таких случаев, и не хватает только маркетинга. Но согласитесь, что есть риск (я его оцениваю в 99%), что у вас такой же проект, как и у всех. Пока вы пишете игры в свое удовольствие, хотя судя по отдельным моментам, вы в нее влили очень много своих ресурсов, можно игнорировать все эти риски и просто программировать. Если же вы представите, что на кону серьезные деньги,… возможно ваша позиция изменится.


        1. ComradMax Автор
          02.07.2015 21:40

          Это уже больше похоже на серьезный разговор.

          Вы не обижайтесь на меня, пожалуйста, за попытку указать Вам в тексте где именно я отвечаю на Ваше предложение. Просто мне показалось, что Ваш первый комментарий — это template из Вашей коллекции для всех, кто пишет первый проект и жалуется на грабли. Потому я и подумал, что писать комментарий руками смысла нет, достаточно ссылки на текст.

          Я, к сожалению, чуть-чуть не успел, чтобы отредактировать свой Вам ответ, хотел написать, что я отвечал лишь на Ваш собственный комментарий и конкретно на Ваше предложение привлекать пользователей на ранних этапах. О других граблях, указанных в упомянутых Вами источниках я ничего сказать не могу, но уверен, что изучить понимательнее их стоит, большое Вам спасибо за наводку.

          Насчет Форда мне кажется, что цитата как раз подходящая, просто кто-то бьёт своим продуктом наверняка, по сути соглашаясь на задачку на тройку, которую точно знает, что решит, а кто-то — это как раз я — жертвует умопоморачительно дорогим временем, которое обычно тратил на компьютерные игры, рискует и берет задачу сразу на 5 без подготовки. Может быть потому что этот кто-то не боится провала?
          И не обижайтесь, пожалуйста, на задачку про тройку, Вы наверняка хотите мне возразить что эти задачки на тройки приносят миллиарды, в то время как моя на пятерку даже если взлетит, принесет мне максимум новые кроссовки, но поймите и Вы меня — я оцениваю эти задачки не с позиции их финансовой успешности и проторенности пути, а с позиции приобретенного опыта. Я рискую, если хотите знать. Позвольте же мне сделать эту восхитительную ошибку — ни с кем не советоваться — просто потому что я так хочу.

          Вы можете сказать, что тогда получается, что мне вообще никакие источники информации о граблях не нужны, но это не так.

          Я, возможно, согласился бы с Вами, что мне следовало поступить так как Вы говорите, если бы я о таком подходе с ранним привлеченим не знал. Но я-то как раз знал и сознательно выбрал так не делать, и даже сообщил об этом в статье, приведя свои аргументы против. Написали бы сразу, что видели мои контраргументы этой тактике — удалось бы избежать лишней итерации обмена информацией, которую Вы, как оказывается, и так знаете.

          Да, я считаю, что при разработке этой игры решения надо было принимать, ни разу их не проверяя. Во-первых потому что у меня весьма ограниченный пул тех, кто может высказаться и большинство из них вряд ли смогут оценить наброски непредвзято, а во-вторых потому что, повторяю, моей целевой аудиторией был я сам. У меня, наверное, мания величия, но я почему-то с трудом представляю как какой-нибудь музыкант напевает своей девушке мелодию и спрашивает её стоит ли ему изменить большую квинту на малую терцию в третьей доле второго квадрата. Или что намазав холст небом и травой, художник спрашивает кого бы то ни было подходящий ли цвет он выбрал и стоит ли ему рисовать корову вдали или нет.

          Я не считаю, что знаю, что нужно клиентам. У меня и клиентов-то нет, я сделал игру и хочу посмотреть что из этого выйдет. Если она никому не понравится — что ж, мои вкусы различаются с большинством людей, увлекающихся играми. Поймите Вы, что я и после выпуска не очень-то уверен в том, что сделал правильный выбор по части геймплея, а уж если бы кто-то сказал мне что-то во время вызревания концепции или написания, то я бы, наверное, совсем бы сломался. Это не веб-сервис — чёткий и безэмоциональный, в котором важно удобно или нет и будут пользоваться или нет, это игра, в ней некоторые детали встали на свои места только в самом конце, её по частям оценивать нельзя.

          Меня вообще удивляет, что Вы можете говорить о том, что надо было оставить одну только Пирамиду. Мне уже говорили это. Я не понимаю, неужели Вам не ясно, что без остальных игр Пирамила не имела никаких шансов? Снова одно и то же — победа, проигрыш, победа, проигрыш, ура, ой, ура, ой. Надоело, стёр. Никакого глобального движения.

          Нет у меня гипотез, продуманных, логичных и бесспорных, чтобы их подтверждать или опровергать, я двигаюсь интуитивно и стараюсь не скучать. Это ведь для меня всего лишь игра, помните?

          Именно в упомянутый Вами 1% я и попытался попасть. Скорей всего не попал, но мне нравится то, что происходит. Да, у меня такой же проект, как у 99% других разработчиков, ну и что? Для меня он мой, мой личный, я выпестовал каждый поворот этой игры и мне нравится результат, я не сбился с пути и не позволил никому меня сбить. Как я писал, когда я описывал концепцию в двух словах, мне говорили что бред. А сейчас народу нравится. И я уверен, что Пирамида в отдельности, как и просто Дурак, как и любой другой вариант игры, кроме того который я сам решил выпустить в качестве конечного продукта (а по сути отправной точки для итеративного развития проекта) показался бы большинству бредом и отвратным скомканным выкидышем. А сейчас народу вроде нравится.

          Я надеюсь, что в моих играх никогда не будет на кону серьезных денег. Иначе эти деньги свяжут мне руки и заставят полировать игру до самой старости.

          Будет здорово, если поделитесь почему цитата Форда здесь неуместна.

          Простите за некоторую скомканность повествования, я давно не спал. Сильно дольше обычного


          1. maximp
            04.07.2015 16:59

            Ключевое противоречие между нашими позициями в том, что вы воспринимаете свою игру как хобби, не задумываясь сколько сил и времени на нее ушло, времени, которое могло быть потрачено на жену, семью, друзей, здоровье, спорт, путешествия, развлечения. Спорить тут не о чем, этот вопрос исключительно субъективный. Но все же попробую дать один совет: относитесь к своему времени и возможностям чуть более ответственно, стараясь выжать максимум из имеющихся шансов, а не только опыт.

            По более мелким пунктам:
            — Не вполне согласен с аналогией про задачки на «3» или «5». Более уместно, на мой взгляд, говорить о действительно трудной задаче, которую вам дает условный профессор, который при этом делает замечание, что большая часть бывших студентов, решавших ее, провалились, а те, кто хоть как-то приблизились, шли определенным путем. Хотя у вас лично есть полная свобода идти любым путем, стоит изучить, как же все-таки шли те счастливчики.
            — Цитату Форда нужно понимать следующим образом. Нужно учиться выжимать главное из разговоров с клиентами и игнорировать капризы. Более того, нужно заранее думать, о чем вообще стоит говорить. Далеко не на все вопросы клиенты смогут дать полезный ответ, в частности, инновационные решения они конечно не подскажут. А вот на некоторые важнейшие вопросы смогут: Является ли скорость той функциональностью, ради которой они готовы потратить на порядок больше денег и времени на обучение? Какой предел цены они видят (на какую себестоимость производства необходимо выйти, чтобы продукцию можно было продать)? Увеличивает ли автомобиль в их глазах социальный статус (рентабельно ли производство люкс-автомобилей)? Является ли текущее решение (управление рулем, коробка передач, необходимость заправки) достаточно удобным, либо нужно дальше экспериментировать с устройством машины? Все эти вопросы были более чем актуальны в конце 19 века.
            — Начинать стартап — уже риск, и без того немалый. Сознательно его увеличивать — юношеский максимализм, я же говорю о чистом прагматизме, как снизить риски и повысить шансы на успех.
            — Не стоит путать сферы деятельности с разной степенью неопределенности. Популярная рок-группа может себе позволить выпустить композицию, только потому что им самим она нравится (хотя даже известные рок-группы пробуют действительно много вариантов перед выпуском, для примера можно послушать evolution track'и, опубликованные группой Within Temptation). Создатели сериалов выпускают пилоты, прежде чем снимать весь сезон, а по ходу сезона часто вносят значительные коррективы в зависимости от реакции зрителей. У технологических компании неопределенность еще выше, судя по статистике провалов.
            — Я предложил сделать простую игру к версии 1.0, если она соответствует минимальным ожиданиям пользователей. Добавить больше игр и возможностей к версии 2.0, 3.0 и так далее. Обратите внимание, я не исключаю, что через полтора-два года ваша игра могла выглядеть точно так, как вы и сделали. Разница в том, что к этому моменту вы уже год на рынке, уверены в том, что хотят и что не хотят ваши пользователи, реально ставите задачи покорения mass market, без каких-либо жертв в виде несчастной прически. Попросту говоря, разница в вашем контроле над ситуацией.

            В заключение хочу сказать, что все мои комментарии — это не критика, не злорадство и не осуждение. Я прошел через те же стадии, и в последствии жалел о потраченном времени. Не делайте такой же ошибки!


            1. ComradMax Автор
              05.07.2015 01:01

              Вы определенно в чем-то правы и при прочих равных, если бы я мог за счет 20% усилий получить сразу 80% продукта (а я вижу, что закон Парето сквозит у Вас во всем), то я бы так и поступил. Возможно даже следовало бы изначально выбрать такой проект, в котором можно было бы быстро сделать весь функционал, а количественное мяско нарастить потом.

              Но мне кажется, что Вы все же излишне грубо чешете все приложения под одну гребенку и не видите нюансов.
              Я не мог выпустить эту игру даже с тремя играми в составе — это смотрелось бы какой-то сырой поделкой. Об одной игре я вообще молчу — без шансов. Очень сложно продвигать сборник карточных игр, в котором пока только одна игра, обещая, что позже будет больше. Это как-то по-детски.

              Есть конечно и сугубо личный момент с тем, что я считал, что ты либо запускаешь на орбиту свой проект в первые 30 дней, либо отправляешь на дно истории и потому мне было очень важно сделать хорошо с первого раза, сразу же выпустить продукт во всей красе. Это, конечно, ошибка, которая тем не менее повлияла на критическую массу объема проекта накануне выпуска.

              Я вижу, что Вы смягчили требования и теперь не просите искать на стороне каких-то непредвзятых людей, которые бы посмотрели и сказали что не так еще до выпкска. Спасибо Вам за это.
              Что же касается того, что за год я бы узнал чего хотят или не хотят пользователи — вряд ли. Скачек просто не было бы (кому нужна очередная карточная игра без изюма вовсе, а изюм в данном случае — обилие, если его можно так назвать, игр и их покупка — такой вот замкнутый круг, порожденный болезным рассудком).

              Вы правы на самом деле — спорить тут действительно не о чем, это очень сильно субъективный вопрос. Я Вас услышал, я понимаю прекрасно какие механизмы Вами движут и соглашусь, что в 9999 случаев чем раньше запуск, тем лучше и чем больше мнений есть в качестве исходного материала, тем лучше, но продолжаю быть увереным в том, что мой этот случай — как раз-таки исключение, этот самый 1 из 10000, когда такая тактика как минимум ничего бы не дала, а скорее всего — еще бы и испортила. Возможно, дело тут просто в банальных эмоциях и неуверенности в себе.

              Возможно, Вам будет легче, если я скажу Вам, что на данный момент всё, что сделано в игре составляет как раз около 20% того, что есть в моей голове. Пока что есть — наверняка там шестеренки будут вращаться и будет что-то добавляться. И речь тут не о количественном показателе контента (больше, больше игр), а именно о качественном развитии — добавлении того же онлайна, ну или еще с десяток других нововведений, о которых я распространятся не буду. Так что по сути это и есть пока только 1.0. Такой вот гигантизм, граничащий с манией величия, очень жаль, да.

              Спасибо Вам большое за проявленную, буквально отеческую заботу, я вижу, что Вы искренне хотите помочь, но я также вижу и то, что Вы вращаетесь в мире крупного бизнеса, где есть стартапы, инвестиции и best practices по разработке коммерческих продуктов, я же изо всех сил пытаюсь нащупать свою тропинку и да, считаю всё же происходящее больше искусством, нежели коммерцией, развлекаюсь одним словом. Посмотрим что из этого выйдет )


  1. podkolzzzin
    03.07.2015 11:03

    Автор статьи сделал невероятный труд!
    Мы с другом с пол года назад тоже делали игру, читая статью понял, что и сами прошли 7 кругов наивности, я отлично помню как мечтал отдохнуть после выпуска, хоть и не работал над игрой каждый день, хотя был момент, когда продержался 60 дней подряд.
    Мне было бы интересно с ComradMax пообщаться, а не тулить свои неупорядоченные мысли в коммент на хабре. Если интересно пишите мне, поделимся граблями на которые наступали.


    1. ComradMax Автор
      03.07.2015 11:12

      Вы, видимо, предпочитаете тулить свои неупорядоченные мысли не в коммент на хабре, а мне в личную переписку ) Ну что ж, пишите, конечно, либо на penglizerkut@gmail.com, либо в личку — не знаю какой из этих методов вы имели ввиду, когда предлагали мне инициировать эту переписку. Да и начать с чего, я честно говоря, что-то не придумал, в голову пришло лишь для начала посидеть и помолчать в переписке скромно, повздыхать о граблях, материал ручек их обсудить что ли