Три пути у человека, чтобы разумно поступать:
первый, самый благородный, — размышление;
второй, самый легкий, — подражание;
третий, самый горький, — опыт.
Конфуций


Однажды прохладным весенним вечером 2013 года захотелось мне сделать собственный аналог приятнейшей старой игры Scorched Earth, но с разными вытребеньками. Под хорошее настроение и заводную музыку я бросился кодить на первом попавшемся под руки IDE и фреймворке. По злой иронии это оказался WFP для Windows 8 Store. А вот для полета снаряда и реакции окружения я взял Farseer Engine — C# порт Box2D.
Сам уже не помню, как от идеи разрушаемой земли и баллистических ракет я перешел к катапультам, строениям из блоков и монолитному ландшафту. Так и началась двулетняя история моего клона Angry Birds.


Лето


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


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


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

Медленно пришло осознание, что проект выходит на другой качественный уровень, и понеслось: для соответствия фонам локаций я заказал другому художнику иллюстрации, сам доработал и дорисовал модельки орудий в 3d и 2d, чтобы подогнать по стилю, научился работать с форматом редактора Gleed 2D и начал рисовать уровни один за другим, заказал амбиент музыку для локаций, купил саундтрек для основной темы и многое-многое другое. Чтобы игра была не «просто клоном» я придумал киллер-фичу: противники стали огрызаться и атаковать игрока.
Лето заканчивалось.


Осень


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

На фоне всего этого я редко задавался вопросом, почему акцент сместился с «трешнячка» с краденой графикой на масштабный проект с сотней уровней, а вместо движка я использую WPF Canvas, Rectangle и ImageBrush. Эту лютую связку я достаточно хорошо отладил, использовал сложные трансформации, имитировал параллакс эффект для фонов, пусть и тратил на каждую такую операцию непростительно много времени. Какое-то время я себя успокаивал, что это все даст мне покрытие сразу четырех платформ: десктопный Windows, мобильный Windows Phone 8 и планшетный Windows 8, а заодно и Silverlight версия для веба. А уже для Android и iOS я что-то придумаю. Благо, Visual Studio не доставлял особых проблем, а устройствами и лицензиями Microsoft меня обеспечил.
Тогда же я невероятным усилием сделал полуавтоматический порт с C# + WPF Canvas на JavaScript + HTML5 Canvas, чтобы поучаствовать в конкурсе на Tizen и просто выйти в веб, а может и на другие платформы без нативного кодинга.
Была выложена версия в Tizen Store, Windows Marketplace и Windows Store и готовы три локации из пяти, когда полетели белые мухи.


Зима


Холодный сезон я начал со сдержанным оптимизмом — купленные обзоры и фичеринг от Microsoft приносили много закачек, правда дохода игра принесла совсем мало — около $50 за полтора месяца, хотя на обзоры и рекламу было потрачено вчетверо больше. Я связывал это с кучей факторов, непопулярностью Windows Phone, ненавязчивой монетизацией через In-App покупки и т.д. Две последние локации все оставались закрытыми, но я пока не мог найти в себе силы сделать уровни для них и выпустить масштабный апдейт. Веб версия нещадно тормозила на Tizen эмуляторе и на мобильных устройствах Apple и дешевых Андроидо-фонах, потому была заброшена.
Тогда же пришла идея выложить десктопную версию на Desura и Steam. С первой проблем не было, а во втором оказалась сложная процедура аппрува сообществом через Steam Greenlight. Именно в Greenlight сообществе я впервые услышал мнение, что игра — говно.
Затем был день рождения кого-то из родственников и я подсунул планшет с игрой 12-летнему племяннику. Он честно прошел 17 почти одинаковых первых уровней, три раза попробовал пройти 18й и начал искать, что еще есть поиграть на планшетике.
К новогодним праздникам цифра дохода дошла до $100, что вместе с продажей призов от конкурсов хоть как-то смогло компенсировать треть расходов на графику и рекламу.


Весна


