Разработка игр под android


Программирование игр под Android / Блог компании Издательский дом «Питер» / Хабрахабр

Автор – Марио Цехнер Перевод – Егор Сидорович, Евгений Зазноба Дата выхода – 17/10/2012

Анонс адаптирован по рецензии.

Любой новоиспеченный разработчик Android, твёрдо намеренный создать новую игру, которая не уступит по популярности знаменитым Angry Birds, с энтузиазмом воспримет выход этой книги. Но подойдет ли она вам? Предлагаю мой обзор этой работы. Надеюсь, читатели смогут судить, как лучше всего ее изучать, и для кого она оптимально подходит.

Я с нетерпением ожидал выхода этой книги. Мне нравится изучать конкретные аспекты программирования на этой платформе, так мне самому удается лучше излагать материал. У книги, о которой здесь пойдет речь, есть несомненные достоинства, но, не скрою, не все в ней меня порадовало.

Начну с неприятного — чтобы заканчивать на мажорной ноте. Во-первых, Марио Цехнер не учит программированию «с нуля», а ведь в названии книги четко указано: «Beginning Android Games». Видимо, автор полагал, что читатели так или иначе должны разбираться в языке Java (но все мы знаем, как ненадежны такие допущения). Так или иначе, в книге не объясняются ровно никакие базовые концепции языка Java, обойдена вниманием и структура разработки. Кроме того, мне не понравилась чрезмерная дотошность автора при рассмотрении некоторых тем (на мой взгляд, второстепенных) и, напротив, недостаточное раскрытие других тем – которые, как раз, показались мне немаловажными. Но это, как говорится, дело вкуса. На самом деле, два этих недостатка не доставят вам больших неудобств, если вы хорошо ориентируетесь в программировании на Java.

А теперь давайте о хорошем. Эта книга обладает целым букетом достоинств, и автор на самом деле не пожалел сил на создание этого 650-страничного шедевра. Сначала он рассказывает о построении фреймворка, который используется на протяжении всей книги. Насколько помню, речь об этом идет в главе 3 – причем, достаточно расплывчато, как мне показалось. Но в следующей, четвертой главе, автор переходит к рассмотрению некоторых функций Android, которые он собирается задействовать при написании самих игр. Далее, в пятой главе, он связывает материал третьей и четвертой главы – в результате, мы приобретаем целостное представление о нашем фреймворке для Android. Опять же, если читатель не слишком хорошо разбирается в программировании на Java, то эта интеграция может показаться ему сложной. Но, как мне кажется, глава 4 будет интересна для любого специалиста. Автор описывает разработку нескольких 2D-игр (например, игра типа «змейки», а далее по книге — еще несколько двухмерных игр). Потом автор рассказывает об OpenGL (эта информация, полагаю, будет очень полезна практически для кого угодно), но до сложного программирования 3D-игр дело так и не доходит. Правда, я считаю, что приведенного материала вполне достаточно, чтобы вы смогли написать игру типа «Вторжение пришельцев» (Droid Invaders) — как раз то, что ожидаешь встретить в такой книге. 3D-программированию посвящено 3 главы этой книги. В качестве введения в трехмерную графику – неплохо, но введением все и ограничивается. В частности, здесь рассмотрены базовые концепции, понятие об экранной модели и самые азы обнаружения соударений (collision detection) при программировании трехмерной графики. Думаю, что с этими вопросами автор справился вполне достойно, поскольку программирование 3D-игр — очень сложная тема. Спасибо автору за такое грамотное изложение ее основ.

Вы, конечно, не станете асом по разработке игр, прочитав эту книгу. Но вы сможете изучить ряд базовых аспектов такой разработки. Думаю, в книге на редкость хорошо подана фундаментальная информация по данной теме. Как минимум, лучше, чем в других книгах по разработке игр для Android, которые сейчас есть в наличии. Не могу поставить книге наивысшую оценку, поскольку в ней недостаточно подробно рассмотрен язык Java. Но, если уж на то пошло, это книга об Android, а не о Java. Если вы только начинаете заниматься программированием, то рекомендую для начала изучить хорошую книгу о Java — а потом переходить к этой.

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

Надеюсь, эта рецензия была вам интересна.

Содержание: Введение Глава 1. Android: новенький в классе Глава 2. Первые шаги с Android SDK Глава 3. Разработка игр 101 Глава 4. Android для разработчиков игр Глава 5. Android Game Development Framework Глава 6. «Мистер Ном» покоряет Android Глава 7. OpenGL ES: первое представление Глава 8. Трюки при разработке 2D-игр Глава 9. «Большой прыгун»: двухмерная игра, написанная с помощью OpenGL ES Глава 10. OpenGL ES: займемся 3D Глава 11. Трюки при разработке 3D-игр Глава 12. Droid Invaders: большой финал Глава 13. Публикуем вашу игру Глава 14. Что дальше?

Книга на piter.com Книга на ozone.ru

habrahabr.ru

Идеальная платформа для разработчиков игр

Игры на Android

Игры исторически были двигателем развития технологий: как самого «железа», так и программного обеспечения, методов ввода, графической поддержки. В мобильном сегменте, в особенности на платформе Android, - ровно то же самое: игры и игроки двигают рынок вперед интенсивнее, чем любая другая жанровая категория. В обозримом будущем игры продолжат совершенствовать наши устройства.

Android – уже сформировавшаяся, но всё еще растущая платформа. При этом она крайне популярна среди разработчиков: платформа крепко обосновалась и широко распространена на рынке. Возможности современных Android-устройств начинают превосходить возможности консольных систем последних поколений. Удивительно то, что любые игры, начиная от самых примитивных и заканчивая сложными, мультиплеерными проектами, имеют равные шансы на успех. За примером далеко ходить не надо - Flappy Bird. Большое разнообразие пользователей по критериям возраста, пола и предпочтений делает Android идеальной платформой для игровых компаний-разработчиков любого калибра.

Было время, когда наиболее успешные игры выпускались всего несколькими крупными издателями. У этих игровых гигантов всегда имелось в запасе много талантов и бренд-лицензий. У них было много ресурсов для создания игровых сервисов и технологий, которые можно было с легкостью использовать снова и снова для разработки мощных игр высокого качества. Для маленьких и независимых разработчиков создание игр на десктопах и консольных системах было фактически невозможным. Барьер для проникновения на этот рынок был слишком высок.

Мобильная сфера оказалась очень демократичным рынком для разработки игр. Отчасти за счёт большого числа пользователей и их разнообразия, что позволяет всем разработчикам найти свою нишу. Но есть и другая причина – сегодня в распоряжении мобильных разработчиков гораздо больше инструментов и сервисов, чем когда-либо. Без них разработка игр не была бы такой доступной на этом быстроразвивающемся рынке.

