Как мы делали Mad Racer

Привет дорогой читатель. В этой заметке я опишу свой опыт создания первой игры для мобильников Андроид. Многим людям нравится эта история, я считаю ее необходимо опубликовать. Это не история успеха, но думаю многим начинающим разработчикам даст понимание с чего начинать и что нужно делать для создания простенькой игры. Обязательно опишу свои ошибки, и что можно было сделать лучше.

Hewl-Tanky

Да простят меня Jamie Hewlett и Alan Martin, публикую отличный арт Tank Girl без их разрешения

Иногда впадаешь в такое состояние, в котором хочется создать что-то эдакое, чтобы все ахнули и разинув рты говорили “Ну ты крут“. Такая история случилась со мной в 2011 году, когда я посмотрев отрывок фильма “Tank Girl” загорелся идеей создать аркадную игру в комиксном стиле.
Почему для Андроид, а не iOS? Причина проста – у меня не было макинтоша и айфона, зато было огромное желание поддержать Линукс на мобильниках. В то время мне нравилась идеология FSF, а Ричард Метью Столлман был моим божеством.


Песня линукс хакеров. Прежде чем петь – поверь в мир во всем мире

На момент разработки последней версией андроид был 2.0, также необходимо было оставить поддержку для старых версий, так как пользователей 1.6 было очень много. Многие производители телефонов даже не выпускали обновлений до версии 2.0.

Я сразу поставил временные рамки для реализации данного проекта – один месяц. За это время предстояло подтянуть знания по Java, изучить Android SDK, Eclipse, встретиться с монстром в лице OpenGL ES и положить его на обе лопатки. Со стороны графики предстояло создать около шести 3d моделей, оптимизированных для мобильников. Также необходимо было выпустить проект на золото в Android Market, в то время Google Play назывался так)

jpct_logo
jPCT-AE бесплатный 3д движок для Андроида

Так как времени было мало, необходимо было выбрать готовый 3d движок. Создать свой движок с нуля можно, но не очень продуктивно, так как на тестирование и совместимость со всеми устройствами уйдет большая часть времени. До прихода Unreal Engine, Unity, ThreeJS (HTML5), лидирующим движком был JPCT-AE. Движок поставлялся в виде готовой java библиотеки, поддерживал старые версии андроида. Также его создатель EgonOlsen оперативно занимается поддержкой и исправлением ошибок по запросу разработчиков.

antonHooligan

Кадры решают все – хулиган Антон согласился написать музыку для игры. Я всегда восхищался его творчеством, его работа послужила локомотивом движущим весь геймплей, заставляющим пользователя играть до последнего сбитого вертолета.

Столько всего, с чего же начать? Начать надо с установки Android SDK. Сейчас она поставляется со встроенным IDE – Android Studio. Но на тот момент IDE и SDK поставлялись отдельно. По документации на сайте Google произвел установку Android SDK, Eclipse. Также были установлены необходимые пакеты для Eclipse обеспечивающие сборку и запуск эмулятора Андроид. Через час я собрал тестовый проект jpct-AE:

Это было ухты! Но в эмуляторе телефона все тормозило очень сильно. Поэтому было принято решение купить телефон на платформе Андроид. Для этих целей был приобретен LG Optimus One P500. С тех пор я не пользуюсь отличными кнопочными телефонами нокиа на платформе Симбиан) Были проблемы с подключением телефона к Линуксу, если кто-то с ними встречается до сих пор, то проверьте настройки udev.


Джобс цитирует Пабло Пикассо

Посмотрев на Alien Runner, я понял что инопланетянина можно заменить на мотоцикл и двух панков с базукой, поляну вокруг превратить в мегаполис, а туман заменить на ночь из баллад Iron Maiden.

Как делать 3д модели? Да очень просто, открываешь урок по созданию low-poly моделей на Youtube и делаешь. Весь процесс заключался в обводке проекций в 3д редакторе. Мною были найдены чертежи вертолета Apache, и была сделана модель вертолета. Текстуры были взяты из открытых источников армии сша.

McDONNELL_DOUGLAS_AH-64_APACHE

Зачем нужен вертолет в игре с двумя панками и базукой? Когда я играл в прототип, то заметил что игрок может просто стоять на месте и набивать очки. Идеальным решением оказался вертолет, который прилетает и закидывает игрока субмаринными торпедами, не давая ему останавливаться.

