Як я робив Brick Game на Unity3D для Android і отримав блокування від Google

Вікіпедія: Brick Game («Гра з цеглою»; його також називають «Тетріс») — ігрове пристрій, що працює на гальванічних елементах, забезпечене декількома встановленими іграми і чорно-білим (монохромним) екраном. На таких пристроях практично завжди присутня гра, аналогічна «Тетрису», хоча разом з нею часто є й інші ігри. Існують різні види пристроїв з різною кількістю ігор.

Я розповім про те, як (і чому) створював емулятор Brick Game на Unity3D для Android з тетрісом, змійкою, гонками, танчики і іншими іграми, про експеримент з монетизацією, а також про те за що Google Play може заблокувати подібне додаток і як його потім розблокувати.

Передісторія. «Тетріс» без тетрису
Одного разу захотів пограти в Тетрис (спершу саме в гру Тетріс, а не в той пристрій, що у нас у дитинстві називали «тетрісом»). Порився в Google Play, знайшов тільки дві офіційні версії від EA games. Вражений кількістю непотрібних (на мою думку) модних фішечок і наявності внутрішньоігрових платежів. У Тетрисе! В цілому відчуття були «не ті».

І тут я згадав про такий штуковини як Brick Game і як на ньому здорово було грати в Тетріс. Подумав, що в Google Play, напевно, повинен бути емулятор, і не помилився. Таких емуляторів знайшлося безліч. Я поставив самий популярний і… не знайшов тетрису серед ігор. Крім того посеред екранчика з квадратиків красувалося меню з кнопок з сучасними згладженими шрифтами, з допомогою якого потрібно було стартувати гру, перемикати звук і так далі. Не реалістично. Дивно, мільйон скачувань і такі недоробки. Перевірив інші емулятори — ще плачевней так і тетріса немає майже ніде, а там де він є — реалізований кривувато, грати незручно. Не кажучи вже про реалістичність графічного втілення.

Загалом я вирішив заповнити прогалину і створити свій емулятор, з хорошим тетрісом і реалістичним екраном, для себе і для всіх.

З Вікіпедії (а пізніше і на своєму досвіді, про це читайте нижче) дізнався, чому немає гри Тетріс у багатьох популярних емуляторах.

В 1996 році передбачуваний автор Тетрису (до речі, виходець з СРСР), разом з якимось Хенком Роджерсом (англ. Henk Rogers) створив за кордоном компанії The Tetris Company LLC і Blue Planet Software, намагаючись отримати прибуток від бренду Tetris. The Tetris Company LLC (TTC) зареєструвала слово Tetris як торгову марку. З тих пір кілька компаній купили у TTC ліцензію на торговельну марку. За американськими законами, гру можна захистити авторським правом (тільки запатентувати), тому основним майном компанії є торгова марка Tetris. Незважаючи на це, TTC переслідує клони гри під іменами, несхожими на Tetris. У травні 2010 року юрист TTC послав лист в Google з вимогою прибрати з ринку Android Market всі 35 клонів цієї гри, хоча їх імена не схожі з ім'ям «Tetris».

Розробка. Вибір інструменту
Спочатку належало вибрати між 1) Unity3D і 2) Android + якась бібліотека або на голому Android API.

У мене раніше були експерименти і з Unity3D і C# і Java + Android, тому і розглядав ці варіанти.

1) Плюси:
+ багато готових функцій які знадобляться для такого емулятора
+ можливість миттєво перевірити роботу програми в редакторі прямо на ПК

Мінуси:
– велика вага *.apk файлу — від 20 Мб
– довше запускається
– ненажерливість (батарея сідає швидше, більше гріється)

2) Плюси:
+ маленький вагу («платиш» в основному за вагу графічних файлів)
+ висока швидкість запуску і економія батареї

Мінуси:
– доведеться писати більше коду (точніше, абстракцій, або потонути в процедурному коді)
– повільний процес тестування на емуляторі/пристрої