Android является, пожалуй, наиболее развитой мобильной игровой платформой, если говорить о доступных инструментах и сервисах. Команда разработчиков Android, Google и такие партнеры как Intel, вложили исполинские усилия в то, чтобы обеспечить успех платформы, предоставляя специальные инструменты, различные API и сервисы для совершенствования Android-проектов. Многие из этих средств созданы целенаправленно для помощи разработчикам игр, к примеру:

  • Разработчики: Барьер для выхода на рынок никогда прежде не был таким низким. Сейчас каждый может создать приложение на Android и опубликовать его. Традиционно приложения пишутся на Java, который популярен как самостоятельный язык программирования и является самым распространенным языком объектно-ориентированного программирования в компьютерных классах большинства мировых университетов.
  • Средства разработки: Средства разработки Android предоставляются на бесплатной основе. Здесь нет затратных компиляторов или лицензионных сборов. Eclipse - хорошо известная среда разработки, уже скоро ожидается выпуск Android Design Studio, стандартные инструменты Android предоставляют весь необходимый функционал и постоянно улучшаются. Члены Open Handset Alliance, к примеру, Intel, выпустили ряд инструментов, чтобы упростить разработку под программную среду x86, а также х86-совместимые Android-устройства.
  • Android SDK: Android SDK – полнофункциональный набор интерфейсов программирования, который Java-разработчики сочтут привычным и простым в использовании. Поддержка OpenGLES позволяет разработчикам создавать приложения с интенсивной графикой, в то время как встроенные базовые графические и анимационные библиотеки Android дают возможность простым играм выглядеть притягательно без особого труда.
  • Нативная разработка: Нужно портировать много игровых библиотек? Разработчики, желающие использовать свои существующие игровые библиотеки на C/C++, могут использовать для этой цели Android NDK вместо глобальной переделки.
  • Сторонние игровые движки: Существует множество популярных игровых движков, которые дают возможность быстро создать игру на Android без изобретения колеса. Игровые движки могут помочь с портированием, предоставить фреймворк, поддерживающий распространенные паттерны дизайна игры, а также инструменты для генерации игровых объектов, к примеру, текстур и уровней.
  • Сторонние библиотеки для разработчиков игр: Разработчики могут использовать сторонние библиотеки для выполнения стандартных задач в играх, причем некоторые библиотеки оптимизированы под определенные процессоры. Их использование позволяет сократить время на разработке алгоритмов, а также получить наиболее оптимизированный код, что не всегда удается сделать с помощью компилятора.
  • Игровые сервисы: Google (Google Play Game Services) и Amazon (Amazon Game Circle) разработали комплект сервисов, позволяющих разработчикам сосредоточиться на основном функционале игры и «безболезненно» интегрировать социальные опции.
  • Публикация: У разработчиков существует масса доступных механизмов распространения.

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

Идеальная платформа для разработчиков игр - Android

Разработчики, средства разработки Intel и Android SDK

Изучению платформы Android посвящено много статей, книг и даже университетских программ, поэтому мы быстро пробежимся по главным темам. Если вы только в начале пути, вам будет полезно посмотреть сайт, посвященный разработке на Android - https://developer.android.com. Здесь вы сможете узнать об Android, скачать AndroidSDK и необходимые инструменты, чтобы приступить непосредственно к разработке.

Вам стоит также направиться в Intel Developer Zone для Android и заполучить средства Intel для Android-разработки, а также инструменты отладки. Инструменты Intel Graphics Performance Analyzers (Intel® GPA) для Android - незаменимы для сбора аналитики для игр с интенсивной графикой. А Hardware Accelerated Execution Manager отлично экономит время: инструмент значительно ускоряет эмуляцию Android на устройства на базе процессоров Intel, вне зависимости от того, какой тип приложения вы разрабатываете.

Android NDK

Если вы потратили уже достаточно времени на разработку вашей игры на другой платформе, у вас есть возможность использовать существующий код в Android-приложении, используя Android NDK. Он поддерживает компоновку вашего приложения (на Java) с существующими библиотеками C и C++. У NDK существует ряд ограничений и его использование часто не лучшим образом сказывается на производительности. Использовать эту методику стоит только в случае, когда объем кода, который необходимо портировать, достаточно велик. Загрузить NDK и узнать больше информации вы можете здесь: https://developer.android.com/tools/sdk/ndk/index.html. Инструкции по установке пакета NDK и построению приложений с его помощью вы найдете в этой статье: https://software.intel.com/ru-ru/articles/ndk-for-ia.

Сторонние игровые движки

Игровые движки являются фундаментом для разработки игр, поэтому давайте взглянем на арсенал средств, доступный современному разработчику игр на Android. Создание даже самой простой игры c нуля требует огромных затрат времени и энергии на разработку функционала, который вовсе не делает игру уникальной или, если не сказать больше, великолепной. Есть множество задач разработки и паттернов дизайна, которые могут быть применимы во многих играх. Именно поэтому сторонние разработчики усмотрели необходимость разработать совместно используемые библиотеки и движки специально для Android-разработчиков. Иными словами, нет необходимости снова изобретать колесо.

Игровые движки могут серьезно облегчить непосильное бремя разработки и позволить разработчику сфокусироваться на совершенствовании игровой механики. Использование игрового движка может прилично сэкономить время и энергию. Вдобавок, многие разработчики игр повышают свои компетенции, используя те или иные игровые движки. Довольно часто в резюме разработчика можно увидеть перечень игровых движков, с которыми ему приходилось иметь дело. Использование известного движка сокращает объем тестирования и предоставляет ряд преимуществ, например, возможность оптимизации под конкретные платформы. К примеру, некоторые игровые движки уже оптимизированы под устройства Intel.

Игровые движки широко варьируются в зависимости от того, что они могут дать разработчику: некоторые предлагают полный игровой пакет, другие – поддержку низкоуровневых библиотек. Одни - 2D, другие - наоборот, 3D. Многие движки также предоставляют инструменты для создания полноценных игр и приложений: от конвертеров формата, редактора уровней до физических движков и средств управления анимацией. Через игровой движок доступны и обычные игровые средства вроде создания аватара.

Некоторые игровые движки являются характерными для платформы Android, в то время как другие могут быть кроссплатформенными и поддерживают разработку консольных игр в дополнение к мобильным. Существует много движков для Android – точнее, так много, что проще перечислить несколько самых популярных.

  • Unreal Engine 4,
  • Unity 3D,
  • Marmalade,
  • Project Anarchy (Havok/Intel),
  • GameMaker: Studio,
  • Corona Game Edition,
  • Cocos2Dx,
  • AppGameKit,
  • libgdx,
  • AndEngine,

Определение наиболее подходящего для вашей игры движка является ключевым решением. Движки с большим количеством функций обычно массивны и сложны в использовании, нежели менее функциональные и, как следствие, более «легкие» игровые движки. Если посмотреть с другой стороны, многофункциональные игровые движки обросли крупными сообществами разработчиков, так что просьба о помощи или поиск специалиста – задачи, легко осуществимые. Некоторые движки сфокусированы на поддержке кроссплатформенности на основе единой кодовой базой. В таком случае, разработчик обычно пишет игры на некотором скриптовом языке. Другие движки могут потребовать нативного кода для каждой платформы. Наконец, выбор игрового движка может просто-напросто сводиться к стоимости лицензии.

Если ваш проект включает разработку игры, требующей высоких технических характеристик от устройств пользователей, вам будет интересно узнать, какие движки могут быть оптимизированы под специфические процессорные платформы, например, под Intel x86. Игровые движки, адаптированные под конкретные процессоры, имеют свои преимущества. Они отлично работают на отдельно взятой платформе взамен «неплохой работе» на всех остальных. Также они позволяют разработчику использовать передовые технические возможности на самых новых, премиальных Android-устройствах. Или же наоборот, увеличивают размах игры за счет ее возможности стабильно работать на недорогих или даже устаревших Android-устройствах с низкой производительностью.

Примеры различных типов игровых движков могут быть вам полезны. Давайте взглянем на libgdx и Project Anarchy, - два принципиально разных игровых движка.

Libgdx – это 2D- и 3D-движок, который помимо Android поддерживает Windows, Linux, Mac OS, BlackBerry, iOS и даже веб. В отличие от многих кроссплатформенных сред, приложения пишутся на Java, что очень удобно. Графика включает API для 2D- и 3D-интефейсов, низкоуровневые вспомогательные инструменты для OpenGL, а также математические или физические библиотеки. Поддерживаются музыкальные и звуковые эффекты, включены различные вспомогательные API – для файлов, предпочтений и разбора формата файлов. Наконец, доступны некоторые инструменты для конфигурации проекта, генерации шрифтов и редактирования системы частиц. Игровой движок libgdx является открытым и хорошо поддерживается сообществом. Проект очень развит: он имеет большое количество документации и обширную галерею приложений и игр, его использующих. Если вам комфортно работать с Eclipse и нет предубеждений против open-source сообщества, libgdx может стать отличным выбором для вашей игры.

