Велосипедостроитель
3,2
рейтинг
9 декабря 2013 в 11:39

Разработка → Насколько долго можно делать браузерную игру, не имея огромного бюджета в кармане из песочницы

Итак, в мае 2013 года на хабре появилась статья «Сколько стоит сделать браузерную игру», где господин viacheslavnu пробовал посчитать — какая сумма средств потребуется на создание и продвижение, казалось бы, простецкой игры для офисного потребителя. Если кто не помнит – сумма получилась в районе 25 миллионов рублей. На тот момент я сам несколько скептически отнесся к указанной сумме, но чем ближе подходила дата нашего старта, тем больше я убеждался, что даже для таких проектов нужны «особенные» вложения капитала, которые не всегда по карману разработчикам без инвестора со стороны.

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

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

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

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

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

Вы вообще кто, уважаемый?


Начнем с самого начала, дабы пояснить причины такого проекта. Я – PHP-разработчик, пытающийся работать с Yii framework, знакомство с которым произошло благодаря моей первой официальной работе в вебстудии «местного разлива». Я далеко не гений своего дела, не знаю досконально всех тонкостей языка и фреймворка, но, как оказалось на практике, моих знаний достаточно, чтобы более-менее спокойно себя чувствовать при появлении нестандартных задач.

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

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

Где взять людей?


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

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

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

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

Лапы, крылья и печеньки


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

Выделяющиеся из толпы конкуренты были определены сразу. Помимо вышеупомянутого «Бойцовского клуба», в некий топ вошли: «Ботва онлайн», «Bad Pets» и «Мосвар». При этом последние трое уже давно отхватили каждый по своей доле игроков и спокойно развиваются в своем направлении, не мешая друг другу. У одних «свинтусы» и «барантусы», у других «пингвины», «кошки» и «белки», а у третьих — своя атмосфера.

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

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

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

Поток мыслей


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

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

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


Лучшие идеи получали более детальную прорисовку и цвет:


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

Кстати говоря, наблюдать за работой других людей оказалось очень интересно, особенно, если чей-то подход к работе отличается от привычного. В частности я имею в виду нашего художника, который начал с того, что собрал огромное количество материала по птицам: кучу статей, фотографий, рисунков и схематичных набросков. В первые недели проекта я видел его попытки создать свой стиль рисовки – появлялись различные скетчи крыльев, лап, глаз, оперения. Это тогда ввергло тогда меня в дикий восторг, от чего хотелось работать над проектом с особым усердием.

В каждом начале проекта есть свои ошибки


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

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

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

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

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


Чуточку позднее этот хаос был упрощен:


А еще через какое-то время художник, наконец-то, набросал по выбранному макету примерную задумку для общего оформления:


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


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

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

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

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

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


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

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

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


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


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

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

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


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


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

Очередная волна


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

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

Куда же деть лень?


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

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

Возьмем хотя бы такую ситуацию, когда сервер упал и не поднимается. Благо мы разумные люди и делаем бэкапы, но объем данных таков, что быстро поднять его на любой другой машине не удастся – минимально это займет от 20 минут до часа. Но ведь если разделить данные на «важные» и «не очень», то достаточно развернуть бэкап с основными данными, чтобы восстановить работоспособность системы, а остальное уже пускай подтягивается через час-другой. Эту задачу можно решить средствами программиста, если не хватает знаний администрирования. Данные, которые можно было ненадолго потерять (в нашем случае — логи боев, письма, тикеты техподдержки, клановые письма и пр.) можно перенести в отдельную базу данных, которая может восстанавливаться из архивов дольше основной, и при этом система вполне может работать после быстрой развертки минимально необходимого для работы архива основной базы. По предварительным расчетам на нашей системе, соотношение дополнительной базы данных к основной составило: 70 к 1 – существенная разница при больших объемах данных.

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

Аналогичным образом, во избежание поисков текстовых описаний непосредственно в классах проекта, повсеместно используется Yii::t(). На самом деле, данный функционал обычно используется для поддержки мультиязычности, но чем плохо его использование для отделения кода от литературного описания ошибок пользователей?

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

Рубленый дуб на зубочистки


Вернемся к оформлению. Сделав очередной коммит в репозиторий проекта, я заметил, что у дуба сначала пропал ствол, а через несколько недель пропала и крона. Игровое поле начало летать в воздухе, а оформлением на проекте и не пахло – дуб стал жертвой очередного редизайна. Точнее сказать, наступило ожидание нового заключительного дизайна.

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


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

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