К апрелю месяцу скачивания на Windows Phone стабилизировались на уровне 0-3 загрузки в день и до 5 загрузок на Windows 8. Проект пора было закрывать, но все еще крутилась мысль доделать последние две локации, но уже как-то иначе. Я разместил объявление о поиске левел дизайнера на рисование 30-40 новых уровней и адаптации старых. Через какое-то время нашелся интересный исполнитель, мы разговорились, обсудили ситуацию и я в очередной раз услышал, что игра — говно. Парень оказался опытным гейм-дизайнером и вместо разработки уровней я у него заказал детальный план по переделке игры для максимальной привлекательности и играбельности. Левелы согласился делать другой исполнитель (не преминувший заявить, что все готовые уровни — говно) и все, казалось, может ожить и заиграть, особенно на iOS. И тут WPF нанес коварный удар — код портироваться на нативные CGLayer и пр. он отказался в принципе. По-сути, надо было переходить на нормальный движок, но сил и желания не было. Я поблагодарил левел и гейм дизайнера, оплатил их время и закрыл проект.

Год спустя


За год я успел отойти от тяжелого поражения, выпустил кучку мелких и два средних проекта, поработал на телеком гиганта в коммерческом проекте. Клон был успешно забыт, контент и код хранился в архиве, но вдруг осенью 2014 пришло сообщение, что игра получила аппрув в Steam и её можно выкладывать в продажу. Это было странно, это было дико, это вызвало море эмоций. Но делать я ничего не стал — выкладывать проект, чтобы услышать снова про, извиняюсь, говно, очень не хотелось.
Тем временем мой самописный OpenGL 2D движок для одного Point&Click квеста успел неожиданно заматереть и стать достаточно стабильным, а заодно и позволял писать бизнес логику одновременно для iOS/Android/WP/W8/XP/Mac. Такой себе, доморощенный велосипед, который пришелся больше по душе, чем Unity со товарищи. Под этот движок я придумал очередной мелкий проектик «на два месяца» и с началом лета 2015 вышел на прошлогоднего левел дизайнера дабы продумать уровни к новой игре. В ходе бесед с ним и новым партнером и родилась крамольная мысль возродить птице-клон на новом движке. Пара экспериментов показала, что это теперь в разы проще, чем прямой порт с WPF на нативную графику iOS.
Как результат, новый проект был поставлен на холд и два месяца мы потратили на воссоздание игры. Были выброшены 80% старых уровней, переделан геймплей по плану прошлогоднего геймдиза, уменьшено количество повторений, улучшена графика, реализованы все локации и т.д. Одним словом, игра пережила второе рождение, а заодно были сделаны ачивменты, трейд карты и баджи для Steam.


Релиз


На прошлой неделе я выложил игру сразу в три маркета — iOS, Android и Steam. Первые два бесплатно с покупками, в Steam платно, примерно за доллар. Естественно, не обошлось без патчей в последнюю минуту; были баги и краши, внезапно не проходимые уровни и т.д., но все получилось оперативно уладить. Сообщество Steam восприняло игру весьма позитивно, количество негативных отзывов составило всего около 20%, покупки идут и сейчас, несколько человек уже прошли игру и взяли все ачивки, идет торговля картами и выкладываются скриншоты.
Одним словом, это была бы история со счастливым концом, если бы не показатели iOS и Android версий — в результате стартового фичеринга и обзора на 4pda стало ясно, что у нас есть аж 50 игроков и ни одной покупки. И это как бы не удивительно, ведь на этой же неделе вышли Angry Birds 2, где, похоже, свиньи могут атаковать игрока…