Project Anarchy – полнофункциональный игровой движок, разработанный Havok и компанией Intel. У Project Anarchy есть всё: от физических движков до 3D-позиционного аудио, от профилирования кода до моделирования ландшафта. В отличие от libgdx, Project Anarchy лицензирован. В то время как мобильная лицензия Anarchy обеспечивает внушительный функционал на бесплатной основе, полный пакет опций движка Havok требует различных лицензий. Project Anarchy поддерживает разработку для Android ARM и x86 устройств, а также iOS. Windows, десктопные или консольные платформы так же поддерживаются, но для них необходимы другие лицензии. Project Anarchy имеет расширенный пакет инструментов для каждого члена команды разработчиков, включая дизайнеров, графических дизайнеров, аниматоров и других разработчиков. Как более профессиональное решение, Project Anarchy может оказаться совершенно не тем, чего ожидают многие разработчики мобильных приложений. Те, кто работают на Anarchy, используют более традиционные платные инструменты разработки вроде Visual Studio и Perforce. Если команда разработчиков вашей игры хорошо разбирается в традиционных методиках и инструментах, Project Anarchy станет лучшим движком для вашего проекта.

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

Сторонние библиотеки для оптимизации игр

Существует много библиотек для Android в дополнение к тем, что идут в составе Android SDK и предложений Google. К примеру, Intel предлагает целый ряд инструментов и библиотек, которые могут пригодиться разработчикам Android-игр, особенно если производительность устройства является для вашей игры камнем преткновения.

Несмотря на тот факт, что Android-устройства на базе процессоров Intel не могут похвастаться таким большим числом пользователей как ARM-устройства, Intel приложил немало усилий, чтобы предоставить разработчикам высоко оптимизированные библиотеки. Все они адаптированы под конкретные технологии Intel и значительно превосходят компиляторы. Тем не менее, любой разработчик, использующий их как составные части x86 NDK, будет внедрять собственную реализацию на других процессорах или задействовать готовую Java-реализацию.

Библиотека Intel®Integrated Performance Primitives (Intel® IPP) предоставляет алгоритмы обработки данных и мультимедиа для преобразования изображений, статистики и даже компьютерного зрения. Чтобы узнать об Intel® IPP для Android, посетите страницу http://software.intel.com/en-us/articles/using-intel-ipp-with-android-os.

Современная разработка игр неизбежно требует высокой производительности и возможности параллельного выполнения кода: необходимо сохранить высокий уровень передачи объектов рендеринга, подготовить реалистичную анимацию, воспроизвести искусственный интеллект, создать реалистичный звук и сетевое подключение. Библиотека Intel Threading Building Blocks (Intel® TBB) предоставляет фреймворк для создания многопоточных приложений. Android, в свою очередь, тоже предоставляет подобные инструменты поверх SDK, но приложения невозможно будет портировать на другие платформы. С Intel® TBB у вас не возникнет проблем с портированием, вдобавок вы получите дополнительные оптимизации для устройств Intel. Подробнее об использовании библиотеки TBBдля написания Androidприложений вы можете прочитать в блоге Intelна Хабрахабр: http://habrahabr.ru/company/intel/blog/161527/.

Мобильные и игровые сервисы

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

Такие крупные игроки рынка как Google предоставляют расширенный набор сервисов для помощи Android-разработчикам сразу в нескольких направлениях. Лучшее место для старта - Google Play Game Services, где вы найдете возможности для поддержки социальных аспектов игры, например, таблицы результатов или достижений; инструменты облачного хранения; игровые модели пошаговой стратегии или игры в реальном времени, а также многое другое. Прочие сервисы, такие как Google Play In-App Billing и Google Mobile Ads менее ориентированы конкретно на игры, но, тем не менее, они помогут вам монетизировать игру. Также Google предоставляет сервисы для интеграции игры с социальными медиа, к примеру, Google+. Если необходимы облачные сервисы, попробуйте Google Cloud и Google Cloud Messaging. Для сбора важных данных о работе приложения и пользователях можно использовать Google Analytics. Разработчики, желающие опубликовать свое приложение в Amazon, смогут найти подобные сервисы в Amazon GameCircle.

Возможности публикации

Итак, вы вложили в проект свое время, свои выходные, пот, кровь и слезы. Вы завершили разработку игры, и сейчас вам необходимо найти ваших пользователей. С Android у вас есть несколько путей публикации. Большинство разработчиков публикуют свои игры в Google Play и Amazon Appstore. Оба магазина требуют от разработчика создать аккаунт (за небольшую плату) и затем издатели, Google или Amazon, добавят вашу игру в свой каталог приложений, будут управлять ее распространением и собирать доход. Затем они вычтут процент своего интереса и передадут вам остаток, - все просто! Есть также и альтернативные методы публикации. О них и о многом другом вы можете узнать на http://d.android.com/tools/publishing/publishing_overview.html. Если вы хотите опубликовать приложения для x86 устройств, прочитайте советы Intel по публикации таких приложений: http://software.intel.com/en-us/blogs/2012/11/12/how-to-publish-your-apps-on-google-play-for-x86-based-android-devices-using.

Помните, что конкретный метод распространения игры может быть ограничен выбранными вами игровым движком или библиотеками. К слову, бесплатные и открытые игровые движки c меньшей вероятностью будут ограничивать ваш полет. Тем не менее, как минимум один из упомянутых нами игровых движков требует от разработчиков публикации только в хорошо известных магазинах приложений (Google Play и Amazon Appstore). Более того, условия лицензии некоторых игровых движков могут потребовать процент от вашего дохода, что может повлиять на ценообразование вашего продукта, внутриигровых покупок и других приемов монетизации. Удостоверьтесь, что вы прочитали все условия, прежде чем выбирать игровой движок для своей игры.

Заключение

Разработка игр стала довольно простым полем для освоения. Платформа Android располагает всеми инструментами и сервисами, чтобы помочь разработчикам быстро вывести игры на рынок. Будучи самой популярной на сегодня платформой, Android непременно найдет пользователей, которые захотят играть именно в вашу игру. Задумываетесь о создании очередной казуальной игры или хотите замахнуться на захватывающий ролевой блокбастер? В любом из случаев вы можете смело полагаться на Android, который точно поможет превратить вашу идею в реальность.

Обязательно заходите на сайт программы Intel® Developer Zone, чтобы получить больше информации об инструментах Intel для разработки Android приложений.

apps4all.ru

Программирование игр под Android, скачать книгу

  • Автор: Марио Цехнер
  • Год издания: 2013
  • Язык: русский
  • Объемом: 690 стр.
  • Формат: PDF
  • Размер файла: 10 MB

В книге рассматривается полный цикл разработки игр для платформы Андроид - от основ программирования до их публикации и грамотной организации техподдержки. Для того чтобы приступить к начальному этапу разработки и создания движка игры, необходимо ознакомиться с базовыми концепциями его проектирования. Кроме этого, необходимо вникнуть в специфику программирования, связанную с созданием игр.

Чтобы процесс разработки был эффективным, следует хорошо ориентироваться в особенностях и устройстве платформы Android. Одного творческого подхода недостаточно, хотя он тоже необходим. Инструменты для создания игр или игровых платформ под Андроид следует знать как «свои пять пальцев», уметь их отлаживать и настраивать под конкретные нужды.

Что предстоит освоить практически? Умеете программировать озвучивание, графику? Вы знаете, что такое OpenGL ES или спрайтовая анимация? На примере создания трех, отличных друг от друга игр, вы с этим познакомитесь. Сможете не только создавать похожие, но и пользоваться источниками Интернета, применять собственные задумки. Одна из игр-примеров создана в 3D - трехмерным технологиям и эффектам в книге отводится значительная роль.

Книга довольно объемная, компьютерного качества, что позволяет копировать фрагменты кода прямо из самих листингов. Однако код можно получить из открытого источника, который указан. И хотя порядок подачи материала постепенный, более опытные разработчики могут пропускать какие-то главы издания. Но лучше их бегло пролистывать - там множество полезных хитростей и приемов.

Начинающим же достаточно знать Java - пусть неблестяще, не обязательно разбираться в самой Android или Eclipse. Во всяком случае, изучение материала позволит создавать полноценные игры и приложения собственноручно, воплотить в жизнь самые смелые идеи.

скачать книгу «Программирование игр под Android»: DepositfilesTurbobitHitfile

Основы программирования на платформе 1С

Эти видеоуроки могут осваивать люди, мало знакомые с программированием, они для новичков. Их цель — научить основам программирования на платформе 1С.

подробнее...