Напевно, не всі погодяться з моїми оцінками, це справа особистих умінь і смаку. Я пожертвував розміром і ненажерливістю на користь швидкості розробки і обрав Unity3D.

Розробка. Графічне представлення
Почав з малювання скіна з кнопками і екраном. Малював у векторному графічному редакторі, промалював всі деталі аж до кожного кубика на екрані і палички в циферных LCD блоках. Повного фотореалізму досягти не вдалося, особливо з кнопками, але в цілому вийшло непогано. Експортував в PNG і закинув у Unity, Quad, в якості текстури.



Пізніше додав ще два скіна — з великим екраном і повернутий.
Скін з великим екраном (може бути зручний на пристроях з невеликою діагоналлю дисплея):



Не довго думаючи, екран вирішив оживляти з допомогою маленьких квадратиків з неактивними пікселями. Тобто підкладка у мене вся складається з активних пікселів, а зверху об'єкти з неактивними пікселями, яким я перемикаю видимість, а саме прапор enable. Клас дисплея містить самий звичайний модифікується масив з 200 елементів (10х20) (по комірці на кожен квадратик), працювати з ним зручно.



Мучився трохи з розстановкою, можливо десь і залишилися невеликі зміщення, але їх не помітно, адже найголовніше, що активні пікселі, які яскравіше, розставлені строго по сітці і це вшито в картинку, тому масштабування (при використанні якісного згладжування) не повинно зіпсувати розстановку квадратиків. Перевірив — так і вийшло, все рівно і акуратно, радує око, рішення «в лоб» спрацювало з першого разу.

Навколо кнопок в ненажатом стані є невелика тінь, для анімації кнопок я додав маски з діркою під кнопку і згладжуванням які з'являються при натисканні і роблять кнопку візуально вжатой в корпус.



Колайдери кнопок сферичні і радіусом трохи виступають за межі кнопок, щоб легше було потрапити (особливо це актуально для верхнього ряду маленьких кнопок).



Розробка. Звук
Поки працював над додатком знайшов на міському ринку справжнісінький Brick Game, приніс додому, і записав звуки натискання і відпускання реальних кнопок. Багатьох гравців, до речі, ці звуки дратували, я випустив оновлення, яке відключає ці звуки в режимі Mute, але навіть крізь цигикання самого пристрою пробивався звук натискання кнопок і люди просили зробити ці звуки тихіше. А мені так подобалися ці звуки, що не хотілося їх приглушувати.

Цигикання згенерував заздалегідь найпростішим синтезатором (змішав кілька типів хвиль).

Розробка. Логіка
Першою грою яку я додав у свій емулятор був, звичайно ж, Тетріс. Тут я постарався: симетрична система поворотів, відскоки від стін і підлоги при повороті, провертання на 180 градусів у вузькому колодязі, справедливий генератор вибору фігурки, ковзання після м'якого падіння, управління (хороша чуйність в цілому, різке падіння подвійним натисканням вниз, поворот у зворотний бік кнопкою вгору) і навіть знаменитий T-spin начебто вдалося зробити. У підсумку мені було зручніше і приємніше грати в цю гру на своєму емуляторі в смартфоні, ніж на реальному Brick Game. Не кажучи вже про офіційне Тетрисе для Android, який більше схожий на циркову виставу, ніж на тетріс (ІМХО).



У Unity3D можна використовувати C# і всі принади ООП, що я і зробив. Написав базовий клас для всіх ігор (з банальною назвою Game) і додавав їх по одній, наследуясь від цього класу.

Додав змійку, гонки, ще кілька видів тетрису (наприклад з фігурками з 5 блоків), понг, пізніше танчики, арканоїд… Упхнув туди також парочку невластивих цьому емулятор ігор: Digger і Bomber. Digger вийшов надзвичай складним і незрозумілим, але вирішив його залишити в якості родзинки.