Очередные изменения в команде


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


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

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


Конечно же, срок в 2 дня был далек от реальности, но это уже не настолько было важно. В июле 2013 года от проекта окончательно отказались концептщики, без объяснения причин. Учитывая тот факт, что их трудовая деятельность закончилась еще на ранней стадии проекта, сюрпризом это не стало. В итоге, в команде осталось 4 человека – два художника, координатор-мастер-на-все-руки и программист.

К середине июля появился ночной вариант оформления дизайна, меняющийся на дневной в зависимости от игрового времени суток:


А выдержит ли?


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

На тот момент у нас на руках имелись две виртуальные машины в Hetzner – vq7 и vq12, на которых мы тестировали всю работоспособность сайта и поддержку репликации. На vq12 находилась, в том числе, и dev-версия, куда попадали обновления доступные только для разработчиков.

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

Виртуальная машина с легкостью выдержала наличие 10 тысяч пользователей (включая расчеты по поиску пользователей, пополнению здоровья и прочие функции, которые касаются массовых выборок), а потом и 20 тысяч пользователей. С максимально доступной частотой был запущен механизм проведения боев между случайными противниками – в среднем бой рассчитывался за 2-3 секунды. Не шибко хороший показатель, но это же была виртуальная машина, что казалось вполне приемлемым результатом.

Любопытство несколько захлестнуло меня: показатели использования процессорного времени и оперативной памяти были далеки от 100% загрузки. Во время некоторых разбирательств MySQL начал рассказывать страшные истории про запись tmp-данных на диск, которые не хотели вмещаться в память. А на самом деле, проблема заключалась в шальном ORDER BY RAND(), который неожиданным образом закрался в поиск противника для боя. Перенос выбора случайного противника в PHP-код решил проблему узкого места, и скорость работы расчета боя увеличилась в 30 раз – до 10 запусков в секунду. Учитывая, что мы рассчитывали на проведение 2-3 боев в секунду в реальных условиях, что выдержала бы и имеющаяся виртуальная машина, мы были очень довольны результатом.

Сроки установлены


Ближе к августу 2013 года мы окончательно определились с датами запуска проекта. 30 августа должен был состояться запуск официального альфа-тестирования, куда были приглашены чуть более десятка тестировщиков. Первичный старт, называемый закрытым бета-тестированием, был назначен на 2 декабря. Старт игры получил дату – 3 марта 2014 года.

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

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

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

И тут до нас стало доходить, что качество разработки – как кода, так и продуманности игрового мира, идеи, общего дизайна и иллюстраций – вышло на тот уровень, что после запуска можно спокойно ощущать себя среди аналогичных конкурентных «матерых» проектов. Был лишь один момент, с которым мы откровенно проигрывали – у нас не было бюджета на рекламу, единственное, что мы могли себе позволить — это неким мифическим способом набирать себе статус через социальные сети. Для этой цели была придумана история, разделенная на небольшие главы, – эта история с 19 сентября публикуется раз в два дня вместе с одной из иллюстраций игры в социальных сетях. Тем самым мы рассчитывали поддерживать интерес и набирать базу подписчиков, готовых начать игру в момент запуска. К концу первой декады октября ситуация по количеству заинтересованных оказалась не шибко радужной – порядка 130 человек записавшихся на бета-тестирование.

Преддверие старта


В начале ноября количество запросов на участие в бета-тестировании перевалило за 150 – совершенно «копеечное» число, и в голове поселились смешанные чувства.

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

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

И вот, наступает назначенное 2 декабря – дата, которая должна была ознаменовать старт «закрытого бета-тестирования» игры. В назначенный час мы разослали приглашения всем, кто оставлял свои заявки на промо-странице, коих оказалось почти 200 человек, и буквально через минуту после отправки пошли первые регистрации.

Прошла неделя, зарегистрировано чуть больше ста шестидесяти человек, из которых большая часть периодически возвращается в игру, а одномоментный онлайн составляет от 15 до 50 человек из зарегистрированных. Механизм привлечения посетителей, на который мы очень сильно надеемся (приглашение друзей в игру), потихоньку начинает действовать – более пятидесяти человек пришли к нам именно по зову друзей. Цифры, конечно же, смешные, я не говорю, что это уже «success story», но не имея многомиллионного бюджета на рекламу, мы не можем похвастаться другими результатами.

Сколько человек нужно, чтобы завершить проект?


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