Язык запросов 1С-программирования

Ускоренное изучение языка запросов 1С на платформе 8.3. Уроки научат извлекать данные из базы в удобном виде, они продуктивны и имеют четкую конкретику.

подробнее...

Основы Java для начинающих

Видео по Java и объектно-ориентированному программированию. Представлена осязаемая конструкция языка Java и правильная модель программирования.

подробнее...

Базы данных в Java

Любому программисту необходимо уметь работать с базами данных. Вы узнаете, как используются БД и запросы SQL в Java. Уроки подходят новичкам.

подробнее...

Создание и монетизация приложений Android

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

подробнее...

Программирование на Java для детей, родителей .. (PDF)

Учебник по программированию на Java предназначен для новичков, что явствует из его красноречивого названия, он отлично иллюстрирован.

подробнее...

Язык C в 21 веке (PDF)

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

подробнее...

Путь программиста (PDF)

Это справочник по эффективному построению карьеры программиста. Он научит дорого продавать свои услуги на рынке информационных технологий.

подробнее...

samouchitelbox.ru

Как создавать игры на "Андроид" самостоятельно

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

Идея

Первое, что требуется для создания игры - идея. На первом этапе ее можно записать в любом виде. Желательно, чтобы она "цепляла" и была понятна. Вероятнее всего, в процессе воплощения она будет изменена. Что-то придется добавить, а что-то - полностью убрать или переделать. В этом нет ничего странного - при дальнейшей проработке деталей функционал не только придется досконально описать, но и проверить его на пригодность.

Не стоит полностью отказываться от первичного описания идеи и начинать создавать русские игры на "Андроид", пропустив эту стадию. Сбор мыслей - главная точка старта, из которой легче всего начинать движение. К тому же идеи, изложенные на бумаге, позволят взглянуть на задуманное объективнее, возможно, заранее отметить и исправить слабые места.

Список особенностей

Так как создавать игры на "Андроид" невозможно без их детальной проработки, на данном этапе придется продолжить работу в текстовом редакторе и описать особенности, которые будут в игре. Приведем пример: серия God of War - это слэшер. Оружие главного героя - кнут. Во время боя можно делать длинные красивые комбо-атаки. Каждый уровень завершается схваткой с боссом.

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

Диздок

Так как создать новую игру без этого документа почти невозможно, придется поработать и над ним. Диздок - сокращение от "дизайн-документ", он включает в себя максимально детальные описания:

  • Объектной модели и функциональности сущностей.
  • Функциональных спецификаций.
  • Контента игры.
  • Интерфейса.
  • По необходимости может быть добавлена база знаний.
  • Объектная модель.

Объектная модель

Объектная модель заключает в себе информацию о каждой игровой сущности: оружие, броня, NPC, заклинания, игрок. Она уникальна для каждой игры.

Под функциональностью следует понимать:

  • Можно ли надеть\снять\купить\продать\улучшить.
  • Останется ли в инвентаре после смерти.
  • Потеряет ли прочность с течением времени либо при каком-нибудь действии.
  • Повышает ли характеристики персонажа или группы.
  • Имеет ли набор особых свойств.

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

Функциональные спецификации

В продолжение ответа на вопрос о том, как создавать игры для "Андроид", следует рассказать о следующем разделе диздока. Функциональные спецификации описывают геймплей поштучно. Здесь нужно максимально точно рассказать, что умеет делать главный герой и как это реализуется. То же самое нужно сделать и для каждого NPC отдельно. Помимо игровых персонажей, следует затронуть аптечки, оружие, броню, элементы окружения.

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

Контент

До того как создать хорошую игру, необходимо продумать и то, что именно будет в ней. Описывая спецификации, можно указать, что персонажи будут стрелять из огнестрельного оружия, в которое заряжены патроны с жестко фиксированным уроном. При попадании в NPC из этого параметра будет вычитаться мощность брони. Также нужно будет указать название каждого отдельно взятого образца оружия, брони, NPC. И, конечно, необходимо описать внешний вид. Контент - это кирпичики, из которых впоследствии будет построена вся игра.

Интерфейс

Интерфейс - это набор функций и кнопок, при помощи которых пользователь будет взаимодействовать с программой. Главное, что следует учитывать при его создании - удобство. Чтобы понять, как именно организовать все элементы, можно запустить и проанализировать лучшие образцы жанра, перенеся наиболее подходящие решения в свой проект.

Выбор движка или конструктора

Еще один шаг, который придется выполнить до того, как создавать игры на "Андроид", - выбрать игровой движок. Давно прошли те времена, когда всё необходимо было делать с нуля. Сегодня, взяв готовый конструктор, можно выполнить все работы, написав минимум кода.

Выбор движка стоит делать, основываясь на некоторых его особенностях:

  • Условия использования.
  • Возможности.
  • Цена.
  • Поддержка разработчиками.
  • Задокументированность.
  • Размер комьюнити.
  • Простота.
  • Расширяемость.

Условия использования: возможно, один раз купив конструктор, вы не станете его полноправным владельцем. Бывает, что при коммерческом успехе игры приходится выплачивать процент от прибылей разработчикам движка. Главное - перед тем как создавать игры на "Андроид", ознакомьтесь с лицензионным соглашением продукта, выбранного для реализации.

Возможности: они должны полностью перекрывать потребности разработчика. Если же продукт предлагает больше, чем нужно, игру можно будет легко расширить, задействовать новые функции диздока. Но задумайтесь и о балансе! Использовать Unreal Engine для тетриса - глупо.

Поддержка: в первую очередь, важно выяснить, имеет ли продукт развитие? Исправляются ли ошибки от версии к версии? Обрастает ли он новым функционалом и инструментарием? Движок, который быстро развивается, имеет преимущество перед движком, замороженным несколько лет назад.

Комьюнити: каково число тех, кто использует конструктор? Если пользователей большое количество, найти документацию, уроки, мастер-классы, примеры не является проблемой. Если же пользователей сравнительно мало, эта информация может быть доступна не в том объеме, который позволит вам сделать что-то конкурентоспособное.

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

UDK

Unreal Development Kit - не самый простой в освоении игровой движок, но зато один из самых мощных. Его используют не только начинающие разработчики, но и крупные корпорации. Если вы ищете ответ на вопрос: "Как создать 3Д-игру и какой движок для этого выбрать?" - вам стоит изучить возможности UDK.

Для описания программной логики используется внутренний язык скриптинга - UnrealScript. Сайт разработчиков предоставляет множество уроков, как снятых на видео, так и описанных в текстовом варианте. При этом они охватывают максимальный функционал - от редактора до написания своих скриптов.

Torque 2D/3D

Torque - один из самых популярных конструкторов игр для мобильных платформ. Обладает всем необходимым набором редакторов и средств отладки. При разработке программисты уделили большое внимание удобству и старались сделать все утилиты наиболее простыми и доступными.

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

Для написания скриптов в Torque встроен язык Torque Script. Свойства каждого объекта могут быть определены заранее. Также в конструктор встроен набор Box2D, который занимается физическими расчетами.

Если вы пытаетесь найти ответ на вопрос: "Как создать сетевую игру и какой движок для этого выбрать?" - можно смело заявить, что Torque позволит сделать мультиплеерный проект в сжатые сроки. Весь необходимый функционал встроен заранее, а примеры, находящиеся на официальном сайте, покажут, как его использовать наиболее рационально.

Изучение

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

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

Работа в любой компании начинается снизу, это нормально. Да и навыки скриптера, левел-дизайнера, балансировщика, тестера будут весьма полезны, а это именно те отрасли, в которых трудится большинство юниоров. Через несколько лет подобных занятий можно будет научиться создавать диздоки и технические задания, узнать о багтрекерах и сформировать базу контактов. После проделанной работы, для того чтобы создать русские игры на "Андроид", потребуется потратить намного меньше сил, потому что вы запасетесь всеми нужными навыками и умениями.

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

fb.ru

Полезные книги о разработке мобильных игр на Android и iOS

