19 марта в 02:02

J-Bird, или как лентяй игру продавал



Месяц назад я провел опыт — сколько заработает мобильная игра, сделанная за день?
Краткий итог — заработок наколенного iOS разработчика несильно отличается от средней зарплаты провинциального российского программиста.

Итак, по-порядку.
Сначала было Слово.
И Слово было Байт…

Шучу, порядок другой.
Да и текст будет неканонический.

Напомню, что месяц назад за 1 рабочий день был сделан ремейк старой DOS-игры J-Bird с сильными изменениями в сторону идеи реверси. На дизайн потрачено $6. На swift — 7 часов. Тестирование и написание статьи на популярном ресурсе забрало 2 часа жизни автора. И это были лучшие часы в моей серой жизни.

Как зарабатывает J-Bird?


После одобрения славными китайскими парнями из Калифорнии, игра была выставлена в магазине по цене $1. При этом внутри приложения используется реклама от Гугл и Чартбуст.

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

Гугл, как обычно, висит фоном внизу телефона и радостно подмигивает цветными шариками и брокерами.

Как отслеживать число установок?


Каждый новый игрок, запуская игру, посылает php-запрос на сервер, где мгновенно заносится в mysql базу данных. Общее число игроков отображается в приложении J-Bird на всех экранах.

На языке swift это выглядит так:

        let urlRoot = "http://www.bashni.org/sites/jbird/request.php?" // here is your site
       
        let u = UIDevice.current.identifierForVendor
        let udid = u!.uuidString
        let name = UIDevice.current.name
        
        var params = "s=\(score)&imea=\(udid)&name=\(name)"
        let urlParams = params.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
        
        let url = URL(string: urlRoot+urlParams!)
        let session = URLSession.shared
        let task = session.dataTask(with: url!, completionHandler: { data, response, error in
       if data != nil {
            let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
                    OperationQueue.main.addOperation({
                        self.updateRank(dataString)
                    })
                }
            }
            }
        })
        task.resume()

Через делегат полученные данные посылаются в видимый пользователем текущий ViewController.

   func updateRank(_ response:String) {
        self.delegate?.updateTotalRank(response)
    }

Для ощущения многолюдности на сервере было заведено 860 фейковых имен и результатов, к которым автоматически присоединились 12 тестовых устройств от разработчика, 9 проверяльщиков из Apple и 7 родственников, которых я благородно вычеркиваю вместе с $6 за картинки.

На момент написания этой статьи число пользователей:



928.

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

За месяц игру купили 928 — 860 — 12 — 9 — 7 — 6 = 32 человека. Низкий Вам поклон от парня из Челябинска.

Это 32*0.7 = $22. Apple забирает 30%. Низкий тебе поклон, Apple. И это еще не все! К ним вы бесплатно получите шнурки для горнолыжных ботинок и щеточку для усов. Шучу.

У меня нет усов — но есть рекламные центы. Чартбуст не имеет заработка, а вот Гугл приносил до 15 центов в день, имея 1500 просмотров в сутки (то есть eCpm доходил до $0.1), но почёму-то сейчас этот показатель eСpm чрезвычайно низкий, почти 0. При таком числе просмотров на других приложениях я имею доллар в день! А здесь — пшик. Тем не менее, за месяц заработано на рекламе $2.


Рис.1 Заработок за день, число показов, eCpm.

Итого за 9 часов работы наварено $24. При этом сохраняется тенденция — 1 неделя — 1 покупка. Значит к концу года будет 50-60 долларов.

Обычные цифры. Без чудесной сказки. А жаль.
Суровые выводы делайте сами.
Прим. Игра нигде не афишировалась, ссылок нигде не публиковал. Чисто Хабр.

Одно замечание по гейм-дизайну

Поскольку игра была сделана тяп-ляп, автору удалось пройти лишь 11 уровней из 30. Пришлось покрутить коэффициенты и выпустить новую версию 2.0 — в ней удалось дойти до 22-ого уровня! К Новому году пройду игру до конца, зуб даю. Их у меня 29 осталось.

Немножко про коэффициенты.

На досках с порядковым номером > 2 появляется поле такого вида.



Чтобы пройти это поле, на него надо прыгать до тех пор, пока оно не лишится шипа. При каждом прыжке с вероятностью 1/3 шип может исчезнуть. Так вот иногда прыгаешь, прыгаешь, как Буратiно, а время жизни тает. То есть были случаи по 12 раз приходилось прыгать, а все без толку.
И-ть! Как меня это бесило!