Резюме


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

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


  1. DoDius
    01.08.2015 20:50

    А можно ссылочку, пожалуйста?


    1. Nomad1
      01.08.2015 20:53

      Без проблем.
      store.steampowered.com/app/348340
      itunes.apple.com/app/id1006699098
      play.google.com/store/apps/details?id=net.runserver.siege_wars

      Мобильные бесплатно, если надо код на Steam — пишите в приват, мне не жалко. :)


      1. Wedmer
        02.08.2015 00:15
        +2

        Код на steam не нужен, уж лучше мы вас честно поддержим)


      1. Goodkat
        02.08.2015 02:40

        На iOS и Android портировали, а чего ж в Steam для OS X нет версии, почему только Windows?


        1. Nomad1
          02.08.2015 05:45
          +1

          Не успел в дедлайн. Выложу на след. неделе.


  1. Pompeius_Magnus
    01.08.2015 21:13
    +2

    Я куплю в стиме.
    Очень дерзко получилось :)


  1. avvor
    01.08.2015 22:16

    Круто. Помню в свое время я фанател от флеш игр Crush the Custle, и когда вдруг потом появились Angry Birds я подумал «какой отвратительный клон!». С тех пор Crush the Castle так и не появились в мобильных маркетах, а Ваша игра похожа на них, чем сильно понравилась!


    1. Wedmer
      02.08.2015 00:09

      Процитировал Вас в оценке игры на стиме.


  1. zagayevskiy
    01.08.2015 23:47

    Приятная игра. Только вот в птицах можно было менять силу натяженя, если я не ошибаюсь. А у вас — только угол.


    1. Nomad1
      02.08.2015 00:16

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


      1. zagayevskiy
        02.08.2015 11:14

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


        1. Nomad1
          02.08.2015 12:12

          Окей, попробую объяснить, как я это видел и кодил.
          Если бы была рогатка, то мы бы при перетягивании изменяли расстояние до нее и угол атаки. У катапульты же есть только стрела, которая наклоняется на угол от 10° до 80° между стрелой и основанием. Когда игрок тянет мышью или пальцем катапульту, между курсором (пальцем) и чашей натягивается невидимая нить, а противовес пытается поднять или опустить стрелу в положение в 80°. Вот этот угол наклона стрелы на самом деле влияет на силу выстрела — чем большую дугу проходит стрела, тем сильнее летит снаряд. Но игроку неудобно менять только силу, тестеры сразу хотели двигать траекторию вверх/вниз, как в птицах, потому я совместил сразу оба угла и мы выбираем между слабым выстрелом почти по горизонтали (стрела в 80°) до сильного выстрела навесом (стрела в положении 10°). Все попытки управлять двумя параметрами имея только одну анимацию стрелы были провальными.
          Вот уже для Скорпиона (баллисты) управление обычное — чем больше натянул тетиву, тем сильнее выстрел, а заодно можно немного менять угол.
          P.S. Если придумаете математически верную или хотябы удобную для плеера модель наведения катапульты с изменением силы и угла — с удовольствием встрою в игру :)


          1. Goodkat
            02.08.2015 13:09

            А почему бы не наплевать на достоверность и не сделать как в птицах, обозначив пунктиром траекторию?


            1. Nomad1
              02.08.2015 13:13

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


              1. Goodkat
                02.08.2015 13:20

                Чем дальше оттянул верёвку, тем сильнее выстрел, а угол выстрела брать из угла натяжения верёвки.

                Математика: угол выстрела из катапульты зависит от того, в каком месте заряд вылетает из ковша, начальная траектория — это касательная в этой точке. Вот из этой точки и рисовать траекторию.


                1. Nomad1
                  02.08.2015 13:30

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


                1. zagayevskiy
                  02.08.2015 18:25

                  Это все хорошо, но там не рогатка, а катапульта.


      1. Kvarkas
        02.08.2015 16:22

        есть такая игра Worms, что меня в ней дико веселило так это смена оружия, особенно взрывающиеся коза :) может стоит подумать о расширении арсенала для атаки — не просто отянул и кинул, а например запустил и само бежит наводится или выстрелил вверх а там ветер, на парашуте какую бомбочку с временой задержкой пронес и скинул, нужно будет думать не только об угле наклона и силе, но и еще о ветре (дожде? снеге?) а что касается реализации то может быть бар который меняется от 0 до 100 не очень шибко и оттянув — просто ждать нужной мощьности и тогда отпускать


        1. Nomad1
          02.08.2015 16:25

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


  1. Wedmer
    02.08.2015 00:20

    Прочитал статью, купил и честно прошел первый набор уровней. Пока все звезды не получу, не успокоюсь. А вот к птичкам я как то быстро охладел. Лучше бы Rovio Darkerst Fear переиздали.


  1. kekekeks
    02.08.2015 13:40
    +1

    По злой иронии это оказался WFP для Windows 8 Store.
    Тем временем мой самописный OpenGL 2D движок для одного Point&Click квеста успел неожиданно заматереть и стать достаточно стабильным, а заодно и позволял писать бизнес логику одновременно для iOS/Android/WP/W8/XP/Mac.
    Вот что, спрашивается, помешало взять MonoGame? Который по сути заново реализованный XNA на все пречисленные платформы.


    1. Nomad1
      02.08.2015 13:46

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


  1. Jamon
    02.08.2015 15:23

    Чувствуется смелость и отвага. Респект!)


  1. engine9
    02.08.2015 15:39
    +2

    Не делайте клоны не рассчитав силы и без опыта. Вот так честнее будет.


  1. Kvarkas
    02.08.2015 16:27

    прикольная графика! Вот что касается отличия от клона — было бы очень здорово чтоб можно было вызывать на поединок других — тоесть что то типа исходного набора кубиков из которых строится оборона, в ней же орудия (ну там от лвл может быть больше набор кубиков) и тупо по списку кликнул — вызвать на поединок — и вперед, за 30сек не сделал действий, переход хода, ну как то так, в такое я бы очень даже играл бы :)


    1. ateraefectus
      02.08.2015 19:32

      Если я правильно понял идею, это уже клоном Worms попахивает скорее =)


  1. Viktorianec
    02.08.2015 21:13

    Если не секрет, сколько ушло в сумме +- на дизайн окончательной версии и стоимость саундтрека?) Спасибо.


    1. Nomad1
      03.08.2015 10:28
      +1

      Вообще весь контент игры + раскрутка + звук и другой аутсорс это около $5k. Звучит не много, но стоит туда добавить около 8 месяцев работы разработчика, зачастую не по профилю. Например, я сделал трейлер, который бы у проф монтажника занял час времени и стоил максимум $100. Сам же на это убил несколько дней, что в пересчете на человеко-часы Senior Developer как бы совершенно не выгодно.
      С другой стороны, я работаю на себя и это мое время, которое могу тратить как хочу, лишь бы это приносило удовольствие :)


      1. Viktorianec
        03.08.2015 17:05
        +1

        Ну, как сказать:) 5к относительно приличная сумма. Да ещё и время. А суммарно сколько получилось вернуть на данный момент, если посчитать все платформы?


        1. Nomad1
          03.08.2015 17:13
          +1

          5к, собственно, сравнимо с месячной зарплатой сениора, если продаться хорошей фирме. 8 месяцев по столько — вот это много. Но с другой стороны я занимался тем, чем хотел.
          Суммарно вернуть получилось около 2к, из которых половина суммы это планшет и телефон на конкурсе, четверть — доход с винды за 2 года, а остальное циферка из отчетов Steam, но там потом пойдут VAT, отчисления и комиссии, потому точно еще не известно.


  1. Msviblov
    04.08.2015 15:21

    Расскажите про гринлайт — сколько времени в итоге прошло до момента апрува, сколько голосов было, какое соотношение за/против? Спасибо.


    1. Nomad1
      04.08.2015 17:10
      +1

      Вообще, я хочу написать большую статью про выход в стим и что для этого надо. Пока кратко: прошло 14 месяцев, набралось ровно 2000 голосов «за» и около 7000 против, соотношение было 22/78. Удивительно, что с такой статистикой вообще что-то произошло. Для сравнения наш Hare In The Hat там получил 1500 за и 1500 против (49/51) за 2 месяца и был подтвержден.