Вы решили заняться разработкой мобильных игр. С чего начать? Большинство программистов в геймдеве не ходили в учебные заведения, специализирующие только на играх. Скорее, это был какой-нибудь аналог GeekUniversity с видеоуроками или самостоятельный путь, начавшийся с огромного количества любимых игр, разбора механики, курсов в целом по мобильной разработке, оттачивания найденных алгоритмов в простых игрушках, создаваемых для первого портфолио.

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

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

Android

Hello, Android: Introducing Google's Mobile Development Platform 4th Edition

C 2010 года живет и обновляется «Hello, Android», начинающая знакомить вас с азами мира этой мобильной платформы. С первой главы книга покажет, как с нулевым багажом знаний создать рабочее приложение: «Hello, World» для Android.

Далее последует пример простейшей мобильной игры Ultimate Tic-Tac-Toe — это симулятор игры в крестики-нолики с несколькими различными режимами. Постепенно добавляя в игру функции, вы научитесь основам разработки под Android: создадите пользовательский интерфейс, сделаете поддержку аудио и видео, добавите графику с использованием 2D и 3D OpenGL, научитесь хранить данные с помощью SQLite, а также узнаете, как публиковать готовое игровое приложение в Google Play.

Learning Java by Building Android Games — Explore Java Through Mobile Game Development

Эта книга также ориентирована на новичков, поэтому вы получите простое и доступное изложение материала о языке Java, его базовых API и ООП. «Learning Java by Building Android Games» ориентирована на то, чтобы научить вас Java по процессу создания игры. Вы будете создавать 4 игры для смартфона и планшета: математическую тестовую игру, игру с памятью в стиле «Саймон» и две игры в ретро-аркадном стиле.

Из книги вы узнаете, как настроить среду разработки Android Studio, создать собственный Android-интерфейс, ввести в игры пиксельную графику, клики, анимацию, звуковые эффекты и многое другое. Да, и еще с нуля выучите Java в степени, достаточной для создания собственных игр.

Beginning Android Games

Книга знакомит с принципами создания базового игрового движка и игр, которые будут работать на разных версиях смартфонов и планшетов. «Beginning Android Games» подойдет не только новичкам, но и опытным программистам — благо, что информации на 714 страницах вместилось много. Обратите внимание, что в примерах кода из книги могут встречаться ошибки — если учиться методом «копировать/вставить», не задумываясь над смыслом происходящего, ничего путного не выйдет.

Android NDK Game Development Cookbook

Относительно короткая (320 страниц) книга о пакете разработки Android NDK (native development kit). Android NDK — это набор инструментов, которые позволяют реализовать на языках С и С++ часть вашего приложения, требующего прямого доступа к ресурсам системы. Android NDK также используется для создания игр.

В книге изложены пошаговые рецепты, помогающие начать разработку мобильных игр, используя Android NDK, а также некоторые популярные библиотеки C++. Фактически, у вас получится создать полноценное мобильное игровое приложение на языке C++.

Вы узнаете, как писать переносимый многопоточный код на C++, использовать свои навыки языка в мобильной разработке, воспроизводить аудиофайлы, использовать OpenGL ES для рендеринга и распознавать жесты. Для книги нужно обязательно иметь хотя бы базовые знания по С/С++.

Книгу написали авторы из России — Сергей Косаревский, занимавшийся мобильной разработкой в SPB Software, Яндексе, Layar и Blippar, и Виктор Латыпов, обладающий опытом разработки компиляторов, драйверов, а также программирования для робототехники.

The Beginner's Guide to Android Game Development

Вы знаете Java? Ответ на этот вопрос не так и важен. При чтении и изучении материалов этой книги не имеет значения, новичок вы или опытный Java-программист. «The Beginner's Guide» предлагает достаточно информации, чтобы вы начали делать собственную игру с нуля.

В этом руководстве вы найдете теорию и практику отдельных фундаментальных концепций, изложенных поэтапно — по главе на базовые принципы Java и ООП. Книга предоставляет доступ к обширной библиотеке примеров Java-игр и Android-игр через свой веб-сайт, чтобы вы могли продолжить обучение самостоятельно. Все примеры кода из книги доступны под лицензией MIT на сайте автора.

Android Game Programming by Example

Эта книга в основном ориентирована на Java-программистов и любых других, уже имеющих опыт разработки под Android, которые хотели бы адаптировать свои навыки для создания мобильных игр.

Книга учит созданию простых игровых движков для различных типов игр, внедрению продвинутого AI персонажей, прорисовке игровых объектов, HUD, генерации и воспроизведению звука, бесшовной смене уровней и т.д. Для быстрой и плавной синхронизации кадров используется OpenGL ES 2. К концу книги вы по урокам сделаете три полноценные игры.

Android Design Patterns: Interaction Design Solutions for Developers

Если вы опытный разработчик мобильных игр, но хотите улучшить свои навыки, эта книга даст вам различные шаблоны программирования. Автор предлагает более 60 основных паттернов проектирования и обработки сложных аспектов, таких как главное меню, поиск, формы, сортировки, фильтры, навигации и так далее.

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

Professional Android 4 Application Development 3rd Edition

Книга вышла 5 лет назад, но нельзя сказать, что она радикально устарела. Это издание и сейчас остается отличным дополнением к любым источникам знаний по основам программирования на Android. Некоторые идеи могли быть реализованы лучше с использованием современных технологий, но это небольшой минус.

Вы получите 850-страничное руководство, написанное Рето Майером, одним из ведущих разработчиков Google, которое наглядно демонстрирует возможности Android SDK. Если вы опытный разработчик, то сможете быстро создавать свои игры. Новички сначала освоят интерфейс Android-приложения, а затем пошагово изучат все возможности оси. Большой плюс книги в том, что можно выбрать тот раздел, который интересует больше всего, и читать сразу выбранный фрагмент.

Книга переведена на русский язык.

Mobile Game Development with Unity: Build Once, Deploy Anywhere 1st Edition

Практическое руководство, рассказывающее, как создать интерактивные приложения для iOS и Android-устройств на движке Unity. Авторы делают обзор возможностей Unity с ориентацией на примерах использования их в реальных игровых ситуациях. Собственную игру вы будете создавать на примере трехмерного симулятора боевого космического корабля.

iOS

Game Development with Swift

Книга начинается со знакомства с лучшими функциями Swift для разработки игр. Затем вы узнаете, как оживить спрайты и текстуры, интегрироваться с Apple Game Center, публиковать готовые игры в App Store и многое другое. Под конец вы сможете создавать свои собственные игры для iOS с помощью Swift и SpriteKit. Вы должны быть знакомы с базовыми концепциями программирования, однако не требуется знаний Swift или знакомства с экосистемой Apple — начинать можно с нуля.

Кроме этой книги можно начать изучение языка с руководства «Swift Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)» или «Swift Essentials — Second Edition». Оба издания дружелюбны к новичкам, и они научат вас основам Swift, вне зависимости от того, как вы будете использовать язык.

Но если вы хотите углубить свои знания в разработке под iOS и вам требуется полное справочное руководство, обратите внимание на книгу «iOS 11 Swift Programming Cookbook: Solutions and Examples for iOS Apps».

Swift 3 Game Development — Second Edition

В 2017 году книга «Swift 3 Game Development» получила обновление и начинается теперь с новых функций SpriteKit и Swift, которые можно использовать для разработки игр. После настройки первого проекта Swift вы научитесь рисовать, анимировать свою игру и добавлять физические симуляции.

Чтобы сделать вашу игру более увлекательной и интересной, вы должны уметь настраивать сцены и фон, добавлять персонажей, создавать меню и интегрироваться с Apple Game Center для использования рейтингов и достижений.

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

iOS Swift Game Development Cookbook: Simple Solutions for Game Development Problems

Еще одно издание, получившее свежий апдейт. Книга содержит подробные рецепты для управления широким спектром общих проблем разработки игр iOS: от 2D и 3D-математики до SpriteKit и OpenGL — все они пересмотрены для Swift. Вы получаете простые, прямые примеры решений общих проблем, возникающих при программировании игр. Книга касается тем создания и настройки меню с помощью UIKit Detect, методов воспроизведения звуковых эффектов и музыки, различных способов хранения данных, математических сложностей физического моделирования, игрового ИИ, взаимодействия с игровыми контроллерами и внешними дисплеями.