Я решил ограничить количество прыжков, случайно определить число скоков от 0 до 5. Равномерная случайная величина. Но играть стало неинтересно. Тогда я вернул нормальное распределение, но с обрезанным хвостом. То есть более 6 раз точно прыгать не надо. И вновь играть стало интересно.

Вот пишу статью и играю. Ей-богу, залип, как дурак.

Дурак, не дурак, а $50 каждый год теперь имею.

А может, и побольше…
Чего и Вам желаю! Amen!
Вадим Башуров @PapaBubaDiop
карма
983,5
рейтинг 0,2

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

  • +1
    $50 каждый год теперь имею

    Судя по первой статье, доходы каждые два года нужно делить на два.

    • +1
      Да, но этот закон относился к рекламным доходам. Например, у меня есть платное приложение Frogger HD, его стабильно качают 3-5 раз в день. На протяжении 3 лет имею от него 1000 баксов в год.
  • +4
    а возмущающиеся тем, что и деньги заплатили за игру и рекламу видят есть? или молча проглатывают принципиально не кликая?
    • +1
      Понимаю, что это возмутительно, но не представляю, как отключить рекламу для тех, кто купил приложение за $1, а для тех кто скачал бесплатно — оставить ее? Если кто даст решение — тот будет молодчик.
      • +2
        а возмутительно ли?
        • +2
          добавил:
          если нет недовольных, то и делать ничего не надо.

          С технической точки зрения — можно активировать рекламный блок от времени первой установки. Если пользователь установил (запустил) программу, когда она была платная (сервер вернул флаг paid), то рекламу показываем другую (никакую), если запустил во время sale акции, то включаем reward video или другой тип рекламы по полной.
      • +1
        Ну вообще правильнее было бы просто забить на тех, кто качал ее бесплатно и предоставлять один сервис для всех. Если вы зарабатываете на установках, зарабатывайте на них. Втыкать костыли и отдельный метод монетизации ради того что бы получить рекламу с 6 пользователей(их же столько, я правильно понял?) это жестковато. Тем более если учитывать обычный ретеншн для мобильников, они перестанут играть раньше, чем вы найдете хорошее решение.
        • 0
          Пожалуй, так и сделаю. Выпущу версию 3.0 с пометкой Removed all ads.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +1

      Доработки были же

      • +1
        Верное замечание. 2 раза менялась одна строка кода. Добавим 1 час. Все равно остаемся в рамках рабочего дня)
      • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      пока не разобрался, кажется слишком сложным, когда понял принцип — слишком просто, но игра интересна, идея своя или это откуда-то?
      • 0
        Это древняя игра — еще до-IBM PC-ой нинтендовской эры. Музыка и слова народные.
        • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Привет! А вы используете Admob Campaigns для толчка при запуске?
    • 0
      Нет, а поможет?
      • 0
        Не знаю :D
        Я пытался создать компании, но у меня не вышло. 20 000 реквестов и ни одного отображения =\
        Думал вдруг подскажете в чём дело.
        • +2
          Увы, я здесь не копенгаген. Может братья во хабре помогут.
          • 0
            Да прибудет НЛО.
          • 0
            Написал себе оффлайн баннеро крутилку. Очень помогло.
            (Показывает баннеры, если нет сети или admob не смог залить)
            При наличии интернета, умеет обновлять набор баннеров.
  • +1
    > Тогда я вернул нормальное распределение, но с обрезанным хвостом.
    Это не нормальное распределение, а геометрическое.
    • 0
      Спасибо, хоть кто-то читает внимательно. 1/3, 2/9, 4/27, и т.д. действительно не Пуассон.
      • 0
        Нормальное - это Гаусс, а не Пуассон.
  • 0

    И слово было два байта.

    • 0
      Не. Разные были слова, двухбайтовые появились в 60-ых)
      • 0

        Если говорить о писюках IBM-совместимых ПЭВМ на процессорах 80x86, то сразу двухбайтовые. Которые, конечно, позже появились, чем в шестидесятых :-)

  • 0
    Очень интересно было узнать нюансы. Стиль написания — блеск! Даже жене пошёл прочёл))) смеялись!

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