
"Need water!" Итоги и цифры

Напишу и я свой первый пост об итогах:)
Прошел почти год с момента релиза моей первой игры «Need water!». Время подвести итоги.
За этот промежуток многое поменялось относительно подхода к арту, коду и прочим вещам в разработке. Но пока не об этом.
Под катом немного информации о том как делалась игра, опыт продажи и статистика.
Игра
Need Water!
Kong NG Sponsor
Начало
Постараюсь в кратце (не получилось).Был примерно октябрь 2012 года. На тот момент я вообще не умел программировать (частично был связан с геймдевом, но это не вписывается в рамки этой статьи). Были попытки делать всякие поделки на флеше. Но там всё обходилось командами gotoAndStop и play. Примерно в тоже время я начал читать этот блог — истории о том как люди быстро изучив as3 смогли начать делать игры. Можно попробовать (подумал я) и решил изучить ActionScript. В то время попалась не совсем нужная книга по этому языку и я подзабросил это дело на пол месяца. К счастью, один добрый человек посоветовал прочитать полностью книгу Колина Мука «AS3 с нуля» (или как-то так).

Мук. Осилить ~900 страниц с примерами кода, абстрактным тестовым заданием «Зоопарк» оказалось не так уж и легко. Особенно для человека, который ни разу не программировал. Почти два месяца ушло на изучение этой книги. Прочитав страницу приходилось перелистывать назад и вникать заново. В итоге после её прочтения я набросал код в котором каждую секунду в трейс выводилось рандомное число. Эмоции были неописуемые. Когда ты создал что-то своими руками и это работает!:)
Примерно в то же время, как и многие новички, я нашёл блог Антона Карлова. Ну что ж, спасибо, за такой блог. Очень вдохновляющим и полезным он оказался. Пришло понимание как должна быть устроена структура игры в плане кода. Стал понимать, что вектор медленный, а раст быстрый. Подходы к рисованию, анимации и прочему. Вообщем куча хаотически возникающих мыслей стали понемногу раскладываться на отдельные полки.
Идея игры
«Клон свомпи». Это первое, что мелькало в комментариях после релиза. Спорить с этим глупо, хотя изначально идея была совсем другая.Примерно в 2011 году, я увидел как человек играет в «Where is my water». «Сделать бы когда-нибудь игру с управлением воды» — подумал я. В саму игру я не играл. В то время у меня не было ни айфона, ни даже андроида. Мысль про воду как появилась, так и пропала. Ибо на тот момент я не умел даже программировать.
И вот, после того как я освоил азы as3, почему-то вспомнилась эта идея. Достав лист бумаги я быстро набросал основные детали. Идея «провести воду до трубы» сразу игнорировалась. Было придумано очень много элементов, с которыми будет взаимодействовать будущая игра. Пользователь мог выстраивать свои сооружения, использовать потоки ветра, регулировать напор, разные водяные мельницы, подводить воду к сооружениям, строить из этого цепочки, что бы всё работало; 3-5 видов жидкости и прочие фичи. Но то, что было на листах, увы пришлось порвать и выкинуть. Подробнее «почему» в разделе «Разработка».
Арт
До создания игры я умел немного рисовать. Ну как рисовать… В более раннем возрасте что-то изображал на последних листах тетради. Но это всё было несерьезно. Хотя уже тогда имел понятия о минимальной перспективе, свету-теням и объему. Ко всему этому еще добавилось архитектурно-строительное образование со своими чертежами и эскизами.Прочитав пару постов на богах, я понял, что необходимо купить хотя бы самый дешевый планшет. Ну что же, покупаем планшет и рисуем, делов-то. Это было моё первое заблуждение в рисовании арта.
Декабрь 2012. Прикупив wacoom «Baboo pen» за 100$ я сел обрисовывать отсканированные наброски. Печальный опыт:) Оказалось, что на планшете мне супер-неудобно рисовать. На бумаге я могу провести прямую линию и мало кто отличит, что это сделано без линейки. Но на планшете я этого просто не могу сделать. Линии были настолько кривыми насколько это возможно. Такими линиями нужно уметь рисовать. Держать стиль. Например как в известной KR или графика от Juicy Beast. Но не охота привязывать себя к единому стилю. (В последней своей игре я вообще не использую планшета. Вся графика нарисована мышкой по линиям во флеше).

«Надо привыкнуть» — возникла мысль. Но тут меня ждало второе разочарование. Этим разочарованием была флешевская кисть. Какая же она убогая… Приходилось по 5 раз рисовать одну и ту же линию, чтобы добиться хоть какого-то вменяемого результата. О идеале в контурах даже и мечтать не приходилось. До сих пор не понимаю почему разработчики Flash IDE не могут туда добавить обычную нормальную прямую кисть. Ну да ладно.
Так выглядела первая версия арта:

Каждый день просыпаясь и смотря на свой новый арт появлялось желание удалить всё полностью и рисовать заново. Впрочем это желание было исполнено 3-4 раза. Арт стал примерно такой (из финальной игры):