Для этой книги вам потребуются начальные знания в областях iOS-программирования, Swift и Objective-C.

Beginning iOS Game Development

С книги Патрика Алесси многие начинали (и начинают) разработку под iOS. В «Beginning iOS Game Development» для новичков дается архитектура системы iOS, дизайн, анимация, звуки и многие другие элементы, представляющие собой универсальный конструктор, из которого вы соберете собственную игру.

Не требует никакого опыта создания игр для платформы iOS. Книга покажет, как работать со средой Xcode, рисовать с помощью Quartz 2D API, обрабатывать анимацию с Core Animation и звук с помощью Core Audio.

Swift Game Programming for Absolute Beginners

Название говорит само за себя. До начала этой книги Swift можно вообще в глаза не видеть. У вас будет множество уроков по созданию четырех разных игр, от аркады до паззла (Painter, Tut’s Tomb, Penguin Pairs, Tick Tick). В «Swift Game Programming for Absolute Beginners» следуют больше за структурой игры, чем за синтаксисом языка — вы сможете изучить Swift, но в контексте именно игр. Собственно, даже с играми особое знакомство не требуется — книга учит вас, как создавать игры для iOS без какого-либо предшествующего опыта с геймплеем.

Learning Unreal Engine iOS Game Development

Игры на движке Unreal Engine выполнены в самых различных жанрах и, конечно, их адаптировали под мобильную платформу. «Learning Unreal Engine iOS Game Development» учит основам разработки оптимизированных игр под iOS с использованием движка Unreal Engine 4. Книга не фокусируется на создании контента, и показывает возможности движка для 2D-игр, чтобы продемонстрировать концепцию скриптов, которую впоследствии можно применить к созданию собственных 2D или 3D-игр. Это не всеобъемлющий справочник, но если вы хотите с чего-то начать, возьмите на заметку несколько аспектов движка UE 4, которые вы точно будете использовать в дальнейшей работе.

Beginning Swift Games Development for iOS

Книга сфокусирована на работе с игровым 2D движком SpriteKit, оптимизированным для создания игр под устройства от компании Apple. Собственно, самой Apple движок и был представлен еще в iOS 7. Вторая половина книги касается темы разработки 3D-игр с использованием фреймворка SceneKit от Apple и языка Swift.

После изучения книги вы должны получить два готовых игровых приложения… Вот только для начала не лишним окажется знание Objective-C.

Заключение

Конечно, здесь собраны далеко не все хорошие книги по мобильной разработке. У каждого человека с опытом в геймдеве найдется свой особенный «топ книг», который лично он считает наиболее оптимальным. Если у вас есть примеры хороших изданий и вы считаете их подходящими для начинающих — поделитесь ссылками в комментариях. Приветствуются и примеры хороших адаптаций на русский язык — так получилось, что в сегодняшней подборке исчезающе мало примеров с переводами.

habrahabr.ru

Разработка прибыльной Android игры двумя школьниками / Хабрахабр

В данной статье хочу рассказать вам об опыте разработки одной простенькой игры под Android, которая многократно окупилась еще на стадии разработки!

Предыстория
Мы начали заниматься разработкой игры в 10-м классе. До этого никакого опыта в разработке и продвижении мобильных игр у нас не было. Были лишь базовые знания Java и небольшой опыт создания сайтов. И все!

Идея

На дворе был декабрь 2015 года. Идея создать игру пришла абсолютно внезапно: обедая в школьной столовой во время перемены, мы непринужденно поглощали только что купленные сосиски в тесте и, как обычно, увлеченно разговаривали о смысле жизни, машинном обучении, о быстром темпе развития ИИ. Постепенно наш разговор затронул тему о разработке мобильных игр. Мы рассуждали о сложности создания популярных игр, их коммерческой выгоде и тд. И тут нас посетила дерзкая идея создания собственной игры под Android. Быстро доев свой обед, мы с огромным энтузиазмом стали это обсуждать.

Мы начали перебирать в голове все топовые на тот момент игры: такие, как Flappy Bird, Crossy Road и тд, так как захотели создать что-то похожее, что заставило бы людей «залипнуть» в нашу игру.

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

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

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

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

Нейминг

Над названием мы особо не заморачивались и придумали его в тот же день. Мой воспаленный ум выдал такое странное словосочетание: «Накачай Качка». То, что это попросту неграмотно и противоречит всем нормам русского языка мы узнали только на второй год разработки игры, но это название так нам приелось, и стало таким родным, что переделывать его уже не хотелось. Так что оставили так, как есть.

Фичи

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

Мы придумали 2 основных фичи:

1) Мы решили ввести такой игровой режим, как совместная игра с другом. Экран делится на 2 части и игрок может сразиться со своим другом в скорости «Нажатия на гантелю». Нам это показалось очень хорошей идеей, так как до этого мы такое еще нигде не встречали. Также, эта идея хороша эффектом «сарафанного радио», так как игрок, может увлечь в игру своего друга, и он также скачает себе наше приложение.

2) Второй фичей было решение ввести модель качка, мышцы которого по мере прохождения будут увеличиваться. Интерес игрока в том, чтобы узнать, что же с ним станет в конце игры, в кого же он превратится? Эта фича была призвана удерживать игрока в игре и держать приложение установленным как можно дольше на телефоне.

Дизайн

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

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

Наконец, коллегиальным решением мы выбрали понравившегося нам художника с внушительным портфолио и огромным опытом работы. Недолго думая, мы решили ему написать.

Это был очень волнительный момент. Мы думали, что это наш единственный шанс получить крутой дизайн, и мы не можем его упустить. Я крутил у себя в голове наш диалог, продумывал наше общение на пять сообщений вперед. Наконец, собравшись с силами, я отправил ему первое сообщение. Ответ не заставил себя долго ждать. Художник ответил всего через пол часа. Всего за работу он хотел не много не мало 5000-8000$…

В тот день мы столкнулись с реалиями этого мира. Таких денег у нас не было и в помине. Тот максимум, который мы могли обеспечить — была сумма примерно в 30 тысяч рублей. Это все деньги, которые мы усердным трудом накопили с завтраков.

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

Но, в конце концов, мы решили попробовать еще раз. После вторых продолжительных поисков мы нашли художницу, которая рисовала гораздо проще, в мультяшном стиле, но и цены у нее не кусались.

Мы решили, что надо брать! Всего за весь дизайн мы заплатили около 20 тыс. рублей. Это была тяжелая материальная потеря, но мы с ней справились.

Разработка всего дизайна по времени отняла приблизительно 2-3 недели. В итоге, он нам не то, чтобы очень сильно понравился, но был неплох.

Итак, дизайн был готов! Настало время разработки!

Разработка

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

Всего разработка заняла около двух лет. Игра написана на нативном Андроиде и состоит приблизительно из 20 тысяч строк кода, не включая библиотеки.

В самом начале ничего, кроме этой гантели на Activity не было. В начале разработки самым сложным стало понимание графического интерфейса, все эти layout'ы, виджеты и иже с ними… Далее по мере разработки игры мы узнавали про асинхронность в андроиде, про продвинутые виджеты, смотрели огромное количество различных библиотек и пытались разобраться, что вообще там такое написано, и как оно работает. После одного года общения с андроидом мы уже имели представление об основах разработки. Старый код постепенно переписывался, так как после подросших умений он уже казался слишком костыльным и непродуманным.

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

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

Сейчас мы поставляем сразу 5 версий приложения в Гугл Плей (4 версии с разделением ресурсов и 1 версию без разделения), что позволяет экономить у некоторых пользователей около 18 мегабайт веса.

В общем, проект, который мы планировали завершить через 3-4 месяца растянулся на такой долгий срок.

Монетизация

После того, как в игре появился хоть какой то функционал, мы начали думать о способах монетизации. Мы перепробовали много разных компаний-рекламодателей, включая StartApp, ChartBoost и тд. Но решили оставить свой выбор на Appodeal, которая показалось нам самой адекватной сетью, несмотря на большой размер SDK и необходимость использования multidex. Также очень понравилась работа поддержки, ответы были всегда оперативными и понятными.

