Разное

Программирование игр под android цехнер марио: Книга: «Программирование игр под Android» — Марио Цехнер. Купить книгу, читать рецензии | Beginning Android Games | ISBN 978-5-459-01554-6

Программирование игр под 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

Программирование игр под Android —

Поделиться

Марио Цехнер «Программирование игр под Android», Питер, 2013 год, 688 стр., (8,97 мб, pdf)

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

В книге собраны материалы необходимые для разработки игр под Android.Узнаете как настроить среду разработки ( Android SDK) с использованием Eclipse ( свободная интегрированная среда разработки модульных кроссплатформенных приложений) и Android Development Tools, в книге описан порядок установки, настройки и отладки. Краткий обзор и настройка среды Eclipse.

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

Оглавление книги

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

Глава 1. Android: новенький в классе .22
Краткая история Android . 23
Разделение .24
Роль Google .24
Android Open Source Project 25
Android Market 25
Соревнования, распространение устройств и Google I/O 26
Возможности и архитектура Android 26
Ядро 28
Среда выполнения и Dalvik 28
Системные библиотеки 28
Фреймворк приложения .29
Software 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 47
Hello World в стиле Android .49
Создание проекта 49
Исследование проекта . 50
Написание кода приложения .51
Запуск и отладка приложений Android .54
Подключение устройства .54
Создание виртуального устройства Android .55
Запуск приложения .56
Отладка приложения 59
LogCat и 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 200
AndroidAudio, AndroidSoundи AndroidMusic — все о звуке! .201
AndroidInput и AccelerometerHandler 207
AccelerometerHandler: что сверху? 207
Класс Pool: используем повторно! .209
KeyboardHandler: вверх, вверх, вниз, вниз, влево, вправо .211
Обработчики касаний 216
AndroidInput: отличный координатор .223
AndroidGraphicsи AndroidPixmap: двойная радуга 226
Обработка различных размеров экрана и разрешений .226
AndroidPixmap: пикселы для каждого . 232
AndroidGraphics: то, что нужно для рисования .233
AndroidFastRenderView: собрать-растянуть, собрать-растянуть 237
AndroidGame: свяжем все вместе .240
Подводя итог 245

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

Глава 7. OpenGL ES: первое представление 288
Что такое OpenGL ES и почему об этом стоит задуматься 288
Модель разработки: аналогия 289
Проекции 291
Нормализованное пространство устройства и область просмотра 293
Матрицы 294
Конвейер визуализации . 295
Перед стартом .296
GLSurfaceView: облегчает жизнь с 2008 года 297
GLGame: реализация игрового интерфейса . .300
Мама, смотри: я нарисовал красный треугольник! .308
Определение области просмотра 309
Определение матрицы проекции 309
Определение треугольников .313
Все вместе 317
Определение цвета вершины .321
Обработка текстур: легкая работа с фоновыми рисунками .325
Координаты текстур 325
Загрузка растровых изображений .327
Фильтрация текстур 329
Удаление текстур 330
Полезный фрагмент кода .330
Активация текстурирования 331
Все вместе .331
Класс Texture 334
Индексированные вершины: используем повторно .336
Все вместе .338
Класс Vertices .340
Альфа-смешивание: я вижу тебя насквозь 343
Другие примитивы: точки, линии, полоски и конусы .347
2D-преобразования: матрица «Модель — представление» 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 .523
Vertices3: сохраняем 3D-координаты .523
Пример .526
Перспективная проекция: ближе, больше .529
Z-буфер: наводим порядок .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 .589
Mip-текстурирование .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
Многопользовательская функциональность . 685
OpenGL 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.

СкачатьPDF

 

Программирование игр под Android. Видео

Похожая литература

458

https://www.htbook.ru/kompjutery_i_seti/programmirovanie/programmirovanie_igr_pod_androidПрограммирование игр под Androidhttps://www.htbook.ru/wp-content/uploads/2014/11/074.jpg

https://www. htbook.ru/wp-content/uploads/2014/11/074.jpg

Программирование и БДAndroid,Программирование,руководствоЦель данной книги научить вас создавать полноценные игры для платформы Android. Марио Цехнер ‘Программирование игр под Android’, Питер, 2013 год, 688 стр., (8,97 мб, pdf) Программирование игр под Android одно из самых увлекательных, а зачастую и доходных направлений в разработке мобильных приложений. В книге собраны материалы необходимые для разработки игр под Android.Узнаете как настроить среду…YakovLukich [email protected]Техническая литература


Поделиться

libGDX

libGDX — это кроссплатформенная среда разработки игр Java на основе OpenGL (ES), которая работает в Windows, Linux, macOS, Android, вашем браузере и iOS.

Начать

Фото предоставлено: Delver от Priority Interrupt

libGDX предоставляет проверенную и надежную среду для быстрого прототипирования и быстрых итераций.

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

Звездная вилка

  • Путь
    от Robotality

  • Остаток
    от Orangepixel

  • Космическая гавань
    от Bugbyte Ltd.

  • Delver
    с помощью приоритетного прерывания

  • Transfinite Dungeon

    от icefill

  • Forsaken Portals
    от Pottgames

Перейдите в наш раздел витрин, чтобы увидеть некоторые игры!

Показать еще

Кроссплатформенность

Публикуйте свои игры на Windows, macOS, Linux (включая RPi!), Android, iOS и HTML5, используя один и тот же код.

Открытый исходный код

libGDX распространяется под лицензией Apache 2.0 и поддерживается сообществом. Внесите свой вклад сегодня!

Feature Packed

libGDX поставляется с включенными батареями. Пишите 2D- или 3D-игры, а libGDX позаботится о низкоуровневых деталях.

Super Fast

Особое внимание уделяется предотвращению сборки мусора для ART/JavaScript за счет тщательного проектирования API и использования пользовательских коллекций.

Хорошо зарекомендовавшая себя

libGDX — это хорошо зарекомендовавшая себя и надежная среда с надежной базой и документацией. Кроме того, существует множество игр, созданных на основе libGDX, многие из которых имеют открытый исходный код.

Активное сообщество

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


libGDX 1.11.0

Мы с гордостью представляем новый основной выпуск libGDX: версию 1. 11.0!

См. полный журнал изменений

Сообщество libGDX

libGDX имеет очень активное сообщество на различных платформах, включая Discord, Reddit и Stack Overflow. Если вы ищете место для начала, наш сервер Discord, безусловно, является подходящим местом.

Узнать больше

Game Jams

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

Подробнее