Всё равно картинка оставляла желать лучшего. Все эти нарушения перспективы, объема и света, возникшие всвязи c разностью времени. Всё это огорчало, но было решено оставить так. Ибо времени было потрачено не мало.
Разработка
Нарисовав часть арта я решил, что пора как-то начинать и код писать. С этого момента идея игры начинает по кусочкам откалываться, о чем я писал выше:)Итак, нужна вода. Гугл, поехали. Информации очень мало. Кто-то где-то что-то пробовал, но до финала не довел. Максимум, что нашел это жидкость на box2d у феронато в блогах. Воды там не было. Было желе. Медленное такое и некрасивое. Ну и ладно, хоть какая-то отправная точка. Сделаем из этого, что-то своё.

Поковыряв эти исходники я сильно огорчился. Вода реализована на физических телах — шариках. Их максимум выходит штук 50-70. И это без остальной логики и графики. Решил не убивать идею и искать другие способы. Нашёл. SPH. Проще говоря это частицы, которые умеют взаимодействовать друг с другом. Вязкость и прочие фишки. Нормальных алгоритмов я не нашел, но накачал около 10 книг (на немецком, английском и даже китайском).

На переваривание этих книг ушел где-то месяц с гугл-переводчиком. Благо немецкий я еще мог читать через слово. Подходы были разные, формулы разные. Где-то не хватало формул. Где-то книга заканчивалась словами «Примерно так выглядит подход к созданию SPH, формулы можно найти [тут][страница не найдена error 404]». Не знаю, возможно в то время у меня не хватило мозгов, чтобы это всё переварить в нужные алгоритмы, но эту идею я забросил.
Было решено вернуться к «шарикам»:) Как раз в то время попался тест Box2D vs Nape. Я выбрал Nape. Что позволило увеличить кол-во «воды» на уровне в 1.5 — 2 раза. Нужно было еще рыть землю. Я слабо представлял как реализовать рытье физических объектов (земли). Но тут как раз попалась демка с сайта Nape. Быстро передалав под свои нужны и немного настроив, вроде таки получилось рытье земли:)

Дальше стояла задача сделать эти шарики водой. В сети был посути один нормальный способ. Это threshold + блюр. Блюр придает шарикам размытие, а трешхолд обрабатывает это в псевдо-меттаболы. Но тут я столкнулся с 2 проблемами. Во-первых это выглядит очень некрасиво. Обрывистые пиксели, никаких отражений и бликов. Во-вторых этот способ оказался слишком медленным. Пробовал также прикрутить систему частиц оставляющее след:

Но всё это было не то. Вот тут моя полномасштабная идея стала уменьшаться в механику «Доведи воду до трубы»:(
Число жидкостей из 5 превратилось в две (вода и нефть). Потоки ветра были вычеркнуты. Из-за малого кол-ва воды также были вычеркнуты куча сооружений, водяных мельниц, цепочек и прочее. Механика стала «рой землю из точки А в точку Б и собирай алмазы».
Это убило мои силы и стремления. Где-то на месяц я забил на игру.
Спустя месяц, проснувшись утром, я всё же решил, что нужно довести до конца. Сделать из того что есть по максимуму интересное, так как незавершенность не давала идти дальше. Еще некоторое время я провозился с отображением воды. Шейдеры не тянули, всякие отражения отжирали слишом много процесоорного времени и FPS был в районе 15. Просто ради теста я решил выключить трешхолд и добавить просто 2 фильтра Glow, заранее вручную размыв исходное изображение шарика воды. И о чудо:) ФПС повысился до максимума, и у воды появилась возможность настроить блики, нормальный цвет и градиент. Это хоть как-то повысило настроение и я стал работать дальше.

Левел дизайн
Март 2013. Левел дизайна не было. За пол дня на листочке я набросал 16 уровней. Еще за 2-3 дня я отрисовал эти уровни и расставил элементы.Не советую никому так относится к уровням. Разработка обычно устроена так, что рисуется арт, делается движок, менюшки, звуки. И потом доходит дело до создания уровней. Очень часто создаётся иллюзия «Ну всё, сейчас уровни набросаю и готово». Так вышло и у меня. Лучше пусть у вас будет ущербная механика, некрасивый арт, но уровням уделите много времени, постоянно их корректируя и подгоняя баланс. Пусть игроку не понравится графика и звуки, но возможно уровни его затянут больше всего этого геймплея и арта.
Звуки и музыка
Тут не буду сильно расписывать. Думаю большинству тут сидящих это неинтересно. Тем более грузить терминами, софтом и прочим.
Скажу лишь, то, что звуки и музыка были записаны за 2-3 дня. Еще день на сведение и мастеринг.
Продажа
На самом деле изначально не думал продавать эту игру. Было желание доделать и пустить в свободное плавание с рекламой. Но после один камрад (привет!:)) посоветовал не тупить и идти на аукцион, предварительно показав игру на форуме. Я так и поступил.Уехав на сессию в другой город я следил за фидбеком, но напрочь пропала возможность работать над игрой и править баги. Не до этого было.
Спасибо всем, кто оставил фидбек. Еще спасибо Генералу за видео-ревью. Посмотрев этот скринкаст в игру были добавлены подсказки и выход в магазин во время уровня. Приехав домой и сделав все правки (которые еле уместились на двух страницах А4 формата) я отправил игру на апрув:)
Я был наслышан о подвигах Розека. Но моя игра видимо пришлась ему по вкусу. Очень был рад получить 8-ку:)