Всего рекламы в игре довольно много: от простых маленьких баннеров на разных Activity до их полноэкранных видов. Также, в игре присутствует видео-реклама, которую пользователь может просмотреть, если захочет ускорить прохождение игры.

Сразу после внедрения рекламной сети доход от игры откровенно печалил. Он составлял не более 0,1$ в день, так как просмотров было очень мало, в связи с маленьким количеством игроков.

Со временем график очень медленно, но верно рос вверх. За пол года игра начала приносить около 1$ в день.

Все изменилось после того, как мы осознали, что у игры ужасная иконка и глупое описание. Мы решили их поменять.

Старая и новая иконки игры:

И тут доход от игры резко пошел вверх в геометрической прогрессии! Уже за первую неделю доход от игры превысил 5$ в день, а на данный момент суммарный доход от встроенной рекламы и покупок составляет немногим более 100$ в день.

Количество установок пользователей в день также резко подскочило вверх:

Ошибки

При том условии, что это был самый простейший кликер, а разработка велась очень усердно, мы поняли, свою главную ошибку: мы совершенно неправильно оценили свои силы. Я планировал закончить разработку уже через 3-4 месяца, ну, максимум через 6, а получилось так, что даже через 2 года игра не имеет всех фич, которые мы запланировали в неё ввести.

Для себя я осознал то, что если ты задумываешь сделать какой-то проект и оцениваешь время, которое уйдет на разработку, то этот результат можно смело умножать на 3, а то и на 4.

Второй ошибкой было отсутствие четкого плана действий. Разработка велась достаточно спонтанно, и многие игровые решения и фишки придумывались на ходу, многие моменты в игре переделывались. Из-за этого большое количество сил и энергии ушло в пустую. Для себя мы вынесли то, что перед разработкой игры нужно обязательно составить подробную концепцию того, что хочется увидеть в конце.

Итоги

На момент написания статьи, игра выпущена из публичной беты в релиз уже как 3 дня назад. Пока что публичных отзывов достаточно мало, и никакого особого прироста в закачках после релиза игры мы не заметили, но уже на данный момент игра попала в ТОП новых и находится на 280 месте, хотя мы еще не давали практически никакой рекламы.

По итогу, после проведения рекламной кампании, мы планируем увеличить доход в день как минимум в 2, а то и в 3 раза. Но мы уже сейчас по уши счастливы, так как даже по текущим меркам 120 тыс. рублей в месяц на двоих, пускай даже бывших школьников, очень неплохо.

С текущими перспективами мы теперь планируем создать что-то по-настоящему стоящее, что-то оригинальное и гораздо более продуманное!

habrahabr.ru

Программирование игр под Android| Техническая литература

ОглавлениеВведение 16Целевая аудитория 16Как построена эта книга 16Как получить исходные коды 17Об авторе 18О техническом редакторе 19Благодарности 20От издательства .21

Глава 1. Android: новенький в классе .22Краткая история Android .23Разделение .24Роль Google .24Android Open Source Project 25Android Market 25Соревнования, распространение устройств и Google I/O 26Возможности и архитектура Android 26Ядро 28Среда выполнения и Dalvik 28Системные библиотеки 28Фреймворк приложения .29Software Development Kit .30Сообщество разработчиков 31Устройства, устройства, устройства! .32Аппаратная составляющая .32Первое поколение, второе поколение, следующее поколение .33Игры для мобильников — особая штука 37Игровая консоль в каждом кармане 38Всегда на связи 39Простые и крутые 39Крупный рынок, мелкие разработчики .40Подводя итог 41

Глава 2. Первые шаги с Android SDK 42Настройка среды разработки 42Настройка JDK 43Настройка Android SDK 43Установка Eclipse .44Установка плагина ADT для Eclipse 45Краткий обзор среды Eclipse 47Hello World в стиле Android .49Создание проекта 49Исследование проекта .50Написание кода приложения .51Запуск и отладка приложений Android .54Подключение устройства .54Создание виртуального устройства Android .55Запуск приложения .56Отладка приложения 59LogCat и DDMS .62Использование ADB .64Подводя итог 65

Глава 3. Разработка игр 67Жанры: на любой вкус 68Казуальные игры 68Головоломки 70Аркады и активные игры .71«Защита башни» .73Что-то новенькое .74Дизайн игры: карандаш сильнее кода .75Основная механика игры .76Сюжет и оформление .78Экраны и трансформации .78Код: скучная рутина 83Управление приложением и окнами .84Ввод 84Файловый ввод-вывод .88Звук .89Графика .93Игровая среда 107Подводя итог 115

Глава 4. Android для разработчиков игр 116Определение приложения Android: файл манифеста .116Элемент .118Элемент .118Элемент .120Элемент 122Элемент .123Элемент .125Настройка проекта игры на Android за 10 простых шагов 125Назначение значка для вашей игры 127Основы Android API 128Создание тестового проекта 129Жизненный цикл активности 133Поддержка устройств ввода 140Поддержка файловой системы .157Обработка звука 163Потоковая музыка 168Основы программирования графики 172Полезные советы .197Подводя итог 198

Глава 5. Android Game Development Framework 199План атаки 199Класс AndroidFileIO 200AndroidAudio, AndroidSoundи AndroidMusic — все о звуке! .201AndroidInput и AccelerometerHandler 207AccelerometerHandler: что сверху? 207Класс Pool: используем повторно! .209KeyboardHandler: вверх, вверх, вниз, вниз, влево, вправо .211Обработчики касаний 216AndroidInput: отличный координатор .223AndroidGraphicsи AndroidPixmap: двойная радуга 226Обработка различных размеров экрана и разрешений .226AndroidPixmap: пикселы для каждого .232AndroidGraphics: то, что нужно для рисования .233AndroidFastRenderView: собрать-растянуть, собрать-растянуть 237AndroidGame: свяжем все вместе .240Подводя итог 245

Глава 6. «Мистер Ном» покоряет Android .246Создание ресурсов .246Настройка проекта .248MrNomGame: основная активность .249Ресурсы: удобное хранилище ресурсов .249Настройки: сохранение пользовательских настроеки таблицы рекордов .251LoadingScreen: получение ресурсов с накопителя .253Главное меню .255Класс(ы) HelpScreen .258Экран рекордов .260Отрисовка чисел: краткое введение 261Реализация экрана 263Абстрагирование .266Абстрагирование мира мистера Нома: модель, вид, контроллер 266Класс GameScreen 279Подводя итог .287

Глава 7. OpenGL ES: первое представление 288Что такое OpenGL ES и почему об этом стоит задуматься 288Модель разработки: аналогия 289Проекции 291Нормализованное пространство устройства и область просмотра 293Матрицы 294Конвейер визуализации .295Перед стартом .296GLSurfaceView: облегчает жизнь с 2008 года 297GLGame: реализация игрового интерфейса . .300Мама, смотри: я нарисовал красный треугольник! .308Определение области просмотра 309Определение матрицы проекции 309Определение треугольников .313Все вместе 317Определение цвета вершины .321Обработка текстур: легкая работа с фоновыми рисунками .325Координаты текстур 325Загрузка растровых изображений .327Фильтрация текстур 329Удаление текстур 330Полезный фрагмент кода .330Активация текстурирования 331Все вместе .331Класс Texture 334Индексированные вершины: используем повторно .336Все вместе .338Класс Vertices .340Альфа-смешивание: я вижу тебя насквозь 343Другие примитивы: точки, линии, полоски и конусы .3472D-преобразования: матрица «Модель — представление» 349Пространство мира и модели .349Снова матрицы 351Первый пример с использованием переноса .352Другие преобразования .357Оптимизация производительности 361Измерение частоты кадров 361Любопытный случай с Hero на Android 1.5 363Почему OpenGL ES-рендеринг такой медленный? .363Убираем ненужные изменения состояний .365Уменьшение размера текстуры — выбираем меньше пикселов .367Уменьшаем количество вызовов методов OpenGL ES/JNI .368Концепция связывания вершин .369В заключение .372Подводя итог .373