В мобильных приложениях и играх того времени остро выражена проблема нехватки памяти, как на самом телефоне, так и в оперативной памяти. Производительность была тоже на троечку. Один ARM процессор с частотой 300-500 мгц. В результате тестирования на телефонах друзей, оказалось что у HTC в два раза меньше видеопамяти чем в LG, 8мб и 4мб со-но, из-за чего игра выбивала лимиты памяти и не запускалась. Все ресурсы были ужаты до того состояния, чтобы получить фреймрейт 30 кадров в секунду, и возможность запускаться почти на всем.


Не повторять!

В Alien Runner управление осуществлялось с помощью нажатий на экран. Такой тип управления мне показался не удобным, я реализовал управление с помощью акселерометра. Тоесть поворачиваешь телефон – поворачивается мотоцикл. Мне так понравилось что я даже добавил вид от первого лица, для самых смелых.

Поддержка со стороны разработчика движка jpct-AE мне понадобилась когда я увидел что в игре исчезает затемнение впереди. Это происходило после сворачивания и разворачивания приложения. Я создал тему на форуме jpct-AE и уже через два дня проблема была решена. Я интегрировал исправленную версию движка в игру.

Также стоял вопрос как реализовать бесконечную подачу машин. Для мобильной игры необходимо было придумать способ обеспечивающий добавление машин на игровую сцену БЫСТРО. Вариант с загрузкой из медленной памяти или sd карты был сразу отвергнут. На помощь пришел паттерн проектирования под названием объектный пул. Когда машина выходила из области видимости или уничтожалась, то она отключалась и в момент когда требовалось подать новую машину в начало сцены – то она включалась и ставилась туда.

android-market

Чтож настал день релиза. Игра была оттестирована, предварительный показ друзьям проведен, теперь предстояло выйти в золото на Android Market. Регистрация в Android Market  стоила 20$, оплачена. Добавлено описание, скриншоты. И в этот момент я понял что нужно записать видео.

Как записать видео для мобильного  проекта? Неужели снимать мобильный телефон на камеру, а потом выкладывать? Решение было интересным, я использовал Андроид эмулятор, отыграл в игру с фреймрейтом  два кадра в секунду, записав все происходящее на экране с помощью  программы которая называется примерно так gtkDesktopRecorder. С помощью VirtualDub скорость видео была увеличена до 30 кадров в секунду. Потом в лучшей программе для редактирования видео – Windows Movie Maker я добавил все игровые звуки и музыку.

Теперь настал момент ошибок. В раскрутку проекта не было вложено ничего, ни усилий, ни денег. Я тогда считал что проект отобьет сам себя. Игра ушла на золото, я создал тему на форуме jpct-AE о Mad Racer. Я получил 12 установок по доллару за две недели. И обнаружил игру в бесплатном доступе на куче варезных сайтов на следующий же день.

Напевая песню FSF “Share the software” я решил сделать бесплатную версию, с рекламой. Игра была переведена в разряд AdWare, внизу появился рекламный баннер от сети AdMob. Интеграция с рекламной системой прошла гладко. За месяц игра была установлена на десять тысяч устройств. Из рекламной сети я получил 50$.

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

Из положительных сторон хочу отметить получение мной места iOS разработчика в одной из лучших компании нашего города. И конечно же бесценный опыт.

madracerLogoСсылка на Google Play

Если понравилась статья, сделай репост вконтакте, Facebook)

Anthony

antonio

Главное знать, что ты можешь, а чему еще предстоит научиться. Говоря о качестве — я забываю о времени. Этот приоритет, который нужно научиться правильно ставить.

Привет всем, меня зовут Антон и я дизайнер. В основном я занимаюсь 3D графикой, но нередко люблю разрабатывать и UI дизайны. Мое хобби — музыка и фентези.

e-mail: anthony.dmitriev@yahoo.com
linkedin: https://www.linkedin.com/in/anthony-dmitriev-86075172
vk: /coolspotdreamer
fb: /coolspotdreamer

tw: /coolspotdreamer

Demens Deum

Илья Прохоров (позывной Demens Deum) – люблю создавать приложения, игры, музыку. Пишу на языках C/C++, ObjC, C#, Swift, Java, и еще 10 похожих на Ruby и Python языков для веба и скриптов. Люблю играть на нервах и гитаре. Напиши мне если хочешь поговорить за жизнь или сделать крутой проект.

Email: demensdeum@gmail.com
Facebook: facebook.com/demensdeum
Vk: vk.com/demensdeum
LinkedIn: https://www.linkedin.com/in/demensdeum/
Instagram: https://instagram.com/demensdeum
Gitlab: http://gitlab.com/demensdeum/
Stack Overflow: https://stackoverflow.com/users/1105441/demensdeum