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


Последний год iOS-игрушки перестали приносить деньги. Вообще, я обнаружил закон PapaBubaDiop -а: Каждые 2 года доходы от старых iOS игр уменьшаются ровно вдвое. В 11 году я получал $200 в день, в 2013 — $100, в 2015 — $50. В грядущем году революции все говорит о том, что дебет будет $25 в сутки. Грустно, девушки, все вернулось в началу 2000, когда инди-парни получали эмоциональное удовлетворение от разработки и более ничего не получали. Хочу заметить, что дело не только в том, что большие дяди кушают торт без нас. В целом очень повысилось качество приложений и безыскусные поделки не имеют никаких шансов даже на 5-10 бесплатных скачиваний.

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

Суть:

  1. разработать игру за 1 день.
  2. Проследить — сколько она заработает за месяц.
  3. Проинтерполировать на год, жизнь и один день.
  4. Сравнить с посуточной зарплатой js-кодера из Моршанска.
  5. Угостить всех девушек Хабра шампанским.

Нормальный план.

Погнали разработку


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

Идея


В моем случае это древняя DOS игра j-bird — в ней птичка должна обойти все клетки гексагонального поля. После посещения клетка метится другим цветом. Мне всегда хотелось, чтобы птица не просто обходила всю доску, а чтобы цвет клетки доски инверсивно менялся после каждого посещения, чего не было в оригинальной версии игры.

Видео геймплея очень длинное 500 секунд, не мог оторваться пока не погиб


Так вот. Разложил колоду карт и проверил, как идея работает. Вообще круто! — восхитился я, и расклад всегда сходится на шестиугольной доске. Если инвертировать не 2 цвета, а три — то игра приобретает два типа четности, как индексы матрицы или кубик Рубика. Математическая теория, как генерить сходящиеся расклады, слишком сложная и тянет на кандидатскую диссертацию по алгебре. Возможно вы найдете более изящное решение — велкам ту комментс.

Дизайн


Самому делать дизайн — в день не уложишься. Я купил набор картинок на envato.market. $6. Потом вычтем из дохода.

Изометрический сет стоит несколько дороже, чем я обычно плачу, а именно $15. Расплачиваясь через Paypal, система накидывает еще $1 за услуги. Но маркет подарил мне сертификат на $10, потому фактические затраты = $6.
Поскольку лицензия на картинки всегда мутная, то с художниками я проворачиваю следующий трюк. Благодарю его за прекрасный set и прошу за дополнительные деньги дорисовать пару картинок. Художники (хорошие) — всегда заняты и вежливо отказываются, но при этом чувствуют себя неловко. Тут надо брать их тепленькими. Посылаю ссылку на приложение с авторским дизайном, говорю: — Вот, что получилось, хочу игру в магазин выложить. Как считаешь?
Они с восторгом отвечают: — Конечно, дорогой, пользуйся, выкладывай (только отстань), успехов в продвижении и всех благ!

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

Звуки


Звуки вытаскиваю из игр. Скачиваем (на десктопе!!) в iTunes бесплатную игру Angry Birds 1.7.0, open in Finder, переименовываем расширение ipa в zip — разархивируем — далее директория Payload — далее щелкаем правой кнопкой на файле AngryBirdsClassicLight.app — выбираем в меню Show Package Contents. Все, вы в домике! — 100 звуковых файлов в вашем распоряжении.

Прим. переводчика — в последнее время многие пользуются Unity и пакуют ресурсы в assets. В этом случае вы в пролете, звуки запакованы. С распаковкой я не работаю, это к Шалтаю.

Swift


Настолько прекрасен 3.0, что сам процесс кодирования занимает пару часов. Суть программирования — создать UIViewController, присобачить к нему картинки в виде UIImageView объектов, например:

  @IBOutlet weak var bird: UIImageView!
 


И простой функцией
bird.center = CGPoint(x:xBird, y:yBird) 
 

перемещать птичку в нужную точку экрана.

На самом деле прыжок птицы — это парабола. Нам надо переместить её из точки (xbird,ybird) в точку (xcell, ycell). Параболу заменяем без потери качества на две прямые, подобно тому как мы меняем котангенс на функцию Хевисайда в нейронных сетях. Программно траектория птицы разбивается на два линейных участка