Глава 8. Трюки при разработке 2D-игр 375Перед стартом 375Сначала был вектор 376Работа с векторами 377Немного тригонометрии .379Реализация класса Vector .381Простой пример использования .385Немного 2D-физики 390Ньютон и Эйлер — друзья навек .390Сила и масса .392Манипулируем теоретически .392Манипулируем на практике .393Определение столкновений и представление объектов в 2D .398Ограничивающие фигуры .398Создание ограничивающих фигур .401Атрибуты игровых объектов .404Широкая и узкая фазы определения столкновений .405Усложненный пример .412Камера в 2D 426Класс Camera2D .430Пример 431Атлас текстур: не ленись — поделись .433Фрагменты текстур, спрайты и пакеты: скрываем OpenGL ES .439Класс TextureRegion .440Класс SpriteBatcher .441Используем класс SpriteBatcher .447Спрайт-анимация .451Класс Animation .452Пример .453Подводя итог .457

Глава 9. «Большой прыгун»: двухмерная игра, написанная с помощью OpenGL ES .458Основная игровая механика .458Предыстория и стиль 460Экраны и переходы .460Определение игрового мира .462Создание ресурсов .465Элементы пользовательского интерфейса .465Обработка текста с помощью растровых шрифтов .467Элементы игры 470Атлас текстур спешит на помощь 472Музыка и звук 473Реализация «Большого прыгуна» 473Класс Assets 473Класс Settings .477Основная активность .478Класс Font 479Экран GL .481Экран главного меню 482Экраны помощи .485Экран лучших результатов .488Классы эмуляции игрового мира .491Игровой экран .508Класс WorldRenderer .516Оптимизировать или не оптимизировать? 520Подводя итог 521

Глава 10. Open GL ES: займемся 3D 522Перед стартом .522Вершины в 3D .523Vertices3: сохраняем 3D-координаты .523Пример .526Перспективная проекция: ближе, больше .529Z-буфер: наводим порядок .532Исправляем последний пример .533Смешиваем: за вами ничего нет 535Точность z-буфера и z-схватка .538Определяем 3D-ячейки .540Куб: Hello World в 3D .540Пример .543Снова матрицы и преобразования .547Матричный стек .547Иерархическая структура матричного стека .550Простая система камер .557Подводя итог 562Глава 11. Трюки при разработке 3D-игр 563Перед стартом .563Векторы в 3D .564Освещение в OpenGL ES .569Как работает освещение .569Источники освещения .571Материалы .572Как OpenGL ESрассчитывает освещение: нормали вершин .573На практике .574Несколько примечаний к освещению в OpenGL ES .589Mip-текстурирование .590Простые камеры .595Камера с видом от первого лица (Эйлерова камера) .595Пример работы с Эйлеровой камерой .599Камера с видом от третьего лица .605Загрузка моделей 607Формат Wavefront OBJ .608Реализация загрузчика файлов формата OBJ 609Использование класса OBJ Loader .614Несколько замечаний по загрузке моделей 615Немного физики в 3D 615Определение столкновений и представление объектов в 3D 616Ограничивающие фигуры в 3D .617Проверка пересечения ограничивающих сфер .617Классы GameObject3Dи DynamicGameObject3D 619Подводя итог .620

Глава 12. Droid Invaders: большой финал .622Основы игровой механики .622Сюжет и художественное оформление 624Экраны и переходы .624Определение игрового мира .626Создание ресурсов .627Активы пользовательского интерфейса .627Игровые ресурсы .629Звук и музыка .631План разработки .631Класс Assets .631Класс Settings .635Основная активность .636Экран главного меню .637Экран настроек .640Классы эмуляции .643Класс Shield .644Класс Shot .644Класс Ship .645Класс Invader .647Класс World .651Класс GameScreen .657Класс WorldRenderer .665Оптимизация .671Подводя итог 672

Глава 13. Публикуем вашу игру .673Несколько слов о тестировании .673Становимся зарегистрированным разработчиком 674Подписываем APK-файл вашей игры 675Размещение игры на Android Market .679Загрузка ресурсов .680Описание деталей .680Настройки публикации .681Публикуем! .681Маркетинг 682Консоль разработчика 682Подводя итог .683

Глава 14. Что дальше? .684Становимся социальными 684Определение местоположения 684Многопользовательская функциональность .685OpenGL ES 2.0 и выше .685Фреймворки и движки .685Ресурсы в сети Интернет .687Завершающие слова 687

Глава из книги:

Фреймворки и движкиЕсли вы приобрели эту книгу, уже имея какие-то знания касательно разработки игр, вы можете задаться вопросом, почему я не выбрал один из доступных фреймворков, предназначенных для разработки игр для ОС Android. Изобретать колесо заново — это плохо, не так ли? Я хотел, чтобы вы четко усвоили принципы. Хотя это иногда может быть неудобно, в итоге это окупится.

Благодаря приобретенным здесь знаниям вы сможете с легкостью выбрать любое готовое решение, я надеюсь, что вы сможете определить, какие преимущества оно вам дает. Что дальше? Для платформы Androidсуществует несколько коммерческих и открытых фреймворков и движков. В чем разница между фреймворком и движком? Фреймворк позволяет вам контролировать каждый аспект вашей среды разработки игр. Правда, вам самим придется разбираться, как именно решить ту или иную задачу (например, как организовать ваш игровой мир, как обрабатывать эк-раны и переходы и т. д.).

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

Движки могут значительно сократить время разработки, но могут и увеличить его в том случае, если вы встретите проблему, которая не была предусмотрена его создателями. Выбирайте между фреймворком и движком, основываясь на персональных предпочтениях, бюджете и целях. Как независимый разработчик, я предпочитаю фреймворки, поскольку они обычно проще для понимания и позволяют мне по-ступать так, как мне хочется.Выбирайте собственный идеал.Далее приведен список фреймворков и движков, которые могут ускорить процесс разработки.

Unreal Development Kit (www.udk.com) — коммерческий игровой движок, работающий на многих платформах. Он был разработан компанией Epic Games, создателем игры Unreal Tournament. Это говорит о том, что движок довольно качественный. Он использует собственный скриптовый язык.

Unity (www.unity3d.com) — еще один коммерческий игровой движок, имеющий отличные инструменты и функциональность. Он тоже работает на множестве платформ, включая iOS и Android, а также браузеры, и прост в освоении. Он позволяет использовать множество языков для программирования игровой логики, но Java им не поддерживается.

PCT-AE (www.jpct.net/jpct-ae/) — портированная на Android версия движкаPCT, основанного на Java. У него есть несколько отличных особенностей, помогающих в трехмерном программировании. Он работает как со стационарны-ми компьютерами, так и на Android. Его исходный код закрыт.

Ardor3D (www.ardor3d.com) — очень мощный движок для трехмерного программирования, основанный на Java. Работает как для Android, так и для стационарных компьютеров, имеет открытый исходный код и отличную документацию.

libgdx (code.google.com/p/libgdx/) — открытый фреймворк вашего покорного слуги, основанный на Java и пригодный для написания 2D- и 3D-игр. Работает на Windows, Linux, Mac OS X и, конечно же, на Android без модификаций кода. Вы можете разработать и протестировать приложение на стационарном компьютере без необходимости иметь под рукой устройство или медленный эмулятор (или ожидать минуту, пока АРК-файл загрузится на устройство).Возможно, после прочтения этой книги он понравится вам больше всего — в этом и заключался мой коварный план. Заметили ли вы, что этот пункт лишь немного больше, чем другие?

Slick-AE (http://slick.cokeandcode.com) — портированная на Android версия фреймворка Slick, основанного на Java, построенная над libgdx.Он предоставляет множество различной функциональности и простой в использовании API для разработки 2D-игр. Конечно же, он кроссплатформенный и открытый.

AndEngine (www.andengine.org) — приятный, основанный на Java, предназначенный только для ОС Android двухмерный движок, который частично основан на коде libgdx (он является открытым). Его концепции похожи на концепции знаменитого движка cocos2d, предназначенного для разработки игр для iOS.

www.htbook.ru


Смотрите также