Уже тогда бродили эти плохие настроения по поводу флеша. Мол «просмотров нету, покупают дешево». Верить не хотелось во всё это.
Просмотров было много. Около 140 за месяц. Из них где-то 20 повторов. Игру смотрели как крупные так и мелкие спонсоры. Играли от 1 до 10 минут. В трекинге висело 15 спонсоров. Очень много пришло из рассылки FGL. Свою рассылку я делал, но как мне кажется результата 0. Хотя писали, что игра им понравилась, но нет бюджета и купят сайт-локи. Это не могло ни радовать. Вот только не всё так радужно.
Ставок почти не было. Было 2 небольших спонсора которые каждые 2-3 дня повышали ставку за эксклюзив на 50-100$. Не хватало там спонсора, который бы разбавил этот спектакль и настроил бы всё на более серьёзный лад.
Хотя я как ребенок радовался когда прилетела первая ставка:)

Игра весела месяц. Когда всё заглохло и спонсоры в пм отвечали мол «больше денег нет» — я нажал ластколл. Ластколл не дал ничего. Повторно зашли крупные спонсоры, глянули игру и ушли. На этом всё:)
Я выбрал эксклюзив за 2800$ + 280$ комиссия за счёт спонсора.
Им стал realgamez. Очень хороший парень, быстро провели сделку, подписали бумаги, я втроил брендинг и прочее. В июле 2013-ого игра уже была в релизе.
Статистика
Почти за год в игру сыграло 10.835.856 раз. Китайцев не мало. Но они ведь тоже люди:)Примерно 50% от этого числа прошли игру наполовину.
Полностью прошли игру — 30%.
Музыку отключили 3%. Всё таки необоснованно фгл придирается к кнопкам звука:)
Иногда радостно улыбаюсь когда вижу на неком сайте мою хакнутую игру. Люди старались, ломали:)
Что касается отзывов после релиза. Их было много разных. Кто-то заметил, что апгрейды в этой игре вообще ни к месту. Кому-то понравилось, кому-то нет. Это нормально:)
Помню как смотрел комментарии на каком-то арабском сайте. Забавно было это всё переводить и читать. В большинстве своём отзывы позитивные и это радует. Если кто-то потратил на эту игру 5 минут и еще написал позитивный отзыв, то значит это было не зря:) Были еще письма на почту о багах, просьбах выслать музыку. Но фиксить баги во флеш-игре после релиза это печально. Когда её растащили тысячи порталов, наврятле кто-то будет следить за твоей игрой и обновлять её. Всё равно владельцы порталов размещают эти игры пачками. Поэтому там осталось не мало багов.
Итог
Не хочу писать эту романтизированную чушь про «Я получил опыт и знания… бла бла бла».Вывод у меня немного другой. На разработку ушло почти 6 месяцев, игра сделана, продалась, сыграло в неё не мало людей. Я рад:)
Сейчас я бы наверняка много чего улучшил и оптимизировал, но это уже в прошлом.
Есть наработки по той, первоначальной идее, SPH движок и всякие фишки. Возможно будет сделана та самая игра, которую я изначально хотел. Но в 99% это будет не флеш:)
Как совет:
Старайтесь на ранней стадии подгонять будущий движок под идею. Прототипы например (хотя я скептически к ним отношусь).
Иначе это может сильно сгубить ваш замысел. Ну и над уровнями надо работать, а не просто напичкать их 100 штук в конце разработки.
Если кому понравилась статья, могу написать следующую про Fragment of Dejavu.
Всем мир:)
- +20
- ReMind
Комментарии (22)
I don't think the dynamic tree will be great for particles. For that I would use a uniform grid (assuming all the particles are the same size). For rigid body simulation, we cannot assume objects are similar in size. Otherwise I would use some sort of grid.
И еще, конкретно, про жидкости.
My intention with Box2D is to make a full featured, robust, and efficient rigid body simulator. I know that people would like to have particle and fluid support, but this is outside the scope of my work right now.
Вообще вода и делаеться на частицах (шариках), только не на box2d. Свой движок для симуляции можна написать буквально за пару часов. Или если лень, я уверен должны быть готовые решения (гуглить по кейвордам fluid simulation, particles, uniform grid).
Свой мини движок у меня валяется, недавно написанный. Но тогда я ещё толком не разбирался в программировании и не хватило ума это всё написать:)
конечно пиши
и бобр
Пиши про следующую.
но пишут их только те, кому перепала нормальная ставка :)
(да да, я и про себя в том числе)
Не был уверен, что на сайтлоках я смогу отбить намного больше чем предлагали за эксклюзив.
Эксклюзив выглядел «Прямо сейчас и без заморочек». Для первой игры это было важно:)
Во многих моментах напоминает мой путь )
Надеюсь, осенью созрею написать что-то подобное )