С учетом всех, кто принимал участие, но вышел из проекта, 99% реализовали четыре человека за два года. Сухие цифры — на проект потрачено около 80 000 рублей. Из которых на разработку ушло 35 000. Остальное – на тестовые сервера и оформление «ООО». Это может сказать о том, что вся работа, которая могла быть выполнена командой — выполнена силами команды, и ни о каких-либо астрономических суммах речи не идет.

На текущий момент в проекте насчитывается более 8000 коммитов в более чем 1500 файлах, которые в общей сумме занимают около 15 Mb, без учета графики. База данных состоит из 130 таблиц, а в списке CRON-задач на сервере числится около 40 записей. На проект потрачено ориентировочно 10000 человеко-часов, которые ушли на решение более 2000 задач. Дизайн менялся 4 раза, двигаясь к ожидаемому идеалу, отрисовано более 300 иллюстраций, не включая различные степени детализации при изменении масштаба изображений.

Разработать игру, даже, казалось бы, простую, стандартную, коих полно, — ни разу не оказалось простым занятием, тем более что мы сами себе усложняли проект вводом дополнительных интересных задач, но – это ни в коем случае не пустая трата времени.
@brntsrs
карма
63,0
рейтинг 3,2
Велосипедостроитель
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

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

  • +23
    Спасибо за статью, очень интересный рассказ!
    И я полагаю, что выражу общее мнение, попросив приглашений на бета-тест)
  • 0
    Приглашения рассылаются в течение рабочего дня администраторами — практически сразу после подачи заявки (в угоду маленького числа пользователей и нормальной работоспособности сервера). Если есть желание — просто заполните поле почты, в скором времени получите приглашение.
    • +1
      А ссылку то можно на проект? А то я даже названия не нашёл :(
      • +4
        Название проекта можно разглядеть на логотипах и скриншотах, ссылка не была вставлена в пост, дабы не превращать его в полную рекламу, не соответствующую хабу.
        А так — пожалуйста pernatsk.ru
        • –1
          прочитал правила игры (=
          смутил вот этот абзац.
          В случае, если аккаунт игрока в результате программных ошибок игры (в том числе баги, недоработки) и\или действий администрации игры был поставлен в невыгодное положение, то игрок не вправе рассчитывать на возмещение и\или восстановление аккаунта на момент предшествующий случаю, приведшему к изменению.
          • +5
            Быть может, формулировка несколько грубовата и выглядит устрашающе, но общий смысл, который мы хотели донести, такой: «Если в результате каких-либо технических проблем у нас сгорит сервер, уничтожится база данных или произойдет другой непредвиденное обстоятельство, препятствующее сохранности данных, и при этом вдруг у нас не окажется работающего бэкапа, то пользователь не может получить возмещение чего-либо или восстановление данных в условиях невозможности таковой процедуры.»
            • +2
              Лично для меня это звучит: Если ты купил печеньки и сервер упал, то это форс-мажoр и печеньки ушли > /dev/null
              imho нужно другую формулировку
              • +5
                Я так понимаю, что вы все правильно поняли и звучит так же, как и является на самом деле
                • +1
                  Почти во всех лицензионных соглашениях есть такое, только обычно не на русском или английском, а на юридическом языке
          • +5
            Это чтобы не было претензий по поводу пропавших свиней девятого уровня.
  • +3
    Классный рассказ! Молодцы и удачи!
  • 0
    Коллеги и товарищи, благодарю за проявленный интерес и добрые отзывы.
    Сейчас у нас обнаружились странные моменты с одобрением инвайтов — с нашей почты яндекса не доходят письма до google, хотя остальные почтовые системы принимают исправно. Если кому-то не удалось или не удастся получить приглашение — обратитесь в личку за прямой реферальной ссылкой.
  • +1
    По поводу «ни о каких-либо астрономических суммах речи не идет» — тут смотря что считать.
    Вы — супер, не бросили на пол дороги а доделали до состояния беты. Молодцы без всяких скидок. Но таких как вы — единицы, а «норма» — это или всё загнётся когда первоначальный энтузиазм заглохнет, выясняется что это самая настоящая работа, причём неоплачиваемая или да, надо нанимать людей и все эти 10К часов оплачивать.
    Удачи в раскрутке!
    • +1
      Безусловно, вся получившаяся работа — это огромное количество времени и сил каждого (ну или почти каждого) члена команды. Но если в проекте есть люди, которые готовы идти до победного, они могут за собой потянуть всех остальных, передавая свой энтузиазм другим. Меня лично тянет наш координатор проекта, причем с такой силой, что я вряд ли когда-то по своей инициативе брошу проект, несмотря на то, что мне порой жутко лень что-то делать.
  • 0
    Очень красиво нарисовано. А бывают ли интересно браузерные игры с анимацией, но без флеша, выполненные в клинской части только с помощью JS?
    • +1
      Бывают.
  • +17
    Типичная ошибка — не учитывать свое время в расчете бюджета проекта. Реально вы потратили намного больше, чем 80 тысяч.
    • 0
      Если судить о потраченных ресурсах в целом — да, несомненно. Если судить с точки зрения реальных потраченных денег из своего кармана — сумма небольшая. Общая мысль бюджета такова — порог вхождения в сферу разработки подобного проекта достаточно низок, чтобы мы два года назад смогли начать над ним трудиться.
      • 0
        Вы большие молодцы. Но когда-нибудь придет понимание, что лучше было бы отдать деньгами, хотя бы часть :)
        • +2
          Деньги — несомненно хороши, однако лично моя выгода на текущий момент такова, что я получил массу опыта, который позволил мне иметь достаточную зарплату на основной работе, новые контакты и некоторую возможность в будущем работать все свое основное время над своим проектом, а не над чужим. Координатор проекта наладил несколько новых контактов, получил много опыта руководства крупным проектом, опыт работы с кодом, версткой и тд. Художники получили опыт работы в команде, поддержки единой стилистики в большом проекте.
          Все мы уже в плюсе — для каждого участника команды наш проект является хорошей строчкой в резюме.
          • +2
            Кстати, теперь ждем статью про техническую реализацию проекта.
            Я так понял на Yii написано все?
            • 0
              Что ж, попробую выразить в тексте техническую составляющую, только боюсь, не быстро это будет.
              Да, там Yii framework, некоторым образом расширенный в определенных частях, но, в целом, все тот же добрый фреймворк.
              • 0
                Вот особенно про расширенный интересно :)
                • 0
                  Расширенный он в тех местах, которые специфичны данному проекту, и вряд ли все моменты могут подойти другим. Но я понял, записал себе в задачник.
      • +1
        10000 часов — это даже по минимальному рейту 10$ уходит 100 000$, а если учесть что я лично за работу по выходным требую двойную оплату, то четверть милиона легко.
        Если вы неженатый без обязательтств то воспринимаете легко это, а в другом случае это время отнятое у семьи как минимум.
        Окупит ли эти затраты игра не знаю, но желаю удачи.
        • 0
          а в другом случае это время отнятое у семьи как минимум

          Или от танчиков/хабра/футбола/… :)
    • +7
      Это не ошибка это подход такой, целенаправленный.
      У человека есть источник дохода, поэтому свое время не меняется напрямую на деньги.
      Поэтому и говорят о собственных затратах на проект, а не о затратах вообще.
      Т.е. говорят не о стоимости проекта в целом, а о прямых затратах на проект.

      Как пример:
      Допустим вы зарабатываете 3000 руб в час.
      Пусть на поход в магазин вы тратите 30 мин и хлеб стоит 40 руб.
      На вопрос, сколько стоит хлеб, вы же не будете отвечать 1540руб, верно?
      • +2
        Если каждый день половину рабочего дня я только и делаю, что хожу за хлебом, то именно так и должен отвечать. Ибо за то время пока за ним ходил — заработал бы еще.
        • +1
          Если на окладе, то нет. если, конечно, не уволили :)
        • +2
          Тут остается момент заинтересованности. Если работать 10-12 часов в сутки над чужим проектом, за работу которого ты несешь сеюминутную ответственность (за качество кода, за скорость разработки, за юзабилити и тд), то в таком темпе работы достаточно быстро можно выдохнуться. Год-полтора назад я имел подработку на дополнительные 15 часов в неделю (2 часа в будний день, 2.5 часа в выходной), через полгода мне совершенно не захотелось продолжать работу над проектом — основной код проекта не мой, написан плохо, задачи вне моего понимания и кажутся мне логически неверными.
          Однако, когда код полностью собственного изготовления, и отсутствует непосредственное злое лицо-заказчик, можно выбрать любую задачу из предложенных, самому придумать интересную задачу, потратить кучу времени на хорошее решение и тд — это делается с большей легкостью, даже при отсутствии текущей оплаты (которая с некоторой вероятностью может быть больше после выполнения проекта, нежели обычная зарплата).
    • 0
      Свободное от работы время многие считают бесплатным. И не без основания — возможности и(или) желания заработать дополнительно нет.
  • –2
    80 тысяч — за два года, — не верю. не менее полутора миллионов должно было уйти по самым недорогим подсчетам. или команда не в России.
    • +4
      В том случае, если делать официальную работу на полную\частичную ставку в офисе — возможно (но сумма, вероятно, куда больше будет). Если заниматься этим в качестве «личного проекта» в свободное от других дел время — мы имеем то, что имеем, все участники проекта являются фактическими владельцами проекта.
    • +1
      за полтора миллиона рублей, проект бы делался не 2 года, а сильно меньше.
      • +3
        полтора миллиона для игры — не бюджет, разве что для простенькой мобильной аркады, так что делался бы так же два года.
        • 0
          Они ж не по 8 часов в день его пилили, а после работы. Так что намного меньше бы делался. Я вот сам уже полгода пилю игру, которую от силы месяц делать, если на полную ставку.
  • 0
    Вы молодцы. Лишь очень немногие проекты, которые делаются на энтузиазме, доходят хотя бы до альфы (а это только начало).

    Присоединюсь к мнениям выше, что потрачено на проект 80 т.р. + 62.5 человекомесяца (10000/160) * некая усреднённая з/п. Конечно, это весьма условно и есть ещё много факторов, но это хотя бы даёт (в первую очередь вам) представление о затратах.

    Удачи в развитии проекта. Через тернии к звёздам.
  • 0
    Дизайн чем-то напоминает бразуерку travian.
  • +1
    Почитал с интересом, вы проделали огромную работу почти на чистом энтузиазме, это весьма впечатляет. А еще аватарка у вас клевая :)
  • 0
    А за что Вы его отранжировали на «18+»?
    • +3
      Господа из правительства могут усмотреть у нас «пропаганду насилия», нелицеприятные изображения курящего трубку бурундука и черт еще знает что, что может поселиться у них в голове. Проще перестраховаться и поставить соответствующий рейтинг.
      • 0
        То есть детей все таки на бета-тестирование позвать можно?
        • +2
          Непосредственно с нашей стороны нет тому препятствий. Проблемы могут создать пользователи, нецензурно выражающиеся в момент своего негодования, либо публикующие сомнительные тексты. Изображений, текстов, призывов и прочего, нежелательного для ребенка (за исключением возможности «побить» птицу противника), в нашем проекте не предусмотрено, и за этим будет пристально наблюдать совет администраторов, модераторов и гейм-мастеров.
  • +1
    Вы молодцы! В начале читал как про себя… тоже начали игру на энтузиазме, дошли до середины и остановились. У меня родился сын и год пришлось посвятить ему… но вдохновившись вашим рассказом. обязательно продолжим! Спасибо и удачи!
  • +1
    Спасибо за статью, интересная история. Но так как сам тоже занимаюсь браузеркой, опасаюсь что без покупки трафика вряд ли получится держаться на должном уровне.
    Если не сложно — потом отпишитесь, как хабрэфект отразился на регистрациях и активных игроках.
    • 0
      Однозначно. Мой совет: тестируйте монетизацию, получайте хорошие показатели и затем ищете инвестора. :)
      • +3
        А зачем инвестора, если есть хорошие показатели? :)
        • 0
          Это дешевле кредита. :)
      • +1
        У меня другая проблема, монетизация есть (трафик окупается менее чем за месяц), инвестор есть, а хорошего трафика нет.
        • 0
          Нужно искать подходящий трафик. Раз не хватает объема дешевого трафика и требуется дороже — нужно улучшать конверсию. Все стандартно, нет каких-то фантастических методов. :)
  • +1
    Насколько помню, в законе о защите детей от информации… нет градации 18+, самая крайняя градация, по закону, ограничивается 16+ годами.
  • 0
    А как вы разрулили с концептщиками. Понятно, что они нужны в основном на старте проекта, и поначалу их вклад в проект весомый. В случае найма все ясно — концепт хорош, получите распишитесь. А вот в вашем случае непонятно как разруливать, особенно если концепт сильно изменится от первоначального уже заслугами других людей.
    • 0
      С «разруливанием» ситуации помогли хорошие отношения координатора проекта с этими самыми ребятами. Мы их не бросаем просто так, и готовы будем выдать долю, соразмерную их труду в проекте. Хуже получилось с веб-дизайнером — он был моим другом, и после его ухода из проекта, наша связь с ним прекратилась по многим причинам, в том числе и не связанным с проектом. Правильно говорят — не стоит делать бизнес с друзьями, но при создании бизнеса можно найти новых хороших друзей.
      Более того, реальная потребность в концептщиках есть и будет на всем сроке разработки проекта — пользователи получают новые уровни, проводят время в игре, текущий функционал наскучивает и требуются новые «заманухи» для продолжения игры. Но перестать тратить время на проект — их выбор.
  • 0
    del
  • +10
    Координатору памятник, вытащил проект на горбу :)
  • +1
    Статья хорошая, проект тоже.

    Есть вопрос мучающий меня весь деть (статью прочитал с утра):
    — Проект окупился? Каковы результаты?
    • 0
      Рано еще судить… но я думаю у них все получиться!
    • 0
      Как минимум — ребята опыта набрались.
      Временами\местами это очень важно и очень помогает в дальнейшем.
    • 0
      Еще только бета-тест по инвайтам. В марте релиз будет
    • 0
      Про окупаемость говорить можно будет месяцев через 5-6. Реальный запуск проекта (открытие возможности покупать игровую валюту) намечен на первые числа марта грядущего года. И реальный заработок наш зависит от того, готовы ли будут люди добровольно поощрить нас финансово — для 99% функционала в игре предусмотрена наряду с донат-валютой оплата обычной игровой добываемой валютой, которую действительно можно добыть (во время альфа-тестирования она достаточно легко давалась на средних уровнях игрока).
      • 0
        Понял. Я почему-то подумал, что релиз был в марте этого года.

        В таком случае желаю Вам удачи и хорошего взлёта. Ожидаю статью про результаты.
      • 0
        Вот вы написали про 80 тыс рублей расходов, а на самом деле расходы-то у вас только начинаются ))
  • 0
    После публикации на хабре увеличилось количество пользователей?
    • 0
      До статьи ко вчерашнему дню количество зарегистрированных игроков составляло около 160 человек, из них около 80-90 человек в течение дня заглядывали в игру, одномоментный онлайн составлял 15-50 человек.
      По результатам вчерашней статьи во время пика активности онлайн был почти 200 человек одномоментно, зарегистрировано почти 700 человек и 350 ждут инвайта (который отправится сегодня в 9:00 мск). В пике активности на сервер отправлялось до 10 запросов в секунду, в сею секунду сервер живет под нагрузкой в 4 запроса в секунду — это не хабраэффект, мы от коллапса защитились наличием регистрации и обязательным инвайтом, но текущей нагрузки сервер практически не заметил, значит можем наращивать обороты.

      Ранее в игре были в основном игроки, пришедшие с конкурирующего проекта, они слегка в шоке от наплыва незнакомого люда. Остается вопрос, сколько из зарегистрированных останутся играть дальше.
      • 0
        Вот вам и маркетинг :) Все у вас получится.
  • 0
    Вы — молодец! Пост очень захватывает. Прочитал на одном дыхании.
    Удачи вашему проекту!
  • +1
    Вы большие молодцы. Очень интересно было бы почитать такую же отчетную статью от координатора проекта — даже не представляю себе как он все это разрулил? Я так понял, что он в процессе стал и верстальщиком, и дизайнером, и концепщиком, и копирайтером — или часть все таки отдал фрилансерам?
    • +1
      На фриланс ушел только один макет верстки и изображение дуба — остальное реализовывалось уже средствами команды. Но сам факт избавления меня от верстки посредством фриланса тогда дал сильный толчок к дальнейшей разработке, появление дуба создало тот же самый эффект, и только потом мы смогли аналогичные вещи делать внутри проекта, не вынося на фриланс.
      И да, на текущий момент координатор проекта сочетает в себе роли верстальщика, веб-дизайнера, концептщика и копирайтера. Другое дело, что с момента старта альфа-тестирования (когда к нам на проект пришли около десяти человек из близкого круга знакомств), частично помощь в тестировании моего кода, проверке юзабилити интерфейсов координатора, генерации идей для проекта стала поступать от первых тестировщиков на добровольных началах.
  • 0
    Огромное спасибо за статью!
  • 0
    Сходу вопрос — почему и здесь надо регистрироваться, если можно прикрутить за 10 минут uLogin и не только облегчить жизнь юзеров, но и получить больше информации, включая аватарки и т.п.
    • 0
      Пользователю все равно придется придумать имя своему персонажу — вряд ли кто захочет играть под реальными именем и фамилией. Но мысль ясна, сделаем к полному открытию.
  • 0
    Интересная история. Желаю удачи и успеха вам с вашим проектом.

    P.S. Заявку на тест отправил.

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