Зробив стандартну анімацію заливки екрану при програші (з поданням дисплея в коді у вигляді масиву це було елементарно), анімацію вибуху для гонок і пари інших ігор. До класів додалися Sprite, AnimatedSprite. Наприклад, кожна фігурка тетрису у мене це Sprite, і після цього зсуву спрайту можна перевіряти зіткнення з ігровим полем і реагувати відповідно.

Загалом, розробка логіки йшла як по маслу і через місяць з початку розробки я виклав свій емулятор в Google Play. Перша іконка була скріншотом з гри, згодом намалював стилізовану іконку покрасивей (поки малював, помріяв про програму з точно таким ось дизайном, зменшеним екраном і трьома кнопками яких, у принципі, має бути достатньо для тетріса і змійки):



Розкрутка
З 39 тисяч, лише пара сотень людей прийшли за посиланнями з інтернету, які я залишав на різних сайтах, присвячених Android-ігор. Всі інші — самостійно знайшли застосування в пошуку Google Play.

Монетизація
Мені стало цікаво, скільки можна заробити на такій грі, адже все емулятори були сповнені рекламою до неподобства, рекламою різноманітних видів і здавалося, що у цьому був якийсь сенс. Я підключив Google AdMob і моїми підрахунками вийшло, що якщо заліпити усі додаток рекламою, то можна отримати як мінімум $5 за кожну тисячу скачувань. Менше реклами — менше грошей. Зробити рекламу в 5 разів рідше, грубо кажучи $1 за 1000 скачувань. Мільйон скачувань = $1000. Або $5000, якщо вдасться згодувати користувачам рекламу з невеликими вкрапленнями власне гри. Це стосується тільки AdMob, кажуть, є і більш щедрі партнерки, а ще у мене більшість трафіку було з країн СНД і Бразилії (чомусь), ставки на кліки з цих країн низькі, це теж впливає.

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

Через місяць я вирішив вимкнути рекламу, щоб не псувати додаток. Зазначу, що після відключення реклами середня оцінка зросла і популярність програми теж пішла вгору, користувачі стали відзначати відсутність реклами як одне з виняткових переваг мого емулятора.

Блокування та розблокування


4 Жовтня гру заблокували і Google Play Support прислали мені листа про те, що моє додаток “has been removed from Google Play because it violates our metadata policy. This app won't be available to users until you submit a compliant update.", що значить — щось не так з описом або назвою. Ніяких подробиць, що саме їх не влаштувало вони не повідомили. Мовляв, читай правила, сам здогадуйся, виправляй або подавай апеляцію.

Я відразу припустив, що виною всьому наявність в емуляторі гри в тетріс і згадка про це в описі. Але ж це емулятор пристрою, в якому завжди був тетріс (у перших Brick Game взагалі крім тетрису нічого не було)! І так вже склалося, що пристрій Brick Game у нас називали «тетрісом» хоч це і неправильно, але прижилося, що стало прозивним.

Але все ж достовірно причину я не знав, тому нічого не змінюючи подав апеляцію.

Через 2 дні прийшла відповідь:



Переклад: Ми не допускаємо додатків з метаданими, які оманливі, не мають відношення до додатка, надлишкові або недоречні. Метадані включають опис програми, іконки, скріншоти і промо-зображення.
Наприклад, опис вашої програми має відсилання до Тетрису.
Будь ласка, приберіть сторонні ключові слова...


Ось такий маразм, не можна писати, що у тебе в грі є тетріс, навіть якщо він там є, а краще взагалі його прибрати, напевно, щоб в подальшому не було проблем. Можна було б заощадити час якби вони відразу написали, що справа в слові tetris в описі.

Піддав опис цензурі:



Додаток після цього розблокували. Не виключаю, що у майбутньому можуть вліпити блокування за те, що там є тетріс на скріншоті або що він є в самому емуляторі.

Посилання
Посилання прибрав за порадою одного коментаторів, щоб не порушувати правила.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.