bird.center = CGPoint(x:xCell, y:yCell+heightOfBird) 
bird.center = CGPoint(x:xCell, y:yCell) 
 


Для анимации каждое движение оборачиваем блоком UIView.animate
      UIView.animate(withDuration: 0.15, delay: 0.0, options: .curveEaseOut, animations: {
            self.bird.isHighlighted = xBird>xCell ? true : false
            self.bird.center = CGPoint(x: xCell, y: yCell-heightBird)
        },
                       completion: {finished in
                        if self.pause==0 {
                            self.shift()
                        }
                        UIView.animate(withDuration: 0.35, delay: 0.0, usingSpringWithDamping: 0.25, initialSpringVelocity: 0.0, options: .curveEaseOut, animations: {
                            self.bird.transform = .identity
                            self.bird.center = CGPoint(x: xCell, y: yCell)
                        },
                                       completion: {finished in
                        })
        })
    


Регулярная сетка 6 на 6 сродни матрице 6 на 6 с нулями выше диагонали. Проблему с тремя цветами, когда расклад не сходится (остается одна клетка) я решил просто. В этом случае позволяю птичке прыгнуть на месте. Все.

Монетизация


Подробно про схему монетизации и цифры дохода поведаю во второй части статьи, ровно через месяц 8 марта. Сейчас кратко — в игре использую рекламу от AdMob (ма-а-а-ленький баннер внизу) и ChartBoost (статичное межстраничное объявление), а также встроенные покупки. За $1 доллар докупить 100 жизней, за $2 доллара — 666. Реклама включается, когда игрок первый раз погиб.

Но. Сейчас игра в магазине находится в 1-долларовом состоянии. По двум причинам.
Первое, чтобы её заметили, она должна пару недель побыть платной. Затем Sales — в новом бесплатном состоянии при удачном раскладе её начнут качать, возможно более 500 раз за день.

Релиз


Игра закончена и выложена в маркет. Кстати, сейчас чертовски благоприятное время для одобрения приложений — обычно 1-2 недельный процесс в январе-феврале занимает менее суток!
Торопитесь. Скоро начнутся бешеные мартовские гонки. Высокий сезон, все такое… E3 в ЛА. А я там, похвастаюсь, бывал. E3 — это такая игровая выставка. Маечки, ручечки, ну вы понимаете.

