Я так понимаю, что Google сам не проверяет приложения на нарушение прав интеллектуальной собственности. Так что пока нет жалобы приложение будет в Google Play.
Значит на чеченскую балду по какой-то причине жалобы не поступало.
И само название тоже придумал Пажитнов, соединив греческое слово «тетра» (четыре) и название игры «теннис». Так что он был волен распоряжаться своим детищем по своему усмотрению.
А вот слово «балда» — общеупотребимое, его никто не придумывал.
Проблема в том, что все это надо решать в судебном порядке. Доходы там смешные, поэтому мне просто нет никакого смысла ехать в Россию и подавать в суд.
Нет, с Тетрисом как раз нет проблемы. Игру Тетрис придумал и разработал Алексей Пажитнов, поэтому ничего удивительного, что права на игру кому-то принадлежат.
А игра «Балда» — народная, автор не известен.
А ведь очень даже неплохо получилось! Качественный дизайн — это хорошее преимущество. Но немного покритикую:
— Как по мне, кнопки мелковаты. На планшете ок, но на телефоне как-то некомфортно. Хоть и не промахиваюсь.
— При игре против AI при смене хода вообще ничерта непонятно… Слишком быстро происходит передача хода. AI стреляет мгновенно, непонятно откуда и куда прилетела шашка. Может добавить анимацию прицеливания перед ходом AI?
— Ну и главная проблема — за пределами русского Google Play, похоже, шансов немного.
А так симпатично. Правда, рекламу не увидел ни разу.
Кстати, если кто-то сомневается, стоит ли заморачиваться с проверкой ин-апов или и так сойдет, то такая небольшая статистика по одной моей игре — приблизительно 60% от общего количества внутреигровых покупок фейковые и идут через Freedom. Не верю, что хоть кто-нибудь из этих 60% заплатил бы, будь эта проверка встроена, но тем не менее бороться с этим лишним не будет.
И похоже, что с вами многие согласны и несогласны со мной :)
Сейчас как-то модно стало припоминать «ошибку выжившего», поэтому и я ее припомню. На одну вашу успешную игру есть 10 других инди-игр, про которые никто никогда не узнает и которые наберут от силы сотню установок.
100-200$ в день с успешной небольшой игры, конечно, можно получить. Но, во-первых, игра должна быть успешной, а во-вторых — все-таки обычно инди-разработчик хочет повторить судьбу хотя бы Нотча и заработать миллионы, а не среднюю зарплату в месяц. Не получится каждые 2-3 месяца выпускать по успешной игре, каждая из которых будет приносить по 100$ в день, и таким вот незатейливым образом через год рубить по паре десятков тысяч в месяц.
Инди разработка может быть сродни искусству, но заработать на этом такие суммы, про которые мы часто читаем — уже как-то невероятно.
А можно ссылку на игру?
Не огорчайтесь, но наш с вами поезд уже ушел (я тоже вроде как «инди» разработчик). На мой взгляд графика скучноватая и весьма посредственная. Каждый день в Google Play сейчас появляется сотня новых игр, как мы можем их обставить? Крутой графикой или уникальным геймлеем. Первое дорого, второе сложно :) Шансы на успех призрачно малы. Сделать в одиночку на коленке новый Flappy Bird маловероятно.
Еще мне кажется неудачным выбранный жанр (не мое мнение, мнение издателя — простые логические головоломки больше не зарабатывают). Ну и монетизацию выбрали не самую лучшую — для заработка на рекламе нужно очень много инсталлов, а они просто так из ниоткуда не возьмутся.
А вот с опытом разработки на Unity хочу вас поздравить, это ценно :)
Поискал в Merchant Center, вроде таких транзакций не нашлось. Я думаю, что вполне может быть, что их нет, потому что основная аудитория у игры — это США, Великобритания и Германия. Ну и версия с in-app покупками недолго висела в Google Play.
В принципе, я полностью с вами согласен. Об этом и получилась статья: от хорошего кода до хорошей игры еще очень далеко. Не знаю, получится ли у меня пока все еще в одиночку сделать что-то хорошее и стоящее, но я не сдаюсь и учусь на своих ошибках :)
По моему опыту AdMob тоже оказался выгоднее, но очень уж сильно скачет eCPM (у меня в основном СНГ аудитория). Продажи были хоть и меньше, но стабильнее и хоть как-то предсказуемы.
Тут дело в том, что для меня разработка выходит условно бесплатной (если не считать воображаемую недополученную прибыль от работы в это же время). А маленькой компании нужно платить зарплату программисту, а это даже для программиста моего уровня и даже в Беларуси совсем не 5000$ за 8 месяцев работы. Поэтому кажется, что у меня все куда веселее — вроде как ноль затрат и 7к$ прибыли :)
Об этом максимуме я совсем не знал, когда начинал писать игру. Дело в том, что у меня эта игра не единственная, и по финансовым показателям она оказалась хуже остальных, отсюда и недовольство :) В целом, неплохим начальным результатом считается ARPDAU в 0.05$, а значит при моём количестве установок и активности пользователей было бы неплохо получить в 2-3 раза больше, что ближе к 20k$.
0.58$ eCPM — это просто чудо какое-то! У меня в десять раз ниже (да, 5 центов на тысячу), при этом CTR даже немного выше, fillrate 100%.
Практически все пользователей из России. С российскими рекламными сетями опыт как и в комментарии выше — через пару месяцев fillrate слился.
Вся печаль видимо в том, что игра.
У меня несколько непривычная стилистика написания кода для Java-программистов, так как до андроида много писал на С++
Java coding conventions слабо зависят от наших привычек :)
Вопрос насчет велосипедности статьи — из серии «зачем делать обертку под opengl и вообще учить его, если есть SDL» и «Зачем делать свою реализацию „Одиночки“, если есть @Singletone»
В контексте вашего примера эта статья из серии «не threadsafe Singletone». Здорово, конечно, что синглтон, но вот правильнее от этого он не станет.
Загрузка картинки в конструкторе GameScreen, которая создается в методе MyGame.GetStartScreen(), который в свою очередь вызывается в MechanicGame.onCreate() в UI потоке. Если картинка одна, то ок. Если графических ресурсов будет много, то привет ANR.
Метод Runner.Pause() с бесконечным while-ом, который вызывается из onPause() метода Activity — туда же, ANR.
Названия всех методов с большой буквы, ок…
А зачем вообще этот велосипед? Вы представляете сколько уже «фреймворков для разработки игр» под Android написано? Из тех, что на java, хотя бы AndEngine и libgdx.
Игры на SurfaceView писать сомнительное удовольствие. Я к тому, что мало того, что пользы от него не очень, так статья скорее из серии как делать не нужно.
Значит Chillingo сдулось :) Была как-то на хабре история от автора Contre Jour — издавался через Chillingo, все было хорошо.
Просто я не понимаю какой смысл сотрудничать с издателем, который работает только на СНГ, если игра может быть популярной во всем мире.
В сутки примерно 3000-5000 скачек с Google Play и ~30-50 оценок.
Основная аудитория – СНГ (70-80%), в связи со слабой пиар-компанией за рубежом.
Мне кажется, что такой же результат (в общем-то никакой) вы бы получили и без издателя, правда не пришлось бы делить прибыль.
Наверное, с издателем имеет смысл связываться, если это издатель уровня Chillingo.
Я думаю, что мощные эвристические алгоритмы, которые определяют ботов, находятся на стороне сервера. Так что создание такого бота очень нетривиальная задача и реверс SDK — не самая большая проблема. По-крайней мере, я на это надеюсь.
У меня две игры в Google Play — в одну играют только в России (была немного популярной, более 1 млн установок), в другую в основном в США-Японии-Германии (пока только чуть за 50 тысяч установок).
Так вот, огромное количество отзывов про первую игру — это брань и ругательства. Поставил цену больше 99 центов? Да как ты посмел! Ты всегда кому-то что-то должен, при том, конечно же, бесплатно.
У второй игры негативные отзывы оставляют только те пользователи, у которых игра просто не поддерживается устройством. В основном просто благодарят за хорошую игру. Критика, конечно, есть, но она конструктивная.
Но самые интересные отзывы у меня были из Amazon Appstore. Развернутые, полезные, по существу: что нравится, что не нравится, что хотелось бы увидеть в будущем. Все установки из США.
Скорее всего, все дело в ЦА игр и среднем возрасте игроков. Но мне после таких отзывов очень не хотелось переводить вторую игру на русский язык.
В коде можно использовать setTag/getTag с параметром id.
В качестве холдеров лучше не стоит использовать View.setTag (int key, Object tag) , это приводит к утечке памяти (https://code.google.com/p/android/issues/detail?id=18273). Такие тэги хранятся в статической WeakHashMap в классе View, поэтому если сохранить child view в тэге его предка, то такая запись никогда не удалится из мапы. Пофиксили баг только в ICS.
Вот страну, кстати, мне удалось поменять без повторной регистрации :)
А действительно ли за страну — банят? Вроде не встречал таких отзывов… Но рисковать аккаунтом очень не хочется.
Это все, конечно, здорово. Но когда я увидел в списке компаний, от которых можно получать платежи, Google и Amazon я считал, что это может делать и нерезидент США :) В случае с Google и Amazon ситуация нехорошая. Для одних нужно указывать в качестве страны US, из-за чего можно получить бан. Для других нужно получать ITIN, что судя по этому «ответу» на форуме не самая простая процедура. В общем формально и те, и другие поддерживаются, но без проблем могут получать платежи только жители США. Так бы и писали, значит :)
US Payment Service подключен, пытаюсь вывести деньги с Amazon. Если выбрать в качестве страны US, то при этом в обязательно нужно указать SSN. Написал в поддержку Amazon, сказал, что у меня нет SSN — попросили TIN, связанный с банковским счетом (TIN associated with the US bank account). На форуме Payoneer ответили, что TIN предоставить не могут. Как быть?
Пока у автора поста два приложения на Google Play, и мне сложно назвать их хитами — у одного меньше 5000 установок, у другого меньше 500. «Пинги Понги» вполне откровенный трэш. Почему не пользуетесь своими же советами и есть ли какая-то польза в этих наблюдениях?
Считается, что если DAU/MAU больше 0.2, игру можно считать успешной.
Получается, что число уникальных пользователей в сутки в 5 раз больше, чем число уникальных пользователей в месяц. Это как так может быть? Или я что-то неправильно понял?
Пробовал через AndEngine крутить анимацию по такому же принципу, надо буквально пару строчек кода, получается быстрее и симпатичнее.
Но правда если при этом поверх GLSurfaceView положить какие-нибудь стандартные контролы, то пользы от отрисовки через OpenGL ES становится немного.
Странно, вот как раз на wildfire все это и тестировалось. Если картинка лежит во внутренней памяти, то на ее декодинг уходит около 5 мс (кадры размером 320 х 525). Но GC при этом конечно работает не переставая.
Хотя если цель приложения — не только крутить анимацию, то наверное тормоза действительно будут :)
GIF поддерживается, но плохо. Просто его надо загружать через класс Movie. При этом на многих GIF-файлах при воспроизведении падают нативные ошибки и приложение закрывается. Еще как вариант можно открыть GIF в WebView, но проблемы при воспроизведении некоторых GIF-файлов все равно есть.
Писал свой декодер GIF с использованием NDK, но проблем с ним тоже было не мало. Так что если есть возможность — с гифом лучше не связываться.
Если в анимации кадров много, то через AnimationDrawable конечно не получится ее проиграть. Можно просто по одному загружать кадры, декодировать в Bitmap, отрисовывать и делать recycle. При этом 15-20 fps должно получится.
В этом конкретном случае как раз s1 == s2 будет true. Строка «123» попадет в пул констант и обе переменные s1 и s2 будут ссылаться на одну и ту же строку. Где только про это не написано…