Программист игр
0,1
рейтинг
1 августа 2015 в 19:51

Разработка → История одного клона


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


Однажды прохладным весенним вечером 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, интегрировать ачивменты. Ну а главное, теперь я могу трезво оценивать свои силы и вижу какие задачи могу решить сам, какие с помощью команды, а за какие не стоит и браться.
И напоследок совет: не делайте клоны!

Алексей Гарбузенко @Nomad1
карма
70,0
рейтинг 0,1
Программист игр
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

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

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

  • 0
    А можно ссылочку, пожалуйста?
    • 0
      Без проблем.
      store.steampowered.com/app/348340
      itunes.apple.com/app/id1006699098
      play.google.com/store/apps/details?id=net.runserver.siege_wars

      Мобильные бесплатно, если надо код на Steam — пишите в приват, мне не жалко. :)
      • +2
        Код на steam не нужен, уж лучше мы вас честно поддержим)
      • 0
        На iOS и Android портировали, а чего ж в Steam для OS X нет версии, почему только Windows?
        • +1
          Не успел в дедлайн. Выложу на след. неделе.
  • +2
    Я куплю в стиме.
    Очень дерзко получилось :)
  • 0
    Круто. Помню в свое время я фанател от флеш игр Crush the Custle, и когда вдруг потом появились Angry Birds я подумал «какой отвратительный клон!». С тех пор Crush the Castle так и не появились в мобильных маркетах, а Ваша игра похожа на них, чем сильно понравилась!
    • 0
      Процитировал Вас в оценке игры на стиме.
  • 0
    Приятная игра. Только вот в птицах можно было менять силу натяженя, если я не ошибаюсь. А у вас — только угол.
    • 0
      У разных орудий по-разному. Одно вообще только в землю бьет, правда от этого все рушится :)
      Но вообще это очень интересный вопрос, как вы видите управление углом и мощностью для катапульты? Я проверял десяток вариантов, но в результате стал имитировать просто как бы веревку, привязанную к чаше катапульты и за которою тянет игрок. Все другие варианты дают совершенно не реалистичное движение, хоть и в некоторых можно менять и мощность.
      • 0
        Я просто до них не дошёл, видимо.
        С точки зрения игры как управлять именно вашей катапультой — не знаю, я вот присмотрелся к ней и не понял, по какому принципу она стреляет. «Стрела» у вас закреплена на шарнире, снизу к ней верёвка привязана, которая не влияет ни на что. У правильной катапульты, по-моему, регулируется как раз сила, а не угол.
        А изначально я предполагал управлять как рогаткой из птиц.
        • 0
          Окей, попробую объяснить, как я это видел и кодил.
          Если бы была рогатка, то мы бы при перетягивании изменяли расстояние до нее и угол атаки. У катапульты же есть только стрела, которая наклоняется на угол от 10° до 80° между стрелой и основанием. Когда игрок тянет мышью или пальцем катапульту, между курсором (пальцем) и чашей натягивается невидимая нить, а противовес пытается поднять или опустить стрелу в положение в 80°. Вот этот угол наклона стрелы на самом деле влияет на силу выстрела — чем большую дугу проходит стрела, тем сильнее летит снаряд. Но игроку неудобно менять только силу, тестеры сразу хотели двигать траекторию вверх/вниз, как в птицах, потому я совместил сразу оба угла и мы выбираем между слабым выстрелом почти по горизонтали (стрела в 80°) до сильного выстрела навесом (стрела в положении 10°). Все попытки управлять двумя параметрами имея только одну анимацию стрелы были провальными.
          Вот уже для Скорпиона (баллисты) управление обычное — чем больше натянул тетиву, тем сильнее выстрел, а заодно можно немного менять угол.
          P.S. Если придумаете математически верную или хотябы удобную для плеера модель наведения катапульты с изменением силы и угла — с удовольствием встрою в игру :)
          • 0
            А почему бы не наплевать на достоверность и не сделать как в птицах, обозначив пунктиром траекторию?
            • 0
              Так и сделано, траектория пунктиром, явно можно прицелиться выше/ниже, достоверность сомнительна. Только вот регулировать два параметра раздельно нельзя.
              • 0
                Чем дальше оттянул верёвку, тем сильнее выстрел, а угол выстрела брать из угла натяжения верёвки.

                Математика: угол выстрела из катапульты зависит от того, в каком месте заряд вылетает из ковша, начальная траектория — это касательная в этой точке. Вот из этой точки и рисовать траекторию.
                • 0
                  Ок, а как при этом двигать ковш? :)
                  Если программируете в чем-то, попробуйте набросать прямоугольниками и пострелять. Вас ждет море эмоций и отлично проведенный выходной )
                • 0
                  Это все хорошо, но там не рогатка, а катапульта.
      • 0
        есть такая игра Worms, что меня в ней дико веселило так это смена оружия, особенно взрывающиеся коза :) может стоит подумать о расширении арсенала для атаки — не просто отянул и кинул, а например запустил и само бежит наводится или выстрелил вверх а там ветер, на парашуте какую бомбочку с временой задержкой пронес и скинул, нужно будет думать не только об угле наклона и силе, но и еще о ветре (дожде? снеге?) а что касается реализации то может быть бар который меняется от 0 до 100 не очень шибко и оттянув — просто ждать нужной мощьности и тогда отпускать
        • 0
          Вы знаете, я наверное пока пас :) Попробую отдохнуть от катапульт, орудий и стрельбы. А уже через полгода-год может снова ввяжусь в что-то такое.
  • 0
    Прочитал статью, купил и честно прошел первый набор уровней. Пока все звезды не получу, не успокоюсь. А вот к птичкам я как то быстро охладел. Лучше бы Rovio Darkerst Fear переиздали.

  • +1
    По злой иронии это оказался WFP для Windows 8 Store.
    Тем временем мой самописный OpenGL 2D движок для одного Point&Click квеста успел неожиданно заматереть и стать достаточно стабильным, а заодно и позволял писать бизнес логику одновременно для iOS/Android/WP/W8/XP/Mac.
    Вот что, спрашивается, помешало взять MonoGame? Который по сути заново реализованный XNA на все пречисленные платформы.
    • 0
      В первый раз — не знаю, это действительно была масштабная ошибка. При чем, туториалы по XNA были все это время в закладках, в них даже сходная игра есть с сорцами.
      Во второй уже не было смысла — переписывать на XNA-образную архитектуру со SpriteBatch откровенно неудобно, да и свой велосипед ближе к телу. :)
  • 0
    Чувствуется смелость и отвага. Респект!)
  • +2
    Не делайте клоны не рассчитав силы и без опыта. Вот так честнее будет.
  • 0
    прикольная графика! Вот что касается отличия от клона — было бы очень здорово чтоб можно было вызывать на поединок других — тоесть что то типа исходного набора кубиков из которых строится оборона, в ней же орудия (ну там от лвл может быть больше набор кубиков) и тупо по списку кликнул — вызвать на поединок — и вперед, за 30сек не сделал действий, переход хода, ну как то так, в такое я бы очень даже играл бы :)
    • 0
      Если я правильно понял идею, это уже клоном Worms попахивает скорее =)
  • 0
    Если не секрет, сколько ушло в сумме +- на дизайн окончательной версии и стоимость саундтрека?) Спасибо.
    • +1
      Вообще весь контент игры + раскрутка + звук и другой аутсорс это около $5k. Звучит не много, но стоит туда добавить около 8 месяцев работы разработчика, зачастую не по профилю. Например, я сделал трейлер, который бы у проф монтажника занял час времени и стоил максимум $100. Сам же на это убил несколько дней, что в пересчете на человеко-часы Senior Developer как бы совершенно не выгодно.
      С другой стороны, я работаю на себя и это мое время, которое могу тратить как хочу, лишь бы это приносило удовольствие :)
      • +1
        Ну, как сказать:) 5к относительно приличная сумма. Да ещё и время. А суммарно сколько получилось вернуть на данный момент, если посчитать все платформы?
        • +1
          5к, собственно, сравнимо с месячной зарплатой сениора, если продаться хорошей фирме. 8 месяцев по столько — вот это много. Но с другой стороны я занимался тем, чем хотел.
          Суммарно вернуть получилось около 2к, из которых половина суммы это планшет и телефон на конкурсе, четверть — доход с винды за 2 года, а остальное циферка из отчетов Steam, но там потом пойдут VAT, отчисления и комиссии, потому точно еще не известно.
  • 0
    Расскажите про гринлайт — сколько времени в итоге прошло до момента апрува, сколько голосов было, какое соотношение за/против? Спасибо.
    • +1
      Вообще, я хочу написать большую статью про выход в стим и что для этого надо. Пока кратко: прошло 14 месяцев, набралось ровно 2000 голосов «за» и около 7000 против, соотношение было 22/78. Удивительно, что с такой статистикой вообще что-то произошло. Для сравнения наш Hare In The Hat там получил 1500 за и 1500 против (49/51) за 2 месяца и был подтвержден.

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