Продолжение следует…
Поделиться с друзьями
-->

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


  1. PapaBubaDiop
    12.02.2017 00:58
    +1

    Забыл. Для игры использую бесплатный Шрифт Troika.


  1. defaultvoice
    12.02.2017 01:46
    +3

    Звуки вытаскиваю из игр

    А как вообще в App Store к этому относятся?


    1. PapaBubaDiop
      12.02.2017 10:54
      +3

      Двушечка в Алькатрасе. Но сейчас Трамп приостановил эту халяву,


  1. Maklaud
    12.02.2017 08:45
    +1

    Я не понял, это перевод или ваша статья о вашей игре?
    Маловато деталей — пишете о доходе, а как добиваетесь его в этой игре? Реклама или что-то продаете?
    Сделано красиво, идеи подобные мне тоже нравятся, несмотря на их старость — последнее время много ремейков.


    1. PapaBubaDiop
      12.02.2017 10:53
      +2

      Про переводчика — это стеб, в каком-то смысле я действительно перевел с DOS на iOS. Поскольку все сделано за позавчера, подробно про схему монетизации и цифры дохода поведаю во второй части статьи, ровно через месяц 8 марта. Кратко — реклама от AdMob и ChartBoost, а также встроенные покупки. За $1 доллар докупить 100 жизней, за $2 доллара — 666.

      Сейчас игра в магазине находится в 1-долларовом состоянии. По двум причинам.
      Первое, чтобы её заметили, она должна пару недель побыть платной. Затем Sales — в новом бесплатном состоянии при удачном раскладе её начнут качать, возможно более 500 раз за день.

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


      1. Maklaud
        12.02.2017 15:55

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


        1. PapaBubaDiop
          12.02.2017 16:38
          +3


          1. Maklaud
            12.02.2017 18:00

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


            1. zx80
              12.02.2017 20:34

              я сам иногда ставлю приложения, когда увижу в рекламе


  1. Dwite
    12.02.2017 12:39
    +1

    @PapaBubaDiop в изометрическом сете что вы купили за 15$ вроде как указано


    Use, by you or one client, in a single end product which end users are not charged for. The total price includes the item price and a buyer fee.

    Уверены что можно продавать игру с такой лицензией на ресурсы?


    1. PapaBubaDiop
      12.02.2017 12:40
      +1

      Игра бесплатна. В этом случае можно?


      1. zharikovpro
        12.02.2017 19:04
        +1

        Можно, т.к. игру можно использовать бесплатно и не обязательно за нее платить.


      1. xytop
        12.02.2017 20:23

        Но на данный момент игра ведь платна? :)


        1. PapaBubaDiop
          12.02.2017 20:39
          +1

          Никто не купит без продвижения) А я не двигаю. Кстати, с художниками я всегда проворачиваю такой трюк, Благодарю его за прекрасный set и прошу за дополнительные деньги дорисовать пару картинок. Художники (хорошие) — всегда заняты и вежливо отказываются, но при этом чувствуют себя неловко. Тут надо брать их тепленькими. Посылаю ссылку на игрушку с авторским дизайном, говорю -Вот, что получилось, хочу такую в магазин выложить? — Они с восторгом отвечают — конечно, пользуйся, выкладывай (только отстань), успехов в продвижении и всех благ!

          Так и тут было, художник, по-моему, русский парень) Но переписывались на английском.


          1. Maklaud
            12.02.2017 20:45

            Эдакий вы хитрец )))


          1. frangovalex
            12.02.2017 22:08

            Какова вероятность что «русский парень» тоже сидит на хабре и после прочтения станет более внимательно относиться к своим покупателям? )


            1. PapaBubaDiop
              12.02.2017 22:10
              +1

              Художники — это люди неба. Они не делят людей на покупателей и прочих. Они видят в нас идеи будущих шедевров. Но от рекламы своих произведений не откажутся — что я бескорыстно делаю)


  1. nikitasius
    12.02.2017 22:10

    Реклама через гигантов должна идти в большой объеме…
    В 2013 я имел 80 евро в месяц за 30к просмотров на ютубе, в 2014 при 40к было в районе 7-9 евро при той же аудитории.

    Платная подписка и донат — все. Лучше всего — своя реализация и через нормальные системы.


  1. Slavikve
    12.02.2017 22:27

    Любопытное задание, автор, продолжайте.


  1. LoadRunner
    13.02.2017 09:14

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


    1. PapaBubaDiop
      13.02.2017 11:56

      Тут аркада, мой друг, голову сильно ломать не надо — всего лишь найти оптимальный путь)
      Но у меня есть игрушка для тебя — сегодня одобрили — мой старый ремейк from 1991.

      Надо решить паззл. Полдня бьюсь.
      Шесть труб

      Съедаются 6 и более правильно собранных труб. Надо очистить всю доску.




      1. LoadRunner
        13.02.2017 12:22

        Они съедаются по нажатию клавиши «Хавать» или автоматически, как только будет соединено 6 и более труб?
        И падают на освободившиеся клетки?

        P. S. Почему до 8 марта проходит ровно месяц, если статья опубликована 12 февраля?


        1. PapaBubaDiop
          13.02.2017 12:53

          Автоматически и падают под действием силы тяжести. Потому что зима холодная, месяц сжался.


  1. KysokZla
    14.02.2017 18:05
    +1

    Сколько лет прошло с Тостера, сколько строк кода утекло, а Вы до сих пор пишите игры и статьи про написание игр- вечный респект!


  1. zzzmmtt
    10.03.2017 08:53

    PapaBubaDiop уже 10-е марта, ждём, ждём.


    1. PapaBubaDiop
      10.03.2017 17:49

      На сноуборде писать сложно — через неделю отчитаюсь.